变量未传递小数位,导致Moneris(支付系统)出现问题

时间:2013-06-18 16:49:13

标签: php html forms

我正在尝试设置一个Moneris托管的付费页面,人们用信用卡在线付款。我一直在与Moneris有一些问题,联系他们的支持并告诉我,我得到的错误是由于我的“总金额”的交易没有任何小数位,因此打破了支付系统。

这是我设置值的地方(如果他们选择此单选按钮,则值为1.00)

<label class="radio" for="full_registration-4">
    <input type="radio" name="full_registration" id="full_registration-4" value="1.00">
      Test payment - $1
</label>

然后,此表单将其信息传递给不同的验证页面,这就是我检索变量的方式:

$CHARGE_TOTAL = (is_numeric($_POST['full_registration']) ? (float)$_POST['full_registration'] : 395);

然后,我有一个隐藏的自动验证表单,它传递了Moneris所需的所有信息(即;存储ID,描述,项目等)。

<INPUT id="total_amount" TYPE="HIDDEN" NAME="charge_total" VALUE="<?php echo $CHARGE_TOTAL; ?>">

初始形式的变量是1.00,但它在Moneris中没有显示出来,显然它应该。我已经联系了他们的支持,他们向我保证这与我的代码有关。

我已经尝试将变量作为双精度并获得相同的结果。我无法弄清楚价值如何或为何被改变

1 个答案:

答案 0 :(得分:1)

您应该阅读这篇文章PHP: show a number to 2 decimal places

将输入更改为

<input
    id="total_amount" type="hidden" name="charge_total" 
    value="<?php echo number_format((float)$CHARGE_TOTAL, 2, '.', ''); ?>"
/>