Paypal итоговые суммы товаров в корзине не соответствуют суммам заказов с использованием nvp с экспресс-оформлением заказа


Это то, что я отправил в PayPal с помощью nvp и express_checkout, но это дает мне ошибку "не соответствует сумме заказа", не могли бы вы помочь мне, пожалуйста, какой из них я пропустил или неправильно рассчитал?

Я прочитал сообщение с той же проблемой, но все еще не знаю, как исправить мои из предложенных ими ответов. Заранее спасибо.

Array
(
    [METHOD] => SetExpressCheckout
    [SOLUTIONTYPE] => Sole
    [LANDINGPAGE] => Billing
    [ALLOWNOTE] => 0
    [PAYMENTREQUEST_0_PAYMENTACTION] => Sale
    [PAYMENTREQUEST_0_AMT] => 70.00
    [PAYMENTREQUEST_0_CURRENCYCODE] => AUD
    [PAYMENTREQUEST_0_INVNUM] => 124-1440383961
    [RETURNURL] => http://mysite.here/checkout/124/payment/return/I2Ir45QRcKkACL__OFbNrNjc8cL9Iajr0UU1LzXesWA
    [CANCELURL] => http://mysite.here/checkout/124/payment/back/I2Ir45QRcKkACL__OFbNrNjc8cL9Iajr0UU1LzXesWA
    [L_PAYMENTREQUEST_0_NAME0] => Babbling Brook - 7min Loop
    [L_PAYMENTREQUEST_0_AMT0] => 35.00
    [L_PAYMENTREQUEST_0_QTY0] => 1
    [L_PAYMENTREQUEST_0_NUMBER0] => babblingbrook-7minloop
    [L_PAYMENTREQUEST_0_NAME1] => Crackling Fire - 7min Loop
    [L_PAYMENTREQUEST_0_AMT1] => 35.00
    [L_PAYMENTREQUEST_0_QTY1] => 1
    [L_PAYMENTREQUEST_0_NUMBER1] => cracklingfire-7minloop
    [PAYMENTREQUEST_0_ITEMAMT] => 63.64
    [PAYMENTREQUEST_0_TAXAMT] => 6.36
    [NOSHIPPING] => 1
    [USER] => myusernamehere
    [PWD] => ANDPASSWORDHERE
    [SIGNATURE] => A.bIs5s0FCBv.KdshBEZ.0y1BshsBr9
    [VERSION] => 76.0
)

Ответ сервера PayPal:

Array
(
    [TIMESTAMP] => 2015-08-24T02:20:54Z
    [CORRELATIONID] => 7b10ddf49b4c1
    [ACK] => Failure
    [VERSION] => 76.0
    [BUILD] => 000000
    [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
)
Author: axscode, 2015-08-24

1 answers

В последний раз, когда я играл с этим, я использовал API версии 113 (которой уже больше года).

Я думаю, что вы просто действительно пропустили только сумму налога за единицу товара.

Поле PAYMENTREQUEST_0_ITEMAMT должно быть равно сумме суммы каждого товара (L_PAYMENTREQUEST_0_AMTn) без учета налога, умноженной на количество. Так что у вас должно быть

'L_PAYMENTREQUEST_0_AMT0' => 31.82,
'L_PAYMENTREQUEST_0_AMT1' => 31.82,
'PAYMENTREQUEST_0_ITEMAMT' => 63.64

PAYMENTREQUEST_0_TAXAMT является суммой суммы налога по каждому товару (L_PAYMENTREQUEST_0_TAXAMTn), умноженной на количество. Вы не указали сумму налога на товары, но предположим, что это что-то вроде

'L_PAYMENTREQUEST_0_TAXAMT0' => 3.18,
'L_PAYMENTREQUEST_0_TAXAMT1' => 3.18,
'PAYMENTREQUEST_0_TAXAMT' => 6.36

Наконец, PAYMENTREQUEST_0_AMT - это сумма PAYMENTREQUEST_0_ITEMAMT и PAYMENTREQUEST_0_TAXAMT плюс любая доставка

'PAYMENTREQUEST_0_AMT' => 70.00
 3
Author: Phil, 2015-08-24 03:50:14