【问题标题】:SagePay XML basketSagePay XML 购物篮
【发布时间】:2014-09-22 06:49:21
【问题描述】:

对于任何了解 sagepay 或能发现我无法发现的东西的人来说,这是一个快速的方法。

我有两个篮子要发送到 sagepay:

这行得通:

<basket>
<agentId>vendor1</agentId> 
    <item>
        <description>Selling premier package</description>
        <quantity>1</quantity>
        <unitNetAmount>595</unitNetAmount>
        <unitTaxAmount>119.00</unitTaxAmount>
        <unitGrossAmount>714.00</unitGrossAmount>
        <totalGrossAmount>714.00</totalGrossAmount>
    </item>
</basket>

返回“状态详细信息:3021:篮子格式无效”。错误?

<basket>
<agentId>vendor1</agentId> 
    <item>
        <description>Selling premier package</description>
        <quantity>1</quantity>
        <unitNetAmount>894</unitNetAmount>
        <unitTaxAmount>178.80</unitTaxAmount>
        <unitGrossAmount>1,072.80</unitGrossAmount>
        <totalGrossAmount>1,072.80</totalGrossAmount>
    </item>
</basket>

任何人都可以找出原因吗? :S

谢谢

【问题讨论】:

  • 已修复,抱歉是逗号,我必须以这种方式对其进行数字格式化:number_format($number, 2, '.', '');。谢谢。

标签: php opayo


【解决方案1】:

我将尝试扩展 Nathan 的问题/评论/答案,因为我刚刚遇到了同样的问题。

在尝试实现 SagePay 的服务器集成方法时,我认为最好的起点是他们的 PHP 演示源代码,我怀疑 Nathan 就是这样做的。其中包含许多用于构建购物篮并通过其 API 联系 SagePay 的类。不幸的是,BastketXML 的导出方式似乎存在根本缺陷,导致 Nathan 上面描述的内容。

在 /lib/classes/item.php 中,您会在第 615 行找到:

if (is_float($value))
{
    $node = $basket->createElement($name, number_format($value, 2));
}

这依赖于本地环境变量来正确格式化数字,而 SagePay 需要的是:

if (is_float($value))
{
    $node = $basket->createElement($name, number_format($value, 2, '.', ''));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    相关资源
    最近更新 更多