3

curlを使用して2人のユーザーへのダミーの並行支払いをシミュレートしようとしています。私はドキュメントに従ってすべてを行いましたが、問題は私が得ていることです

L_ERRORCODE0 = 10001&タイムアウト処理要求の取得

どうしてか分かりません。

私のコードは次のとおりです。

<?php
   $data = array(
     'USER'=>urlencode('xxx'),
     'PWD'=>urlencode('xxxx'),
     'SIGNATURE'=>urlencode('xxxx'),
     'VERSION'=>urlencode('86.0'),
     'METHOD'=>urlencode('SetExpressCheckout'),
     'RETURNURL'=>urlencode('http://75.125.190.162:7132/sample/php_nvp_samples/myCheckout.php'),
     'CANCELURL'=>urlencode('http://75.125.190.162:7132/sample/php_nvp_samples/myCheckout.php'),
     'PAYMENTREQUEST_0_CURRENCYCODE'=>urlencode('USD'),
     'PAYMENTREQUEST_0_AMT'=>urlencode('300'),
     'PAYMENTREQUEST_0_ITEMAMT'=>urlencode('200'),
     'PAYMENTREQUEST_0_TAXAMT'=>urlencode('100'),
     'PAYMENTREQUEST_0_DESC'=>urlencode('Summer Vacation trip'),
     'PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID'=>urlencode('himans_1331094418_biz@smartdatainc.net'),
     'PAYMENTREQUEST_0_PAYMENTACTION'=>urlencode('Order'),
     'PAYMENTREQUEST_0_PAYMENTREQUESTID'=>urlencode('CART26488-PAYMENT0'),
     'PAYMENTREQUEST_1_CURRENCYCODE'=>urlencode('USD'),
     'PAYMENTREQUEST_1_AMT'=>urlencode('100'),
     'PAYMENTREQUEST_1_ITEMAMT'=>urlencode('50'),
     'PAYMENTREQUEST_1_TAXAMT'=>urlencode('50'),
     'PAYMENTREQUEST_1_DESC'=>urlencode('Dancing class'),
     'PAYMENTREQUEST_1_SELLERPAYPALACCOUNTID'=>urlencode('himans_1320303266_biz@smartdatainc.net'),
     'PAYMENTREQUEST_1_PAYMENTACTION'=>urlencode('Order'),
     'PAYMENTREQUEST_1_PAYMENTREQUESTID'=>urlencode('CART26485-PAYMENT0')
  );

  $curl = curl_init('https://api-3t.sandbox.paypal.com/nvp');                       
        curl_setopt($curl,CURLOPT_RETURNTRANSFER ,1);                              
        curl_setopt($curl,CURLOPT_HTTPGET ,true);                                    
        curl_setopt($curl,CURLOPT_POSTFIELDS ,$data);              
   $response = curl_exec($curl);
   echo $response;
   exit;
   curl_close($curl);         
?>

リクエストのvardumpは次のとおりです。

array(15) { 
  ["USER"]=> string(43) "XXX"
  ["PWD"]=> string(10) "XXX"
  ["SIGNATURE"]=> string(56) "XXX"
  ["VERSION"]=> string(4) "56.0"
  ["METHOD"]=> string(18) "SetExpressCheckout"
  ["RETURNURL"]=> string(78)
    "http%3A%2F%2F75.125.190.162%3A7132%2Fsample%2Fphp_nvp_samples%2FmyCheckout.php"
  ["CANCELURL"]=> string(78)
    "http%3A%2F%2F75.125.190.162%3A7132%2Fsample%2Fphp_nvp_samples%2FmyCheckout.php"
  ["PAYMENTREQUEST_0_CURRENCYCODE"]=> string(3) "USD"
  ["PAYMENTREQUEST_0_AMT"]=> string(3) "100"
  ["PAYMENTREQUEST_0_ITEMAMT"]=> string(2) "50"
  ["PAYMENTREQUEST_0_TAXAMT"]=> string(2) "20"
  ["PAYMENTREQUEST_0_DESC"]=> string(13) "Dancing class"
  ["PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID"]=> string(21) "seller-136@paypal.com"
  ["PAYMENTREQUEST_0_PAYMENTACTION"]=> string(5) "Order"
  ["PAYMENTREQUEST_0_PAYMENTREQUESTID"]=> string(18) "CART26485-PAYMENT0"
} 

APIクレデンシャルは意図的に削除されました。

そして、ここに応答があります:

   TIMESTAMP=2012%2d03%2d06T09%3a29%3a41Z
  &CORRELATIONID=184b37b1fd85
  &ACK=Failure
  &L_ERRORCODE0=10001
  &L_SHORTMESSAGE0=Internal%20Error
  &L_LONGMESSAGE0=Timeout%20processing%20request
