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: 订阅已激活

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在Android应用中接入PayPal订阅功能,可以按照以下步骤进行: 1. 集成PayPal SDK:首先,你需要在你的Android应用中集成PayPal SDK。你可以从PayPal开发者网站获取最新的SDK,并按照文档进行集成。 2. 创建PayPal订阅计划:在PayPal开发者控制台上创建一个订阅计划。你需要提供相关的订阅信息,如价格、订阅周期、订阅名称等。 3. 获取客户端ID:在PayPal开发者控制台上创建一个应用,然后获取一个客户端ID。这个客户端ID将用于在Android应用中进行身份验证和支付操作。 4. 在Android应用中配置支付信息:在你的Android应用中配置PayPal支付信息,包括客户端ID和其他相关设置。这将确保你的应用能够与PayPal进行通信。 5. 调起PayPal支付界面:当用户选择订阅或购买某项服务时,你可以通过调用PayPal SDK提供的接口,传递订阅信息,调起PayPal支付界面供用户进行支付操作。用户可以使用PayPal账号或信用卡完成支付过程。 6. 处理支付结果回调:用户完成支付后,PayPal会将支付结果返回给你的Android应用。你需要在应用中接收到回调通知后,验证支付结果的真实性,并更新用户的订阅状态或购买状态。 7. 自动续订处理:PayPal会自动处理订阅的续订操作,你无需手动处理。当订阅周期即将结束时,PayPal会自动向用户收取续订费用,并发送回调通知给你的应用。 需要注意的是,接入PayPal订阅功能需要你在服务器端进行管理和处理,通过与PayPal的接口交互实现相关功能。同时,你需要遵守PayPal的相关规定和合规要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值