16

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

私はそれを修正するために何時間も試みましたが、あきらめました. 誰かがそれを機能させるために私がする必要があることを強調できますか?

4

3 に答える 3

25

がありませんITEMAMT。複数の数量の実際の例を含む、 送料とエラーを含む Paypal Express チェックアウトの私の回答も参照してください。

&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  
于 2012-04-18T20:51:05.853 に答える
2

質問とは直接関係ありませんが、Google でエラー メッセージで検索すると最初に表示されるので、このエラーを受け取っている他の人に役立つかもしれません。

一部のフィールドが設定されていない場合 (null/空白)、このエラーが発生する可能性があります。

たとえば、私の場合は(わかりやすくするために改行を追加しました):

    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= の後にスペースを1つでも挿入すると、解析の問題だと思います

&L_PAYMENTREQUEST_0_NAME0=&L_PAYMENTREQUEST_0_AMT0=1.00

それは正常に動作します。

だから私の推測では、PayPal の最後に "&L_PAYMENTREQUEST_0_AMT0=1.00" を L_PAYMENTREQUEST_0_NAME0 に割り当てるだけで、メッセージから効果的に削除され、結果としてこのエラーがトリガーされます。

于 2013-07-04T03:34:49.953 に答える