没有获得DoReferenceTransaction的成功

时间:2015-11-03 07:18:45

标签: php paypal express-checkout

了解我是如何开始完成程序的,

步骤1.首先调用SetExpressCheckout,

AMT=0.00
PAYMENTREQUEST_0_AMT=0.00
PAYMENTACTION
BILLINGAGREEMENTDESCRIPTION

BILLINGTYPE=MerchantInitiatedBilling

RETURNURL
CANCELURL
CURRENCYCODE



SOLUTIONTYPE=Sole 
LOCALECODE=us 
LANDINGPAGE=Billing

第2步。然后我调用了CreateBillingAgreement

TOKEN
PAYERID
PAYMENTACTION

AMT
CURRENCYCODE
IPADDRESS

返回结算ID。

步骤3.使用参数调用DoReferenceTransaction:

&REFERENCEID=B-0GJ65589SA3528026   //billing Id generated by CreateBillingAgreement method
&PAYMENTACTION=Sale
&AMT=3.00
&CURRENCYCODE=USD
&IPADDRESS=paypalrecurring.com
&L_ITEMCATEGORY0=Digital
&DESC=Test+Recurring+Payment%28+%243.00+monthly%29
&L_PAYMENTREQUEST_0_ITEMCATEGORY0=Digital
&L_PAYMENTREQUEST_0_QTY0=1
&L_PAYMENTREQUEST_0_NAME0=Test Name
&L_PAYMENTREQUEST_0_AMT0=3.00
&L_NAME0=Test Name
&L_DESC0=Test+Recurring+Payment%28+%243.00+monthly%29
&L_AMT0=3.00
&ITEMAMT=3.00
&L_QTY0=1

但恐怖组织:

  Array
(
    [TIMESTAMP] => 2015-11-03T11:29:51Z
    [CORRELATIONID] => 811b64f880aff
    [ACK] => Failure
    [VERSION] => 69
    [BUILD] => 000000
    [L_ERRORCODE0] => 10004
    [L_SHORTMESSAGE0] => Invalid Data
    [L_LONGMESSAGE0] => This transaction cannot be processed.
    [L_SEVERITYCODE0] => Error
    [TRANSACTIONTYPE] => None
    [PAYMENTTYPE] => None
    [ORDERTIME] => 1970-01-01T00:00:00Z
    [PAYMENTSTATUS] => None
    [PENDINGREASON] => None
    [REASONCODE] => None
)

请告诉我哪里错了。 注意: Paypal团队表示启用了RT。 (沙盒测试)

1 个答案:

答案 0 :(得分:0)

首先尝试设置

  

重新开始

DoReferenceTransaction API调用的字段。

如果没有成功,请使用方法CreateRecurringPaymentsProfile而不是DoReferenceTransaction。 API Documentation link

我建议不要使用paypal沙箱 - 只需使用https://api-3t.paypal.com/nvp并将价格设置为0.01 - 这样可以防止双重测试

当方法SetExpressCheckout与(在您的情况下)DoReferenceTransaction

之间存在不兼容时出现错误10004

关于错误“Express Checkout数字商品不再适用于新的集成”: 我们与Paypal支持联系,以激活我们的主要paypal帐户的数字商品。此外,我们多次尝试在我们的paypal帐户中激活数字商品,几天后这个错误就像奇迹一样消失:)

我不太确定如何解决此错误,但在尝试了许多不同的测试(包括要求PayPal支持)之后,他就消失了。所以我的建议是继续尝试不同的方法和组合