• paypal订阅流程及api请求


    1、paypal后台创建产品及计划

     paypal订阅地址:

    https://www.paypal.com/merchantapps/appcenter/acceptpayments/subscriptions

     点击进去之后可创建产品及计划(此处创建的产品及计划为正式环境计划,沙箱的计划在此处不会显示)

    可根据流程可创建产品及计划

    也可根据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

    请求例子:

    1. curl -v -X POST "https://api-m.sandbox.paypal.com/v1/oauth2/token" \
    2. -u ":" \
    3. -H "Content-Type: application/x-www-form-urlencoded" \
    4. -d "grant_type=client_credentials"

     返回结果:

    1. {
    2. "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",
    3. "access_token": "A21AAFEpH4PsADK7qSS7pSRsgzfENtu-Q1ysgEDVDESseMHBYXVJYE8ovjj68elIDy8nF26AwPhfXTIeWAZHSLIsQkSYz9ifg",
    4. "token_type": "Bearer",
    5. "app_id": "APP-80W284485P519543T",
    6. "expires_in": 31668,
    7. "nonce": "2020-04-03T15:35:36ZaYZlGvEkV4yVSz8g6bAKFoGSEzuy3CQcz3ljhibkOHg"
    8. }

    2. 创建产品

    请求例子:

    1. curl -v -X POST https://api-m.sandbox.paypal.com/v1/catalogs/products \
    2. -H "Content-Type: application/json" \
    3. -H "Authorization: Bearer Access-Token" \
    4. -H "PayPal-Request-Id: PRODUCT-18062020-001" \
    5. -d '{
    6. "name": "Video Streaming Service",
    7. "description": "Video streaming service",
    8. "type": "SERVICE",
    9. "category": "SOFTWARE",
    10. "image_url": "https://example.com/streaming.jpg",
    11. "home_url": "https://example.com/home"
    12. }'

    name: 产品名称
    description: 产品说明
    type: 产品类型。指示产品是实物商品还是数字商品,还是服务。PHYSICAL. 实物商品;DIGITAL. 数码商品;SERVICE. 代表服务的产品
    category: 产品类别
    image_url: 产品logo 
    home_url: 产品主站地址 https://www.baidu.com

    返回结果:

    1. {
    2. "id": "PROD-XYAB12ABSB7868434", ## 产品id 后边会用到
    3. "name": "Video Streaming Service",
    4. "description": "Video streaming service",
    5. "type": "SERVICE",
    6. "category": "SOFTWARE",
    7. "image_url": "https://example.com/streaming.jpg",
    8. "home_url": "https://example.com/home",
    9. "create_time": "2020-01-10T21:20:49Z",
    10. "update_time": "2020-01-10T21:20:49Z",
    11. "links": [
    12. {
    13. "href": "https://api-m.paypal.com/v1/catalogs/products/72255d4849af8ed6e0df1173",
    14. "rel": "self",
    15. "method": "GET"
    16. },
    17. {
    18. "href": "https://api-m.paypal.com/v1/catalogs/products/72255d4849af8ed6e0df1173",
    19. "rel": "edit",
    20. "method": "PATCH"
    21. }
    22. ]
    23. }

    3. 创建计划

    请求地址: 

    1. https://api-m.sandbox.paypal.com/v1/billing/plans \
    2. -H "Content-Type: application/json" \
    3. -H "Authorization: Bearer Access-Token" \
    4. -H "PayPal-Request-Id: PLAN-18062019-001" \
    5. -d '{
    6. "product_id": "PROD-XXCD1234QWER65782",
    7. "name": "Video Streaming Service Plan",
    8. "description": "Video Streaming Service basic plan",
    9. "status": "ACTIVE",
    10. "billing_cycles": [
    11. {
    12. "frequency": {
    13. "interval_unit": "MONTH",
    14. "interval_count": 1
    15. },
    16. "tenure_type": "REGULAR",
    17. "sequence": 1,
    18. "total_cycles": 12,
    19. "pricing_scheme": {
    20. "fixed_price": {
    21. "value": "6",
    22. "currency_code": "USD"
    23. }
    24. }
    25. }
    26. ],
    27. "payment_preferences": {
    28. "auto_bill_outstanding": true,
    29. "setup_fee": {
    30. "value": "6",
    31. "currency_code": "USD"
    32. },
    33. "setup_fee_failure_action": "CONTINUE",
    34. "payment_failure_threshold": 3
    35. },
    36. "taxes": {
    37. "percentage": "0",
    38. "inclusive": false
    39. }
    40. }

    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:税款是否已包含在帐单金额中 

    返回结果:

    1. {
    2. "id": "P-2DN49707R1221304MMLL5H7A",
    3. "product_id": "PROD-36834256SL5660309",
    4. "name": "Video Streaming Service Plan",
    5. "status": "ACTIVE",
    6. "description": "Video Streaming Service basic plan",
    7. "usage_type": "LICENSED",
    8. "billing_cycles": [
    9. {
    10. "pricing_scheme": {
    11. "version": 1,
    12. "fixed_price": {
    13. "currency_code": "USD",
    14. "value": "6.0"
    15. },
    16. "create_time": "2022-07-20T10:07:56Z",
    17. "update_time": "2022-07-20T10:07:56Z"
    18. },
    19. "frequency": {
    20. "interval_unit": "MONTH",
    21. "interval_count": 1
    22. },
    23. "tenure_type": "REGULAR",
    24. "sequence": 1,
    25. "total_cycles": 12
    26. }
    27. ],
    28. "payment_preferences": {
    29. "service_type": "PREPAID",
    30. "auto_bill_outstanding": true,
    31. "setup_fee": {
    32. "currency_code": "USD",
    33. "value": "6.0"
    34. },
    35. "setup_fee_failure_action": "CONTINUE",
    36. "payment_failure_threshold": 3
    37. },
    38. "taxes": {
    39. "percentage": "0.0",
    40. "inclusive": false
    41. },
    42. "quantity_supported": false,
    43. "create_time": "2022-07-20T10:07:56Z",
    44. "update_time": "2022-07-20T10:07:56Z",
    45. "links": [
    46. {
    47. "href": "https://api.sandbox.paypal.com/v1/billing/plans/P-2DN49707R1221304MMLL5H7A",
    48. "rel": "self",
    49. "method": "GET",
    50. "encType": "application/json"
    51. },
    52. {
    53. "href": "https://api.sandbox.paypal.com/v1/billing/plans/P-2DN49707R1221304MMLL5H7A",
    54. "rel": "edit",
    55. "method": "PATCH",
    56. "encType": "application/json"
    57. },
    58. {
    59. "href": "https://api.sandbox.paypal.com/v1/billing/plans/P-2DN49707R1221304MMLL5H7A/deactivate",
    60. "rel": "self",
    61. "method": "POST",
    62. "encType": "application/json"
    63. }
    64. ]
    65. }

    4. 计划详情

    请求地址: 

    1. curl -v -X GET https://api-m.sandbox.paypal.com/v1/billing/plans/P-5ML4271244454362WXNWU5NQ \
    2. -H "Content-Type: application/json" \
    3. -H "Authorization: Bearer Access-Token"

    5. 创建订阅

    请求地址: 

    1. curl -v -X POST https://api-m.sandbox.paypal.com/v1/billing/subscriptions \
    2. -H "Content-Type: application/json" \
    3. -H "Authorization: Bearer " \
    4. -H "PayPal-Request-Id: SUBSCRIPTION-21092019-001" \
    5. -d '{
    6. "plan_id": "P-5ML4271244454362WXNWU5NQ",
    7. "start_time": "2022-07-21T00:00:00Z",
    8. "quantity": "20",
    9. "shipping_amount": {
    10. "currency_code": "USD",
    11. "value": "10.00"
    12. },
    13. "application_context": {
    14. "brand_name": "walmart",
    15. "locale": "en-US",
    16. "shipping_preference": "SET_PROVIDED_ADDRESS",
    17. "user_action": "SUBSCRIBE_NOW",
    18. "payment_method": {
    19. "payer_selected": "PAYPAL",
    20. "payee_preferred": "IMMEDIATE_PAYMENT_REQUIRED"
    21. },
    22. "return_url": "https://example.com/returnUrl",
    23. "cancel_url": "https://example.com/cancelUrl"
    24. }
    25. }'

     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: 支付取消地址

    返回结果:

    1. {
    2. "status": "APPROVAL_PENDING",
    3. "id": "I-BW452GLLEP1G",
    4. "create_time": "2022-07-20T12:04:00Z",
    5. "links": [
    6. {
    7. "href": "https://www.paypal.com/webapps/billing/subscriptions?ba_token=BA-2M539689T3856352J",
    8. "rel": "approve",
    9. "method": "GET"
    10. },
    11. {
    12. "href": "https://api.paypal.com/v1/billing/subscriptions/I-BW452GLLEP1G",
    13. "rel": "edit",
    14. "method": "PATCH"
    15. },
    16. {
    17. "href": "https://api.paypal.com/v1/billing/subscriptions/I-BW452GLLEP1G",
    18. "rel": "self",
    19. "method": "GET"
    20. }
    21. ]
    22. }

    根据获取的结果选择"links"下第一个"href"去支付订阅

    6. 订阅详情

    请求地址: 

    1. curl -v -X GET https://api-m.sandbox.paypal.com/v1/billing/subscriptions/I-BW452GLLEP1G \
    2. -H "Content-Type: application/json" \
    3. -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: 订阅已激活

    8.用户取消订阅

  • 相关阅读:
    毅速课堂:3D打印随形水路设计应注意什么?
    【linux】日常用的linux命令总结
    雅思 《九分达人》阅读练习(二)
    PAM从入门到精通(十三)
    Git 为文件添加执行权限
    通信协议---串口、RS232、RS485
    Docker---cgroups资源限制
    Allegro172版本DFM规则之DFA spacing
    【自然语言处理(NLP)实战】LSTM网络实现中文文本情感分析(手把手与教学超详细)
    【MySQL】数据类型
  • 原文地址:https://blog.csdn.net/weixin_39461487/article/details/125900163