如何使用Paypal客户端rest api创建订阅付款?
问题描述:
Client-side REST integration文档描述了关于创建一个或多个项目的快速结账。如何使用Paypal客户端rest api创建订阅付款?
我如何使用相同的方式创建订阅或定期付款?以下内容应该如何修改?
payment: function(data, actions) {
return actions.payment.create({
transactions: [
{
amount: { total: '1.00', currency: 'USD' }
}
]
});
},
我找到了一个类似的Rest api for Node。不知道它将如何在JS上。
答
首先,你需要创建一个计费方案:
billing_plan_attributes = {
"name": PLAN_NAME_HERE,
"description": PLAN_DESCRIPTION,
"merchant_preferences": {
"auto_bill_amount": "yes", # yes if you want auto bill
"cancel_url": "http://www.cancel.com", # redirect uri if user cancels payment
"initial_fail_amount_action": "continue",
"max_fail_attempts": "1",
"return_url": RETURN_URL,
"setup_fee": {
"currency": CURRENCY,
"value": VALUE # how much do you want to charge
}
},
"payment_definitions": [
{
"amount": {
"currency": request.form['currency'],
"value": request.form['amount']
},
"cycles": CYCLES, # how much time this subscription will charge user
"frequency": FREQ, # month, day
"frequency_interval": INTERVAL, # per month or per three month or so on
"name": NAME,
"type": TYPE
}
],
"type": TYPE
}
billing_plan = BillingPlan(billing_plan_attributes)
if billing_plan.create():
print("success")
使用的属性在这里有字面意义。现在,您已经创建了一个账单计划,您需要为用户提供一些界面,以便他们可以订阅。以下是此示例代码:
billing_agreement = BillingAgreement({
"name": "Organization plan name",
"description": "Agreement for " + request.args.get('name', ''),
"start_date": (datetime.now() + timedelta(hours=1)).strftime('%Y-%m-%dT%H:%M:%SZ'),
"plan": {
"id": request.args.get('id', '')
},
"payer": {
"payment_method": "paypal"
},
"shipping_address": {
"line1": "StayBr111idge Suites",
"line2": "Cro12ok Street",
"city": "San Jose",
"state": "CA",
"postal_code": "95112",
"country_code": "US"
}
})
if billing_agreement.create():
for link in billing_agreement.links:
if link.rel == "approval_url":
approval_url = link.href
在最后一行中,您将获得可以提供给用户的审批链接。 接下来,如果用户批准付款,您必须设置一个终端,它将成为回拨网址。
billing_agreement_response = BillingAgreement.execute(payment_token)
payment_token通过PayPal发送到您的回调网址。
+0
PayPal安装费用与json中的金额有什么区别? – Cijo
+0
这适用于您想要花费一次性设置费用(如一次性注册费或会员费)的场景。 –
客户端集成不适用于订阅目的。您必须使用服务器端实现才能创建订阅计划。而服务器端也是有道理的,因为你总是希望存储的细节,你已经收到了多少钱,或多少到期和更多的细节 –
只是FYI:你提供的链接有服务器端实现。 –
你是对的。但我无法弄清楚如何更改[服务器端请求]中使用的JSON(https://developer.paypal.com/docs/integration/direct/express-checkout/integration-jsv4/advanced-payments-api/create -express-checkout-payments /#request),以便创建一个订阅。 – Cijo