DoReferenceTransaction

DoReferenceTransaction

看看我是怎么开始完成手术的,
第一步。首先称为setexpresscheckout,

AMT=0.00
PAYMENTREQUEST_0_AMT=0.00
PAYMENTACTION
BILLINGAGREEMENTDESCRIPTION

BILLINGTYPE=MerchantInitiatedBilling

RETURNURL
CANCELURL
CURRENCYCODE



SOLUTIONTYPE=Sole
LOCALECODE=us
LANDINGPAGE=Billing

第二步。然后我打电话给CreateBillingAgreement
TOKEN
PAYERID
PAYMENTACTION

AMT
CURRENCYCODE
IPADDRESS

它返回帐单ID。
第三步。使用参数调用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已启用。(沙盒测试)

最佳答案

第一次尝试设置
再发生
DoreferenceTransaction API调用的字段。
如果没有成功,请使用方法createRecurringPaymentsProfile代替doreferenceTransaction。API Documentation link
我建议不要使用贝宝沙盒-只要使用https://api-3t.paypal.com/nvp并将价格设置为0.01-这将防止双重测试
当方法setexpresscheckout和(在您的情况下)doreferencetransaction之间不兼容时,出现错误10004
关于错误“Express Checkout Digital Goods不再适用于新集成”:
我们与PayPal支持部门联系,为我们的PayPal主帐户激活数字商品。此外,我们多次尝试激活贝宝账户内的数字商品,几天后,这个错误消失得像个奇迹:)
我不太确定如何解决这个错误,但在尝试了许多不同的测试(包括询问PayPal支持)后,他就消失了。所以我的建议是继续尝试不同的方法和组合

10-08 09:00