【发布时间】:2019-09-11 20:35:04
【问题描述】:
对于在线支付,我必须将参数发送到 URL。我的网站中的计算是用 Javascript 编写的,在线支付公司需要 PHP 参数,如 MD5 哈希。
我尝试创建隐藏表单并将所需的 javascript 值放入输入字段。并且成功了。
我的隐藏表格:
<form action="https://test.millikart.az:7444/gateway/payment/register" method="get" id="hiddenForm">
<input name="mid" value="unicopy" type="hidden">
<input name="amount" id="amount" value="" type="hidden">
<input name="currency" value="944" type="hidden">
<input name="description" value="" id="description" type="hidden">
<input name="reference" value="UNICSH3195319" type="hidden">
<input name="language" value="az" type="hidden">
<input name="signature" value="<?php echo htmlspecialchars($signature); ?>" type="hidden">
<button type="button" class="btn btn-secondary" data-dismiss="modal" onClick="clearList()" >Reset</button>
<button class="btn btn-primary" id="odenis" >Pay</button>
</form>
<script>
document.getElementById("amount").value= parseInt(yekunMeblegArray.reduce(myFunc));
document.getElementById("description").value= description;
//AJAX
$.ajax({
type: 'POST',
url: "index.php",
data: $("#hiddenForm").serialize(),
success: function(response) {
alert("succeed")},
});
</script>
但在发送 URL 之前,我必须使用 PHP 准备 $signature,其中应包含来自 javascript 的值
我的 PHP:
<?php
$mid="unicopy";
$amount=$_POST['amount'];
$currency="944";
$description=$_POST['desc'];
$reference="UNICSH3195319";
$language="az";
$key="123456qwerty";
$signature=strtoupper(md5(strlen($mid).$mid.strlen($amount).$amount.strlen($currency).$currency.(!empty($description)? strlen($description).$description :"0").strlen($reference).$reference.strlen($language).$language.$key));
?>
如您所见,$signature 包含 $amount 和 $description 变量,它们应该从 javascript 中获取其值。我尝试使用 AJAX 发送表单数据,但未能成功。我怎样才能做到这一点?任何形式的帮助表示赞赏。
【问题讨论】:
-
ajax 在哪里?
-
@mplungjan 编辑了我的问题并添加了 AJAX
-
我也尝试使用 AJAX 仅发送两个值(数量和描述),但仍然无法成功
-
你没有对 ajax 响应做任何事情,你没有错误函数来查看它是否失败
-
您是否检查了电话的回复?如果您收到没有错误的响应,请尝试 var_dump($_POST) 以查看值是否已传递到服务器端。
标签: javascript php ajax