4

3 に答える 3

2

私の他の回答で私の見落としをお詫び申し上げます。コードを見てください。支払いリクエストは 1 つ、0 ですが、売り手は 2 人であることがわかります。並行支払いを使用して複数の支払いを送信するには、PAYMENTREQUEST_n_ の「n」を増やす必要があります。

ただし、あなたとまったく同じデータを送信するたびに、10400「注文合計がありません」と表示されるので、コードをさらに調べます。

次の成功した応答が得られます。

API リクエスト:

 USER=*************************** 
 PWD=***************************
 SIGNATURE=***************************
 METHOD=SetExpressCheckout 
 VERSION=86.0 
 RETURNURL=http://www.site.com/checkout.php 
 CANCELURL=http://www.site.com/cancel.php 
 PAYMENTREQUEST_0_PAYMENTACTION=Sale 
 PAYMENTREQUEST_0_AMT=524.20 
 PAYMENTREQUEST_0_ITEMAMT=458.00 
 PAYMENTREQUEST_0_SHIPPINGAMT=20.00 
 PAYMENTREQUEST_0_TAXAMT=46.20 
 PAYMENTREQUEST_0_CURRENCYCODE=USD 
 PAYMENTREQUEST_0_DESC=test EC payment 
 PAYMENTREQUEST_0_PAYMENTREQUESTID=111 
 L_PAYMENTREQUEST_0_NAME0=Books 
 L_PAYMENTREQUEST_0_AMT0=154.00 
 L_PAYMENTREQUEST_0_NUMBER0=ABC123 
 L_PAYMENTREQUEST_0_QTY0=2 
 L_PAYMENTREQUEST_0_NAME1=CDs 
 L_PAYMENTREQUEST_0_AMT1=50.00 
 L_PAYMENTREQUEST_0_NUMBER1=BY-Z4736 
 L_PAYMENTREQUEST_0_QTY1=3 
 PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID=seller1@paypal.com 
 PAYMENTREQUEST_1_PAYMENTACTION=Sale 
 PAYMENTREQUEST_1_AMT=494.20 
 PAYMENTREQUEST_1_ITEMAMT=428.00 
 PAYMENTREQUEST_1_SHIPPINGAMT=20.00 
 PAYMENTREQUEST_1_TAXAMT=46.20 
 PAYMENTREQUEST_1_CURRENCYCODE=USD 
 PAYMENTREQUEST_1_DESC=test EC payment 
 PAYMENTREQUEST_1_PAYMENTREQUESTID=222 
 L_PAYMENTREQUEST_1_NAME0=DVDs 
 L_PAYMENTREQUEST_1_AMT0=154.00 
 L_PAYMENTREQUEST_1_NUMBER0=ABC123 
 L_PAYMENTREQUEST_1_QTY0=2 
 L_PAYMENTREQUEST_1_NAME1=Computers 
 L_PAYMENTREQUEST_1_AMT1=40.00 
 L_PAYMENTREQUEST_1_NUMBER1=BY-Z4736 
 L_PAYMENTREQUEST_1_QTY1=3 
 PAYMENTREQUEST_1_SELLERPAYPALACCOUNTID=seller2@paypal.com

API 応答:

TOKEN=EC-4XP542213W924160A
TIMESTAMP=2012-03-07T05:16:27Z
CORRELATIONID=357d629ee6eda
ACK=Success
VERSION=86.0
BUILD=2571254
于 2012-03-07T05:19:42.407 に答える
0

それでもエラーが表示される場合は、削除してください。

["PAYMENTREQUEST_0_PAYMENTREQUESTID"]=> string(18) "CART26485-PAYMENT0"
于 2012-03-08T08:12:58.533 に答える
0

Payflow テスト用クレジット カードを使用していますか?

つまり、Payflow のテスト クレジット カードはサンドボックスで禁止されています。以下のペイフロー テスト クレジット カードを使用すると、常に 10001 応答が得られます (49 ページと 50 ページを参照) 。

  • アメリカン・エキスプレス
    • 378282246310005
    • 371449635398431
  • アメリカン・エキスプレス・コーポレート
    • 378734493671000
  • ダイナースクラブ
    • 30569309025904
    • 38520000023237
  • 発見する
    • 6011111111111117
    • 6011000990139424
  • JCB
    • 3530111333300000
    • 3566002020360505
  • マスターカード
    • 5555555555554444
    • 5105105105105100
  • ビザ
    • 4111111111111111
    • 4012888888881881
    • 4222222222222 -- 注: この番号は他のテスト番号とは文字数が異なりますが、正しく機能する番号です。
于 2012-03-07T03:34:37.530 に答える