PayPal API:购物车项目金额总额与订单金额不匹配


PayPal API: The totals of the cart item amounts do not match order amounts

有很多关于这个错误的帖子,但它们都不适用于我。我真的不明白为什么金额不匹配。我有ITEMAMT,它匹配AMT0*QTY0。AMT与ITEMAMT+SHIPPINGAMT相匹配。我一遍又一遍地检查了文档,它真的应该这样工作。当我完全取消运输时,它就起作用了…

结账url中的AMT也是73.9。

我真的希望有人熟悉这个令人困惑的错误,知道我做错了什么。。。

提前感谢

Array
(
    [TIMESTAMP] => 2013-01-24T22:56:09Z
    [CORRELATIONID] =>
    [ACK] => Failure
    [VERSION] => 62.0
    [BUILD] => 4181146
    [L_ERRORCODE0] => 10413
    [L_SHORTMESSAGE0] => Transaction refused because of an invalid argument. See additional error messages for details.
    [L_LONGMESSAGE0] => The totals of the cart item amounts do not match order amounts.
    [L_SEVERITYCODE0] => Error
)
Array
(
    [PAYMENTREQUEST_0_PAYMENTACTION] => Sale
    [L_PAYMENTREQUEST_0_NAME0] => XXXX
    [L_PAYMENTREQUEST_0_NUMBER0] => 30533
    [L_PAYMENTREQUEST_0_DESC0] => XXXX
    [L_PAYMENTREQUEST_0_AMT0] => 30.95
    [L_PAYMENTREQUEST_0_QTY0] => 2
    [PAYMENTREQUEST_0_ITEMAMT] => 61.9
    [PAYMENTREQUEST_0_TAXAMT] => 0
    [PAYMENTREQUEST_0_SHIPPINGAMT] => 12
    [PAYMENTREQUEST_0_INSURANCEAMT] => 0
    [PAYMENTREQUEST_0_AMT] => 73.9
    [PAYMENTREQUEST_0_CURRENCYCODE] => USD
    [REQCONFIRMSHIPPING] => 1
    [PAYMENTREQUEST_0_SHIPTOSTREET] => XXXX
    [PAYMENTREQUEST_0_SHIPTOCITY] => XXXX
    [PAYMENTREQUEST_0_SHIPTOSTATE] => XX
    [PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE] => XX
    [PAYMENTREQUEST_0_SHIPTOZIP] => XXXXXX
    [PAYMENTREQUEST_0_SHIPTOPHONENUM] => XXXXXXXX
)

必须发送小数点后两位的货币。您似乎只提供了1。

$amt = 61.9;
$amt = sprintf("%.2f",$amt); // 61.90

Paypal将返回此错误,因为金额的格式不正确:

查看AMT行下的Table A.2

http://www.paypalobjects.com/en_US/ebook/PP_NVPAPI_DeveloperGuide/Appx_fieldreference.html

此规则应在每次设置"money"参数时应用。

我的问题的答案可能对路过的大多数人没有帮助;在描述(L_PAYMENTREQUEST_0_DESC0(中。'&'对通过CURL传递的数据进行转义。这就造成了这个错误(这是完全错误的(。请记住,当你输入任何包含&当URL被编码时,例如é将变为é

我很抱歉从我的第一篇帖子中删除了商品描述,但我不知道这与它有关,因为关于金额的错误消息。

几天前我在尝试沟通时也遇到了同样的问题,然后只有我意识到这些订单总数并不匹配,有一些小数点后几位。如果你尝试用一些整数进行通信,比如50,作为项目amt和total(没有任何进动(,那么它不会给出任何错误。我也打破了我的头,虽然贝宝有一些问题。(但实际上我是(所以你最好检查一下计算结果,注意贝宝只接受2个进动或小数位数的金额。我同意塞缪尔所说的话。

即使是运费,你最好将其发送为12.00,而不是12和其他数字,如61.90、73.90…