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

我为我的其他答案的疏忽道歉。请查看您的代码,您会看到您只有一个付款请求,0,但有两个卖家。您必须增加 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 的测试信用卡在沙盒中被禁止。您将始终使用以下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 回答