我遇到了一个非常奇怪的问题。我无法修复它,因为这似乎不是一个错误。这里发生了其他事情,我无法检测到。
我有以下 PayU Bolt Form 代码:
PHP
$key = "xxxxxxxxxxx";
$salt = "xxxxxxxxxxx";
$txnid = "XXXX-TXNID-" . rand(10000,99999999);
$amount = number_format($smp['monthly_cost']*$user['rate']*6, 2, '.', '');
$pinfo = "XXXXX 6 Months Gold Membership";
$fname = "Shubham";
$email = "jhajinamaste@gmail.com";
$phone = XXXXXXXXXX;
$udf5 = "BOLT_KIT_PHP7";
$hash = hash('sha512', $key.'|'.$txnid.'|'.$amount.'|'.$pinfo.'|'.$fname.'|'.$email.'|||||'.$udf5.'||||||'.$salt);
HTML
<form class="boltForm w-100">
<input type="hidden" id="udf5" name="udf5" value="<?php echo $udf5; ?>" />
<input type="hidden" id="surl" name="surl" value="<?php echo getCallbackUrl(); ?>" />
<input type="hidden" id="key" name="key" placeholder="Merchant Key" value="<?php echo $key; ?>" />
<input type="hidden" id="salt" name="salt" placeholder="Merchant Salt" value="<?php echo $salt; ?>" />
<input type="hidden" id="txnid" name="txnid" placeholder="Transaction ID" value="<?php echo $txnid; ?>" />
<input type="text" id="amount" class="boltFinalAmount" name="amount" placeholder="Amount" value="<?php echo $amount; ?>" />
<input type="hidden" id="pinfo" class="boltProductInfo" name="pinfo" placeholder="Product Info" value="<?php echo $pinfo; ?>" />
<input type="hidden" id="fname" name="fname" placeholder="First Name" value="<?php echo $fname; ?>" />
<input type="hidden" id="email" name="email" placeholder="Email ID" value="<?php echo $email; ?>" />
<input type="hidden" id="phone" name="phone" placeholder="Phone" value="<?php echo $phone; ?>" />
<input type="hidden" id="hash" class="theBoltHash" name="hash" placeholder="Hash" value="<?php echo $hash; ?>" />
<button type="submit" class="btn bolt-action btn-lg w-100 text-white">Continue</button>
</form>
JS
$(document).ready(function() {
// THIS FUNCTION CALCULATES AND RETURNS HASH FROM bolt.php
$('.bolt-action').on('click', function(e){
e.preventDefault();
var form = $(this).closest(".boltForm");
var dataString = form.serialize();
$.ajax({
url: 'processes/bolt.php',
type: 'POST',
data: dataString,
success: function(data){
$(".theBoltHash").val(data);
launchBOLT(); // AFTER THE HASH IS CALCULATED AND RETURNED BACK TO THE FORM THE BOLT IS LAUNCHED
}
});
});
});
function launchBOLT() {
bolt.launch({
key: $('#key').val(),
txnid: $('#txnid').val(),
hash: $('#hash').val(),
amount: $('#amount').html(),
firstname: $('#fname').val(),
email: $('#email').val(),
phone: $('#phone').val(), // THIS IS NOT CAPTURING THE AMOUNT. IT RETURNS 0.00
productinfo: $('#pinfo').val(),
udf5: $('#udf5').val(),
surl : $('#surl').val(),
furl: $('#surl').val(),
mode: 'dropout'
},
{
responseHandler: function(BOLT){
console.log(BOLT.response.txnStatus);
if(BOLT.response.txnStatus != 'CANCEL'){
//Salt is passd here for demo purpose only. For practical use keep salt at server side only.
var fr = '<form action=\"'+$('#surl').val()+'\" method=\"post\">' +
'<input type=\"hidden\" name=\"key\" value=\"'+BOLT.response.key+'\" />' +
'<input type=\"hidden\" name=\"salt\" value=\"'+$('#salt').val()+'\" />' +
'<input type=\"hidden\" name=\"txnid\" value=\"'+BOLT.response.txnid+'\" />' +
'<input type=\"hidden\" name=\"amount\" value=\"'+BOLT.response.amount+'\" />' +
'<input type=\"hidden\" name=\"productinfo\" value=\"'+BOLT.response.productinfo+'\" />' +
'<input type=\"hidden\" name=\"firstname\" value=\"'+BOLT.response.firstname+'\" />' +
'<input type=\"hidden\" name=\"email\" value=\"'+BOLT.response.email+'\" />' +
'<input type=\"hidden\" name=\"udf5\" value=\"'+BOLT.response.udf5+'\" />' +
'<input type=\"hidden\" name=\"mihpayid\" value=\"'+BOLT.response.mihpayid+'\" />' +
'<input type=\"hidden\" name=\"status\" value=\"'+BOLT.response.status+'\" />' +
'<input type=\"hidden\" name=\"hash\" value=\"'+BOLT.response.hash+'\" />' +
'</form>';
var form = jQuery(fr);
jQuery('body').append(form);
form.submit();
}
},
catchException: function(BOLT){
alert(BOLT.message);
}
});
}
发生的问题是,在您可以看到的上述 PHP 代码中$amount = number_format($smp['monthly_cost']*$user['rate']*6, 2, '.', '');
,这不适用于表单。当我将其更改为$amount = 112.40
有效时。我已经尝试过多次,但是当我尝试从数据库中获取数据时,它返回错误“发生了一些问题”。但是,当我手动输入金额时效果很好。数据库中的值很好地返回了金额。没有任何问题。例如,它返回“110.25”,但这不起作用。如果我手动输入“110.25”,它就可以工作。为什么会这样?