2013-01-24 93 views
5

有很多關於此錯誤的帖子,但它們都不適用於我。我真的不明白爲什麼金額不匹配。我有ITEMAMT匹配AMT0 * QTY0。 AMT與ITEMAMT + SHIPPINGAMT相匹配。我一遍又一遍地檢查了文檔,它確實應該以這種方式工作。它可以工作,當我完全刪除它的運輸...PayPal API:購物車項目金額的總計與訂單金額不匹配

AMT在結帳URL也是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 
) 

回答

2

對我的問題的回答可能對您過往的大多數人沒有幫助。但是我的其中一個項目在說明中包含&(L_PAYMENTREQUEST_0_DESC0)。 '&'逃過了通過CURL傳遞的數據。這就造成了錯誤(完全關閉)。請記住,如果您在編碼URL時輸入任何包含&的字符,也會發生這種情況。 é會變成é

對於從我的第一篇文章中刪除項目說明,我表示歉意,但由於有關金額的錯誤消息,我不知道這與它有關。

4

,你有2位小數發貨幣這是強制性的地方。看來,你只提供1

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

因爲數額不正確的格式支付寶將返回此錯誤:

Table A.2我們來看一看AMT下排:

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

此規則應適用於每一個你設置一個「錢」的參數時。

+0

謝謝您的回答,但是這似乎並沒有這樣的伎倆: [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 仍然得到了完全相同的錯誤 – Chris

+0

@克里斯你找到了解決方案 我有同樣的問題。隨着小數我得到錯誤。我試圖在發送到PayPal之前拆分totalpriceexvat + vat中的總價格 – alex

+0

我已經變成了每個錢var sprintf(「%。2f」,$ var) – alex

0

我在前幾天嘗試溝通時也遇到了同樣的問題,只有我意識到這些順序總計並不真正匹配,並帶有一些微小的小數位。如果你嘗試使用一些整數如50,作爲項目總和(沒有任何進動),那麼它不會給出任何錯誤。我也打破了我的頭,雖然貝寶有一些問題。 (但實際上我是) 所以你最好檢查一下計算結果,並注意PayPal將接受高達只有2歲或小數位的金額。我同意塞繆爾所說的話。

即使出廠量你最好把他們爲12.00,而不是12等號碼,如61.90,73.90 ...

+2

我知道這是必需的,就像塞繆爾庫克所說的那樣。但這並非真的如此。我在php中使用了round($ value,2),這意味着如果需要的話,它會舍入到兩位小數。 12.00將是12,61.90將是61.9和30.95將是30.95。它並不是說PayPal不接受少於兩位小數的值,但是如果您沒有四捨五入到兩位小數,那麼這些數值不會加在PayPal的計算中。如果你給他們AMT0 => 10.55,那麼QTY0 => 2 paypal將計算到21.10,ITEMAMT爲21.1就可以,但是QTY0 => 3並且值爲31.65,這要求你有兩個dec – Chris

相關問題