paypal订阅流程及api请求
1、paypal后台创建产品及计划
正式环境创建订阅计划地址:
https://www.paypal.com/merchantapps/appcenter/acceptpayments/subscriptions
沙盒环境创建订阅计划计划:
https://www.sandbox.paypal.com/billing/plans
点击进去之后可创建产品及计划(此处创建的产品及计划为正式环境计划,沙箱的计划在此处不会显示)
可根据流程可创建产品及计划
也可根据api创建产品及计划
2、API创建产品及计划
API 地址: https://developer.paypal.com/api/rest/
1. 生成token
首先在你的paypal账号里获取你的clientId和Secret,然后再来获取access_token
请求地址:
沙盒: https://api.sandbox.paypal.com/v1/oauth2/token
正式: https://api.paypal.com/v1/oauth2/token
请求例子:
curl -v -X POST "https://api-m.sandbox.paypal.com/v1/oauth2/token" \-u "<CLIENT_ID>:<CLIENT_SECRET>" \-H "Content-Type: application/x-www-form-urlencoded" \-d "grant_type=client_credentials"
返回结果:
{"scope": "https://uri.paypal.com/services/invoicing https://uri.paypal.com/services/disputes/read-buyer https://uri.paypal.com/services/payments/realtimepayment https://uri.paypal.com/services/disputes/update-seller https://uri.paypal.com/services/payments/payment/authcapture openid https://uri.paypal.com/services/disputes/read-seller https://uri.paypal.com/services/payments/refund https://api-m.paypal.com/v1/vault/credit-card https://api-m.paypal.com/v1/payments/.* https://uri.paypal.com/payments/payouts https://api-m.paypal.com/v1/vault/credit-card/.* https://uri.paypal.com/services/subscriptions https://uri.paypal.com/services/applications/webhooks","access_token": "A21AAFEpH4PsADK7qSS7pSRsgzfENtu-Q1ysgEDVDESseMHBYXVJYE8ovjj68elIDy8nF26AwPhfXTIeWAZHSLIsQkSYz9ifg","token_type": "Bearer","app_id": "APP-80W284485P519543T","expires_in": 31668,"nonce": "2020-04-03T15:35:36ZaYZlGvEkV4yVSz8g6bAKFoGSEzuy3CQcz3ljhibkOHg"
}
2. 创建产品
请求例子:
curl -v -X POST https://api-m.sandbox.paypal.com/v1/catalogs/products \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token" \
-H "PayPal-Request-Id: PRODUCT-18062020-001" \
-d '{"name": "Video Streaming Service","description": "Video streaming service","type": "SERVICE","category": "SOFTWARE","image_url": "https://example.com/streaming.jpg","home_url": "https://example.com/home"
}'
name: 产品名称
description: 产品说明
type: 产品类型。指示产品是实物商品还是数字商品,还是服务。PHYSICAL. 实物商品;DIGITAL. 数码商品;SERVICE. 代表服务的产品
category: 产品类别
image_url: 产品logo
home_url: 产品主站地址 https://www.baidu.com
返回结果:
{"id": "PROD-XYAB12ABSB7868434", ## 产品id 后边会用到"name": "Video Streaming Service","description": "Video streaming service","type": "SERVICE","category": "SOFTWARE","image_url": "https://example.com/streaming.jpg","home_url": "https://example.com/home","create_time": "2020-01-10T21:20:49Z","update_time": "2020-01-10T21:20:49Z","links": [{"href": "https://api-m.paypal.com/v1/catalogs/products/72255d4849af8ed6e0df1173","rel": "self","method": "GET"},{"href": "https://api-m.paypal.com/v1/catalogs/products/72255d4849af8ed6e0df1173","rel": "edit","method": "PATCH"}]
}
3. 创建计划
请求地址:
https://api-m.sandbox.paypal.com/v1/billing/plans \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token" \
-H "PayPal-Request-Id: PLAN-18062019-001" \
-d '{"product_id": "PROD-XXCD1234QWER65782","name": "Video Streaming Service Plan","description": "Video Streaming Service basic plan","status": "ACTIVE","billing_cycles": [{"frequency": {"interval_unit": "MONTH","interval_count": 1},"tenure_type": "REGULAR","sequence": 1,"total_cycles": 12,"pricing_scheme": {"fixed_price": {"value": "6","currency_code": "USD"}}}],"payment_preferences": {"auto_bill_outstanding": true,"setup_fee": {"value": "6","currency_code": "USD"},"setup_fee_failure_action": "CONTINUE","payment_failure_threshold": 3},"taxes": {"percentage": "0","inclusive": false}
}
product_id:产品id
name: 计划名称
description:计划说明
status:计划状态
billing_cycles:用于试用计费和定期计费的一系列计费周期。一个计划最多可以有两个试用周期和一个常规周期。
frequency:频率
interval_unit:对订阅收费或计费的时间间隔,DAY/WEEK/MONTH/YEAR
interval_count:向订阅者收费的间隔数,1-365
tenure_type:计费周期的任期类型。REGULAR. 定期计费周期。TRIAL. 试用计费周期。
sequence:计费周期顺序(必填)
total_cycles:计费周期执行的次数。试用计费周期(TRIAL)只能执行有限次数,范围1-999;定期计费周期(REGULAR)可以执行无限次,0-999
pricing_scheme:计费周期的主动定价方案。免费试用计费周期不需要定价方案
fixed_price:订阅收取的固定金额
value:金额
currency_code:货币代码
payment_preferences: 订阅的付款首选项
auto_bill_outstanding:是否在下一个计费周期自动计费未结金额
setup_fee:服务的初始设置费
value:金额
currency_code:货币代码
setup_fee_failure_action:如果设置的初始付款失败,则对订阅采取的操作;CONTINUE:如果设置的初始付款失败,则继续订阅。CANCEL:如果设置的初始付款失败,则取消订阅。
payment_failure_threshold:连续x次付款失败,订阅会自动更新到暂停状态
taxes:税
percentage:税百分比,不含税填0
inclusive:税款是否已包含在帐单金额中
返回结果:
{"id": "P-2DN49707R1221304MMLL5H7A","product_id": "PROD-36834256SL5660309","name": "Video Streaming Service Plan","status": "ACTIVE","description": "Video Streaming Service basic plan","usage_type": "LICENSED","billing_cycles": [{"pricing_scheme": {"version": 1,"fixed_price": {"currency_code": "USD","value": "6.0"},"create_time": "2022-07-20T10:07:56Z","update_time": "2022-07-20T10:07:56Z"},"frequency": {"interval_unit": "MONTH","interval_count": 1},"tenure_type": "REGULAR","sequence": 1,"total_cycles": 12}],"payment_preferences": {"service_type": "PREPAID","auto_bill_outstanding": true,"setup_fee": {"currency_code": "USD","value": "6.0"},"setup_fee_failure_action": "CONTINUE","payment_failure_threshold": 3},"taxes": {"percentage": "0.0","inclusive": false},"quantity_supported": false,"create_time": "2022-07-20T10:07:56Z","update_time": "2022-07-20T10:07:56Z","links": [{"href": "https://api.sandbox.paypal.com/v1/billing/plans/P-2DN49707R1221304MMLL5H7A","rel": "self","method": "GET","encType": "application/json"},{"href": "https://api.sandbox.paypal.com/v1/billing/plans/P-2DN49707R1221304MMLL5H7A","rel": "edit","method": "PATCH","encType": "application/json"},{"href": "https://api.sandbox.paypal.com/v1/billing/plans/P-2DN49707R1221304MMLL5H7A/deactivate","rel": "self","method": "POST","encType": "application/json"}]
}
4. 计划详情
请求地址:
curl -v -X GET https://api-m.sandbox.paypal.com/v1/billing/plans/P-5ML4271244454362WXNWU5NQ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token"
5. 创建订阅
请求地址:
curl -v -X POST https://api-m.sandbox.paypal.com/v1/billing/subscriptions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <Access-Token>" \
-H "PayPal-Request-Id: SUBSCRIPTION-21092019-001" \
-d '{"plan_id": "P-5ML4271244454362WXNWU5NQ","start_time": "2022-07-21T00:00:00Z","quantity": "20","shipping_amount": {"currency_code": "USD","value": "10.00"},"application_context": {"brand_name": "walmart","locale": "en-US","shipping_preference": "SET_PROVIDED_ADDRESS","user_action": "SUBSCRIBE_NOW","payment_method": {"payer_selected": "PAYPAL","payee_preferred": "IMMEDIATE_PAYMENT_REQUIRED"},"return_url": "https://example.com/returnUrl","cancel_url": "https://example.com/cancelUrl"}
}'
plan_id: 计划id
start_time: 该值实际上设置的是第二次扣款时间 ISO8601时间
quantity: 订阅中的产品数量
shipping_amount: 交易的货币和金额
currency_code: 货币代码
value: 金额
application_context:
brand_name:
locale:
shipping_preference:
user_action: CONTINUE. 将客户重定向到 PayPal 订阅同意页面后,会出现一个继续按钮。如果您想控制订阅的激活并且不希望 PayPal 激活订阅,请使用此选项;SUBSCRIBE_NOW. 在您将客户重定向到 PayPal 订阅同意页面后,会出现立即订阅按钮。如果您希望 PayPal 激活订阅,请使用此选项。
payment_method: 付款方式
payer_selected: 商家网站上客户选择的付款方式
payee_preferred: UNRESTRICTED. 接受客户的任何类型的付款;IMMEDIATE_PAYMENT_REQUIRED. 只接受客户的即时付款。例如,信用卡、PayPal 余额或即时 ACH。确保在捕获时,付款不处于“待处理”状态。
return_url: 支付成功地址
cancel_url: 支付取消地址
返回结果:
{"status": "APPROVAL_PENDING","id": "I-BW452GLLEP1G","create_time": "2022-07-20T12:04:00Z","links": [{"href": "https://www.paypal.com/webapps/billing/subscriptions?ba_token=BA-2M539689T3856352J","rel": "approve","method": "GET"},{"href": "https://api.paypal.com/v1/billing/subscriptions/I-BW452GLLEP1G","rel": "edit","method": "PATCH"},{"href": "https://api.paypal.com/v1/billing/subscriptions/I-BW452GLLEP1G","rel": "self","method": "GET"}]
}
根据获取的结果选择"links"下第一个"href"去支付订阅
6. 订阅详情
请求地址:
curl -v -X GET https://api-m.sandbox.paypal.com/v1/billing/subscriptions/I-BW452GLLEP1G \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token"
7. 配置webHook
https://developer.paypal.com/developer/applications
此处选择的为,仅为个人选择
事件说明:https://developer.paypal.com/api/rest/webhooks/event-names/#subscriptions
PAYMENT SALE COMPLETED: 对订阅进行付款
BILLING SUBSCRIPTION EXPIRED:订阅到期。
BILLING SUBSCRIPTION CANCELLED: 订阅被取消
BILLING SUBSCRIPTION SUSPENDED : 订阅被暂停
BILLING SUBSCRIPTION ACTIVATED: 订阅已激活
paypal订阅流程及api请求相关推荐
- php 实现paypal订阅
paypal订阅与google订阅的不同之处: 1. google设置首周优惠时,用户第一次订阅会有优惠,用户退订之后再次订阅就不会执行首周订阅优惠: 而paypal设置首周优惠时,用户的每次取消后订 ...
- 六:Consumer订阅流程
Consumer订阅流程 回到org.apache.dubbo.config.deploy.DefaultModuleDeployer#start 方法,在该方法中有两个重要的方法:1.exportS ...
- 日均承担过亿API请求的公司竟然在深圳!(AfterShip)
有关 AfterShip 2012年成立于香港,2014年开始盈利,专注于SaaS平台企业服务,业务遍布全球,与全球470多家物流公司达成合作,涉及30多种主流语言业务体系:帮助跨境电商及平台,将全球 ...
- apikey、apisecret在api请求中的使用
场景 提供的api接口需要验证使用者身份的合法性 流程 由api使用者(简称用户端)向api提供者(服务端)申请一组public key/secret key 用户端在调用接口请求时,携带上data. ...
- OpenRTMFP/Cumulus Primer(21)经由服务器的发布/订阅流程的关键点
OpenRTMFP/Cumulus Primer(21)经由服务器的发布/订阅流程的关键点 作者:柳大·Poechant(钟超 Michael) 博客:Blog.csdn.net/poechant 邮 ...
- Redis中使用Java代码的方式实现发布订阅流程
场景 Redis中的发布与订阅的概念与以命令行的方式实现发布订阅举例: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/105042 ...
- 12.源码阅读(app启动流程-android api 26)
activity的启动流程之前已经通过源码了解了,那么app的启动流程是怎样的,从我们按下app的图标,到应用启动起来显示出画面,中间都经历了什么? 安卓是基于java的,所以和java有一定的相似性 ...
- [Postman]排除API请求(9)
可能存在API无法运行或出现意外行为的情况.如果您没有收到任何回复,邮递员将显示有关连接服务器时出错的消息. 有关错误可能原因的更多详细信息,请打开Postman Console.它有关于故障的详细信 ...
- promise的状态以及api介绍_前端 api 请求缓存
作者:wsafight https://github.com/wsafight/personBlog/issues/2 web开发时,性能都是必不可少的话题.对于webpack打包的单页面应用程序而言 ...
- postman跨域测试_安装使用Hoppscotch构建API请求访问与测试
什么是API请求构建工具 在移动互联网时代,面向多端开发成为主流,需要向用户提供如:安卓App.苹果App.WAP.小程序.Web网页等等多种应用入口,这些入口称为前端.而为不同前端提供数据和业务信息 ...
最新文章
- PAT甲级1145 Hashing - Average Search Time:[C++题解]哈希表、哈希表开放寻址法、二次探测法、求平均查找次数
- Hibernate中的HQL的基本常用小例子,单表查询与多表查询
- Python线程指南 ---转自 http://www.cnblogs.com/huxi/archive/2010/06/26/1765808.html
- C#LeetCode刷题之#100-相同的树(Same Tree)
- MongoDB初探系列之二:认识MongoDB提供的一些经常使用工具
- 华为关联公司哈勃投资晟芯网络 持股10%
- 08-03 性能测试--数据准备与基准场景设
- mysql55条_mysql学习笔记一
- 《网络攻防》第五周作业
- php创建游戏房间思路,用Swoole来写个联机对战游戏呀!(八)创建游戏房间
- flask 接收文件
- redis集群原理及搭建
- 【笔记】一些Attention 方面的网络
- fastlane 上传到蒲公英和Fir 配置
- java爬虫写一个百度图片下载器
- idea配置Camunda Modeler
- 2019年十大网络流行语,你了解几个?
- 如何去除ie的select下拉框箭头图标
- 千里之行始于足下 | 开篇 - 增长极客
- JAVASCRIPT中THIS指的是什么?