没有一次性购买的Paypal经常性付款

时间:2017-11-08 19:56:53

标签: php paypal paypal-sandbox opencart2.x paypal-subscriptions

我正在尝试设置Paypal重复配置文件,但我一直收到错误代码10525:"此交易无法处理。收费金额为零。"我只想开始定期结算,而不是向他们收取一次性付款金额,然后再对其进行定期结算。 (每月13美元或每年135美元的选择)。

从paypal知识(https://www.paypal-knowledge.com/infocenter/index?page=content&id=FAQ1441&actp=LIST)我发现: "使用BillingType = RecurringPayments / MerchantInitiatedBilling代替创建没有金额的定期个人资料/结算协议ID。"

但是,我已经这样做了。

另外,在paypal api(https://developer.paypal.com/docs/classic/api/merchant/SetExpressCheckout_API_Operation_NVP/)中,我发现: "如果交易不包括一次性购买,例如当您为未立即收取的定期付款设置结算协议时,请将此字段设置为0。当该字段设置为0时,将忽略特定于购买的字段。"

但它设置为" 0",所以我不知道该怎么做。

这是我的调试清单:

2017-11-08 19:39:28 - PayPal Express debug (Call data): {
"METHOD":"SetExpressCheckout",
"MAXAMT":0,
"RETURNURL":"***",
"CANCELURL":"***",
"REQCONFIRMSHIPPING":0,
"NOSHIPPING":1,
"LOCALECODE":"EN",
"LANDINGPAGE":"Login",
"HDRIMG":"***",
"PAYFLOWCOLOR":"FFFFFF",
"CHANNELTYPE":"Merchant",
"ALLOWNOTE":"1",
"PAYMENTREQUEST_0_SHIPPINGAMT":"",
"PAYMENTREQUEST_0_CURRENCYCODE":"USD",
"PAYMENTREQUEST_0_PAYMENTACTION":"Sale",
"L_PAYMENTREQUEST_0_DESC0":"Journal Inside Pages:Unlined, Journal Theme:Mom",
"L_PAYMENTREQUEST_0_NAME0":"The Gratitude Project",
"L_PAYMENTREQUEST_0_NUMBER0":"JNL103",
"L_PAYMENTREQUEST_0_AMT0":0,
"L_PAYMENTREQUEST_0_QTY0":"1",
"L_PAYMENTREQUEST_0_ITEMURL0":"***",
"L_PAYMENTREQUEST_0_ITEMLENGTHVALUE0":"8.00000000",
"L_PAYMENTREQUEST_0_ITEMLENGTHUNIT0":"in",
"L_PAYMENTREQUEST_0_ITEMWIDTHVALUE0":"10.00000000",
"L_PAYMENTREQUEST_0_ITEMWIDTHUNIT0":"in",
"L_PAYMENTREQUEST_0_ITEMHEIGHTVALUE0":"0.00000000",
"L_PAYMENTREQUEST_0_ITEMHEIGHTUNIT0":"in",
"PAYMENTREQUEST_0_ITEMAMT":"0.00",
"PAYMENTREQUEST_0_AMT":0,
"L_BILLINGTYPE0":"RecurringPayments",
"L_BILLINGAGREEMENTDESCRIPTION0":"1 USD every 1 day"}

2017-11-08 19:39:29 - PayPal Express debug (Result): 
"TOKEN=EC%2d67C48949S6014741D&TIMESTAMP=2017%2d11%2d08T19%3a39%3a29Z&CORRELATIONID=a278368193eb9&ACK=Success&VERSION=109%2e0&BUILD=40710629"

2017-11-08 19:39:47 - PayPal Express debug (Call data): 
{"METHOD":"GetExpressCheckoutDetails",
"TOKEN":"EC-67C48949S6014741D"}

2017-11-08 19:39:48 - PayPal Express debug (Result):    "TOKEN=***"

2017-11-08 19:39:48 - PayPal Express debug (Call data): 
{"TOKEN":"EC-67C48949S6014741D",
"PAYERID":"8CKXXNF3MR26N",
"METHOD":"DoExpressCheckoutPayment",
"PAYMENTREQUEST_0_NOTIFYURL":"***",
"RETURNFMFDETAILS":1,
"PAYMENTREQUEST_0_SHIPPINGAMT":"",
"PAYMENTREQUEST_0_CURRENCYCODE":"USD",
"PAYMENTREQUEST_0_PAYMENTACTION":"Sale",
"L_PAYMENTREQUEST_0_DESC0":"Journal Inside Pages:Unlined, Journal Theme:Mom",
"L_PAYMENTREQUEST_0_NAME0":"The Gratitude Project",
"L_PAYMENTREQUEST_0_NUMBER0":"JNL103",
"L_PAYMENTREQUEST_0_AMT0":0,
"L_PAYMENTREQUEST_0_QTY0":"1",
"L_PAYMENTREQUEST_0_ITEMURL0":"***",
"L_PAYMENTREQUEST_0_ITEMLENGTHVALUE0":"8.00000000",
"L_PAYMENTREQUEST_0_ITEMLENGTHUNIT0":"in",
"L_PAYMENTREQUEST_0_ITEMWIDTHVALUE0":"10.00000000",
"L_PAYMENTREQUEST_0_ITEMWIDTHUNIT0":"in",
"L_PAYMENTREQUEST_0_ITEMHEIGHTVALUE0":"0.00000000",
"L_PAYMENTREQUEST_0_ITEMHEIGHTUNIT0":"in",
"PAYMENTREQUEST_0_ITEMAMT":"0.00",
"PAYMENTREQUEST_0_AMT":0,
"L_BILLINGTYPE0":"RecurringPayments",
"L_BILLINGAGREEMENTDESCRIPTION0":"1 USD every 1 day"}

但是,如果我这样做,请将PAYMENTREQUEST_0_AMT设置为" 13.00",例如,呼叫正确进入。然而,客户将在第一个月(总计26美元)加倍支付。我可以为" 0"设置试用期,但这只会修复每月订阅,而不是年度订阅。

我正在使用Paypal Express(Sandbox)和Opencart 2.3.0.2 这个问题是通过Opencart知道的,但没人修复它。所以我试图自己解决它。我之前没有使用过Paypal API,所以我不确定在哪里看。

1 个答案:

答案 0 :(得分:0)

"如果交易不包括一次性购买,则将此字段设置为0。"在链接中 https://developer.paypal.com/docs/classic/api/merchant/SetExpressCheckout_API_Operation_NVP/表示" n"在参数" PAYMENTREQUEST_n_AMT"设置为" 0"而不是你将总金额设置为" 0"。 所以," MAXAMT"和" L_PAYMENTREQUEST_0_AMT0"不能是" 0但应该大于0以匹配您的总金额。 您首先要求调用SetExpressCheckout API(BillingType = RecurringPayments),并获得EC令牌响应并在CreateRecurringPaymentsProfile API中使用它 https://developer.paypal.com/docs/classic/api/merchant/CreateRecurringPaymentsProfile_API_Operation_NVP/