无需一次性购买的 Paypal 定期付款
Posted
技术标签:
【中文标题】无需一次性购买的 Paypal 定期付款【英文标题】:Paypal Recurring Payments without One-Time Purchase 【发布时间】:2018-04-21 15:55:40 【问题描述】:我正在尝试设置 Paypal 定期配置文件,但我不断收到错误代码 10525:“无法处理此交易。要收取的金额为零。”我只想开始定期计费,而不是向他们收取一次性付款金额,然后再收取定期计费。 (可以选择每月 13 美元或每年 135 美元)。
从贝宝知识 (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”设置试用期,但这只会修复每月订阅,而不是每年订阅。
我在 Opencart 2.3.0.2 中使用 Paypal Express(沙盒) 这个问题是通过 Opencart 知道的,但没有人修复它。所以我试图自己修复它。我之前没有使用过 Paypal API,所以不知道去哪里找。
【问题讨论】:
【参考方案1】:“如果交易不包括一次性购买,则将此字段设置为 0....”在链接中 https://developer.paypal.com/docs/classic/api/merchant/SetExpressCheckout_API_Operation_NVP/ 表示参数“PAYMENTREQUEST_n_AMT”中的“n”设置为“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/
【讨论】:
所以我将 MAXAMT 设置为超过我的经常性价格(13 美元)的金额,但我仍然收到 10525 错误。如果我将 L_PAYMENTREQUEST_0_AMT0 设置为我的经常性价格,我会收到错误:“购物车项目总金额与订单金额不匹配。”如果我将 L_PAYMENTREQUEST_0_AMT0 和 PAYMENTREQUEST_n_AMT 设置为我的经常性价格,我仍然需要支付 13 美元的首期付款,并且13 美元的经常性付款。您能否再次说明需要将哪些项目设置为什么才能绕过初始付款并仅设置定期付款? 我是否只需要启动 SetExpressCheckout 和 CreateRecurringPaymentsProfile 而不是在不进行初始付款时额外启动 DoExpressCheckout? (developer.paypal.com/docs/classic/express-checkout/…)以上是关于无需一次性购买的 Paypal 定期付款的主要内容,如果未能解决你的问题,请参考以下文章