【问题标题】:Variable not passing with decimal places, causing issues with Moneris (Payment System)变量不带小数位传递,导致 Moneris(支付系统)出现问题
【发布时间】:2013-06-18 16:49:12
【问题描述】:

我正在尝试设置 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 中并没有以这种方式显示,而且显然应该如此。我已经联系了他们的支持,他们向我保证这与我的代码有关。

我也尝试将变量作为双精度变量,结果相同。我不知道值是如何或为什么被改变的

【问题讨论】:

  • 那他们怎么看?作为一个整数?

标签: php html forms


【解决方案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, '.', ''); ?>"
/>

【讨论】:

    猜你喜欢
    • 2023-02-09
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 2018-03-19
    • 2011-04-25
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    相关资源
    最近更新 更多