0

我遇到了一个非常奇怪的问题。我无法修复它,因为这似乎不是一个错误。这里发生了其他事情,我无法检测到。

我有以下 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”,它就可以工作。为什么会这样?

4

0 回答 0