我正在尝试设置一个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中没有显示出来,显然它应该。我已经联系了他们的支持,他们向我保证这与我的代码有关。
我已经尝试将变量作为双精度并获得相同的结果。我无法弄清楚价值如何或为何被改变
答案 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, '.', ''); ?>"
/>