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

时间:2013-01-24 23:04:41

标签: php api paypal

有很多关于此错误的帖子,但它们都不适用于我。我真的不明白为什么金额不匹配。我有与AMT0 * QTY0匹配的ITEMAMT。 AMT与ITEMAMT + SHIPPINGAMT相匹配。我一遍又一遍地检查了文档,它确实应该以这种方式工作。它完全取消了它的运输...

结帐网址中的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
)

3 个答案:

答案 0 :(得分:4)

您必须发送2位小数的货币。您似乎只提供1。

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

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

查看Table A.2行下的AMT

  

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

每次设置'money'参数时,都应该应用此规则。

答案 1 :(得分:2)

我的问题的答案对你们大多数人来说可能没有帮助。但是我的一件商品包含了&在描述中(L_PAYMENTREQUEST_0_DESC0)。 '&安培;'转义了使用CURL传递的数据。这造成了错误(完全关闭)。请记住,当您输入任何包含&的字符时,也会发生这种情况。当URL被编码时,例如é将成为é

我为从第一篇文章中删除项目描述道歉,但由于有关金额的错误消息,我不知道这与它有关。

答案 2 :(得分:0)

我几天前在尝试沟通时也遇到了同样的问题,然后我才意识到这些订单总数并不真正匹配,只有一些小数位。如果您尝试与50之类的整数进行通信,作为项目amt和total(没有任何进动)那么它将不会给出任何错误。我也打破了我的头,虽然paypal有一些问题。 (但我真的是) 因此,您最好检查计算结果并注意,PayPal将接受最多只有2个进动或小数位的金额。我同意塞缪尔所说的话。

即使是运费金额,您最好将它们发送为12.00而不是12和其他数字,如61.90,73.90 ......