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

2022-08-31 00:50:26

我正在使用PayPal快速结账 API,但在设置数量时遇到问题。以下是我的 URI 参数:

$params = array(
   'METHOD' => 'SetExpressCheckout',
   'PAYMENTREQUEST_0_SHIPPINGAMT' => '0',
   'PAYMENTREQUEST_0_TAXAMT' => '0',
   'PAYMENTREQUEST_0_HANDLINGAMT' => '0',
   'PAYMENTREQUEST_0_AMT' => "50.00",
   'RETURNURL' => $this->_returnUri,
   'CANCELURL' => $this->_cancelUri,
   'HDRIMG' => $this->_logoUri,
   'PAYMENTREQUEST_0_CURRENCYCODE' => 'GBP',
   'L_PAYMENTREQUEST_0_DESC0' => 'Product description',
   'L_PAYMENTREQUEST_0_NAME0' => 'Product name',
   'L_PAYMENTREQUEST_0_AMT0' => "50.00",
   'L_PAYMENTREQUEST_0_QTY0' => "2"
);

如果L_PAYMENTREQUEST_0_QTY0设置为 1,则该过程正常。但是,将其更改为2并将“PAYMENTREQUEST_0_ITEMAMT”=>“100.00”添加到数组中会给我带来以下错误:

TIMESTAMP: 2012-04-17T12:11:16Z
CORRELATIONID: da43f6c91254
ACK: Failure
VERSION: 88.0
BUILD: 2808426
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

我已经尝试了几个小时来修复它,但已经放弃了。有人可以强调我需要做的想要让它工作吗?


答案 1

您缺少 .另请参阅我在PayPal快速结帐中的答案,其中包含运费和错误,其中包含多个数量的工作示例。ITEMAMT

&L_PAYMENTREQUEST_0_NAME0=10% Decaf Kona Blend Coffee  
&L_PAYMENTREQUEST_0_NUMBER0=623083  
&L_PAYMENTREQUEST_0_DESC0=Size: 8.8-oz 
&L_PAYMENTREQUEST_0_AMT0=9.95  
&L_PAYMENTREQUEST_0_QTY0=2  
&L_PAYMENTREQUEST_0_NAME1=Coffee Filter bags  
&L_PAYMENTREQUEST_0_NUMBER1=623084  
&L_PAYMENTREQUEST_0_DESC1=Size: Two 24-piece boxes  
&L_PAYMENTREQUEST_0_AMT1=39.70  
&L_PAYMENTREQUEST_0_QTY1=2  
&PAYMENTREQUEST_0_ITEMAMT=99.30  
&PAYMENTREQUEST_0_TAXAMT=2.58  
&PAYMENTREQUEST_0_SHIPPINGAMT=3.00  
&PAYMENTREQUEST_0_HANDLINGAMT=2.99  
&PAYMENTREQUEST_0_SHIPDISCAMT=-3.00  
&PAYMENTREQUEST_0_INSURANCEAMT=1.00  
&PAYMENTREQUEST_0_AMT=105.87  
&PAYMENTREQUEST_0_CURRENCYCODE=USD  

答案 2

与问题没有直接关系,但是由于在Google中首先出现错误消息时,这对于收到此错误的其他人可能很有用。

如果未设置某些字段(空/空),则可能会收到此错误。

例如,在我的情况下,它是(为了清楚起见,添加了换行符):

    PAYMENTREQUEST_0_PAYMENTACTION=Sale
    &REQCONFIRMSHIPPING=0
    &RETURNURL=some_url
    &CANCELURL=some_other_url
    &BRANDNAME=Brand
    &L_PAYMENTREQUEST_0_NAME0=
    &L_PAYMENTREQUEST_0_AMT0=1.00
    &L_PAYMENTREQUEST_0_QTY0=1
    &PAYMENTREQUEST_0_AMT=1.00
    &PAYMENTREQUEST_0_CURRENCYCODE=USD

它给了我同样的错误,即使数量很好。我认为这是一个解析问题,因为如果你在L_PAYMENTREQUEST_0_NAME0=之后插入一个空格

&L_PAYMENTREQUEST_0_NAME0=&L_PAYMENTREQUEST_0_AMT0=1.00

它工作正常。

所以我的猜测是,在PayPal结束时,它只是将“&L_PAYMENTREQUEST_0_AMT0=1.00”分配给L_PAYMENTREQUEST_0_NAME0,从而有效地将其从消息中删除,从而触发此错误,因为没有该行,金额确实不会加起来。


推荐