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请求相关推荐

  1. php 实现paypal订阅

    paypal订阅与google订阅的不同之处: 1. google设置首周优惠时,用户第一次订阅会有优惠,用户退订之后再次订阅就不会执行首周订阅优惠: 而paypal设置首周优惠时,用户的每次取消后订 ...

  2. 六:Consumer订阅流程

    Consumer订阅流程 回到org.apache.dubbo.config.deploy.DefaultModuleDeployer#start 方法,在该方法中有两个重要的方法:1.exportS ...

  3. 日均承担过亿API请求的公司竟然在深圳!(AfterShip)

    有关 AfterShip 2012年成立于香港,2014年开始盈利,专注于SaaS平台企业服务,业务遍布全球,与全球470多家物流公司达成合作,涉及30多种主流语言业务体系:帮助跨境电商及平台,将全球 ...

  4. apikey、apisecret在api请求中的使用

    场景 提供的api接口需要验证使用者身份的合法性 流程 由api使用者(简称用户端)向api提供者(服务端)申请一组public key/secret key 用户端在调用接口请求时,携带上data. ...

  5. OpenRTMFP/Cumulus Primer(21)经由服务器的发布/订阅流程的关键点

    OpenRTMFP/Cumulus Primer(21)经由服务器的发布/订阅流程的关键点 作者:柳大·Poechant(钟超 Michael) 博客:Blog.csdn.net/poechant 邮 ...

  6. Redis中使用Java代码的方式实现发布订阅流程

    场景 Redis中的发布与订阅的概念与以命令行的方式实现发布订阅举例: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/105042 ...

  7. 12.源码阅读(app启动流程-android api 26)

    activity的启动流程之前已经通过源码了解了,那么app的启动流程是怎样的,从我们按下app的图标,到应用启动起来显示出画面,中间都经历了什么? 安卓是基于java的,所以和java有一定的相似性 ...

  8. [Postman]排除API请求(9)

    可能存在API无法运行或出现意外行为的情况.如果您没有收到任何回复,邮递员将显示有关连接服务器时出错的消息. 有关错误可能原因的更多详细信息,请打开Postman Console.它有关于故障的详细信 ...

  9. promise的状态以及api介绍_前端 api 请求缓存

    作者:wsafight https://github.com/wsafight/personBlog/issues/2 web开发时,性能都是必不可少的话题.对于webpack打包的单页面应用程序而言 ...

  10. postman跨域测试_安装使用Hoppscotch构建API请求访问与测试

    什么是API请求构建工具 在移动互联网时代,面向多端开发成为主流,需要向用户提供如:安卓App.苹果App.WAP.小程序.Web网页等等多种应用入口,这些入口称为前端.而为不同前端提供数据和业务信息 ...

最新文章

  1. PAT甲级1145 Hashing - Average Search Time:[C++题解]哈希表、哈希表开放寻址法、二次探测法、求平均查找次数
  2. Hibernate中的HQL的基本常用小例子,单表查询与多表查询
  3. Python线程指南 ---转自 http://www.cnblogs.com/huxi/archive/2010/06/26/1765808.html
  4. C#LeetCode刷题之#100-相同的树(Same Tree)
  5. MongoDB初探系列之二:认识MongoDB提供的一些经常使用工具
  6. 华为关联公司哈勃投资晟芯网络 持股10%
  7. 08-03 性能测试--数据准备与基准场景设
  8. mysql55条_mysql学习笔记一
  9. 《网络攻防》第五周作业
  10. php创建游戏房间思路,用Swoole来写个联机对战游戏呀!(八)创建游戏房间
  11. flask 接收文件
  12. redis集群原理及搭建
  13. 【笔记】一些Attention 方面的网络
  14. fastlane 上传到蒲公英和Fir 配置
  15. java爬虫写一个百度图片下载器
  16. idea配置Camunda Modeler
  17. 2019年十大网络流行语,你了解几个?
  18. 如何去除ie的select下拉框箭头图标
  19. 千里之行始于足下 | 开篇 - 增长极客
  20. JAVASCRIPT中THIS指的是什么?

热门文章

  1. websocket与下位机通过netty方式通信传输行为信息
  2. 3000个最常用的英语单词
  3. 判断闰年简单逻辑运算符
  4. 高德地图Amap绘制路线首尾相连问题
  5. 《跨境电商 —— 阿里巴巴速卖通实操全攻略》一一2.2 发布你的第一个产品...
  6. 2018年俄罗斯世界杯之Java数据爬虫(一)
  7. c语言mooc gps数据处理的数据_利用智能手机GPS测量地球半径
  8. 接触式IC卡和非接触式IC卡有什么区别?
  9. 蜂鸣器播放天空之城详细解析
  10. 金融数据分析(十三)投资组合问题