2013-01-24 8 views
5

Istnieje wiele postów dotyczących tego błędu, ale wszystkie one nie dotyczą mnie. Naprawdę nie rozumiem, dlaczego kwoty nie pasowały. Mam ITEMAMT, który pasuje do AMT0 * QTY0. AMT odpowiada ITEMAMT + SHIPPINGAMT. Sprawdzałem dokumenty w kółko i to naprawdę powinno działać w ten sposób. Działa, gdy całkowicie usunę z niego wysyłkę ...PayPal API: Łączna kwota pozycji w koszyku nie odpowiada kwocie zamówienia

AMT w adresie do kasy również wynosi 73,9.

Mam nadzieję, że ktoś jest zaznajomiony z tym bardzo mylące błędu i nie wie, co robię źle ...

góry dzięki

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 
) 

Odpowiedz

2

Odpowiedź na moje pytanie prawdopodobnie nie jest pomocna dla większości z was. Ale jeden z moich produktów zawierał w opisie opis: & (L_PAYMENTREQUEST_0_DESC0). "&" uniknął danych przekazanych przez CURL. I to stworzyło błąd (który jest całkowicie wyłączony). Pamiętaj, że stanie się to również po umieszczeniu dowolnych znaków, które będą zawierały kod &, gdy adres URL jest kodowany, np. will stanie się é

Przepraszam za usunięcie opisu przedmiotu z mojego pierwszego posta, ale nie miałem pojęcia, że ​​to ma coś z tym wspólnego, z powodu komunikatu o błędzie dotyczącego kwot.

4

Jest to obowiązkowe, aby wysłać waluty z 2 przecinku miejsca. Wydaje się, że są tylko zapewnienie 1.

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

Paypal powróci ten błąd, ponieważ kwota nie jest w prawidłowym formacie:

przyjrzeć Table A.2 pod AMT rzędu:

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

zasada ta powinna mieć zastosowanie za każdym razem, parametr „pieniądze” ustawionego .

+0

Dzięki za odpowiedź, ale to nie wydaje się rade: [AMT] => 73.90 [L_PAYMENTREQUEST_0_AMT0] => 30.95 [PAYMENTREQUEST_0_ITEMAMT] => 61.90 [PAYMENTREQUEST_0_TAXAMT] => 0,00 [PAYMENTREQUEST_0_SHIPPINGAMT] => 12.00 [PAYMENTREQUEST_0_INSURANCEAMT] => 0,00 [PAYMENTREQUEST_0_AMT] => 73.90 Still got dokładnie ten sam błąd: – Chris

+0

@ Chris znalazłeś rozwiązanie Mam ten sam problem. W ułamkach dziesiętnych pojawiają się błędy.Próbuję podzielić całkowitą cenę w totalpriceexvat + vat przed wysłaniem do paypal – alex

+0

zmieniłem wszystkie pieniądze var sprintf ("%. 2f", $ var) – alex

0

Też miałem ten sam problem kilka dni temu, kiedy próbowałem się komunikować, wtedy tylko zdałem sobie sprawę, że te sumy zamówień nie pasują do siebie, z kilkuminutowymi miejscami dziesiętnymi. Jeśli spróbujesz komunikować się z pewnymi liczbami całkowitymi, np. 50, jako item amt i total (bez żadnych precesji), to nie spowoduje to żadnego błędu. Również łamałem sobie głowę i chociaż paypal ma jakiś problem. (ale tak naprawdę było) Więc lepiej sprawdź obliczenia i pamiętaj, że system PayPal akceptuje kwoty do 2 precesji lub miejsc dziesiętnych. Zgadzam się z Samuelem na to, co powiedział.

Nawet kwota wysyłki lepiej wysłać je za 12.00 zamiast 12 i inne numery jak 61.90, 73.90 ...

+2

Wiem, że to jest wymagane, tak jak powiedział Samuel Cook. Ale tak nie było w tym przypadku. Użyłem rundy ($ value, 2) w php, co oznacza, że ​​zaokrągli się do dwóch miejsc po przecinku, jeśli jest to wymagane. 12,00 będzie 12, 61,90 będzie 61,9, a 30,95 będzie 30,95. Nie jest tak, że PayPal nie akceptuje wartości z mniej niż dwoma miejscami po przecinku, ale jeśli nie zaokrąglisz do dwóch miejsc po przecinku, wartości nie sumują się w obliczeniach PayPal. Jeśli dasz im AMT0 => 10,55, QTY0 => 2 paypal obliczy, że do 21,10, ITEMAMT z 21,1 będzie w porządku, ale rób QTY0 => 3, a wartość to 31,65, co wymaga posiadania dwóch deców – Chris

Powiązane problemy