贝宝订阅设置

But*_*ess 4 html git curl paypal

我正在尝试使用curl和im设置我的三个订阅,以确保值正确。尝试执行请求并获得响应,但是我的卷曲没有完全起作用。

https://developer.paypal.com/docs/api/subscriptions/v1/#plans_create

我的意图:

  • 3种计划可供选择:精英(149 PHP /月),高级(349 PHP /月),豪华(549 PHP /月)

  • 1个月是30天,如贝宝所说

  • id希望将其设置为每月自动更新,直到客户选择取消它为止。

  • 一次只有一个处于活动状态,如果用户在运行中选择了三个中的另一个,则将自动停止向他们收费,并向他们收取新的费用。(例如:目前为Elite149,一旦选择,订阅和续订将更改为549luxury)。

    curl -v -X POST https://api.sandbox.paypal.com/v1/billing/plans \
     -H "Content-Type: application/json" \
     -H "Authorization: Basic account_clientid:account_secretcode" \
     -H "PayPal-Request-Id: EPL-25012019-001" \
     -d '{
       "product_id": "MWC-2019EPL",
       "name": "My White Card Subscription Plans",
       "description": "MyWhiteCard Membership Levels",
       "status": "ACTIVE",
    
       "billing_cycles": [
         {
           "frequency": {
             "interval_unit": "MONTH",
             "interval_count": 1
           },
           "tenure_type": "REGULAR",
           "sequence": 1,
           "total_cycles": 999,
           "pricing_scheme": {
             "fixed_price": {
               "value": "149",
               "currency_code": "PHP"
             }
           }
         },
         {
           "frequency": {
             "interval_unit": "MONTH",
             "interval_count": 1
           },
           "tenure_type": "REGULAR",
           "sequence": 2,
           "total_cycles": 999,
           "pricing_scheme": {
             "fixed_price": {
               "value": "349",
               "currency_code": "PHP"
             }
           }
         },
         {
           "frequency": {
             "interval_unit": "MONTH",
             "interval_count": 1
           },
           "tenure_type": "REGULAR",
           "sequence": 3,
           "total_cycles": 999,
           "pricing_scheme": {
             "fixed_price": {
               "value": "549",
               "currency_code": "PHP"
             }
           }
         }
       ],
    
       "payment_preferences": {
         "auto_bill_outstanding": true,
         "setup_fee": {
           "value": "0",
           "currency_code": "PHP"
          },
         "setup_fee_failure_action": "CONTINUE",
         "payment_failure_threshold": 3
       },
       "taxes": {
         "percentage": "10",
         "inclusive": false
       }
     }'
    
    Run Code Online (Sandbox Code Playgroud)
  • 我刚拿出我帐户的client_id:secret

  • 使用实时凭证

生活

我的问题和疑虑:

  1. 在访问令牌中,是否需要放入“ access_token $ production $”,然后输入给出的代码?
  2. 我可以手动创建Paypal请求ID和产品ID吗?
  3. 计费周期是否全部在同一命令上,还是我必须触发三遍?
  4. 如果客户订阅,安装费是收费吗?我首先假设是这种情况,并将其设置为0。
  5. 我的意图是让每月订阅(30天)自动续订,直到用户取消订阅为止。我将示例设置为12,但"total_cycles": NEVER输入正确吗?
  6. 我不确定税收部分如何运作,为什么我要修改它呢?

其他问题:

  1. 该文档没有显示链接的实时等效https://api.sandbox.paypal.com/v1/billing/plans内容,仅仅是https://api.live.paypal.com/v1/billing/plans吗?
  2. 我试图使用git bash和curl添加上述代码,但在运行时它显示 1008{"error":"invalid_client","error_description":"Client credentials are missing"}
  3. 我是否尝试在Git bash中运行curl代码,而不更改目录?我只是启动git并在此处运行curl:

1个

任何帮助将不胜感激。我只是确保一切都是必需的,因为这三个订阅将转到实时网站。我必须确定一次只能运行一个订阅。

更新:我试图做到这一点curl -v -X POST https://api.production.paypal.com/v1/billing/plans,这也不起作用。

更新:有人可以显示一个有效的curl示例请求示例吗?

更新:在,请注意-H "Authorization: Basic account_clientid:account_secretcode",由于我不能公开展示它,所以我在那里取出了ID码。我放在那里的一个例子是

-H "Authorization: Basic JAKRc85nJy2eMLq3aIV:01PvLC934xMAwLHqU4JqA89as4N"
Run Code Online (Sandbox Code Playgroud)

更新我读了到目前为止的答案后,尝试在git中运行curl,仍然以某种方式仍然出现错误。我确保api位于api.paypal.com中,并且客户端ID和密钥ID是实时版本。

curl -v -X POST https://api.paypal.com/v1/billing/plans \
-H "Content-Type: application/json" \
-H "Authorization: Basic AR7nnwwotKOt4YdcGHZc0P2RVsRT67_Gf2hyrKyDl3ZgCKsikeKbXdQ9Fj-_21v4RulkXsgAASe7_VKv:EKwsdDo1ehtOOOSZCGMu1C9903qr4cQOOZI2rgFYhvugh2SO1V04q9MWY9SXwa352zBt1mGglLuWgR4D" \
-H "PayPal-Request-Id: MWC-2501E-001" \
-d '{
  "product_id": "ELITE-2501149",
  "name": "Elite Membership",
  "description": "Elite Membership Monthly Plan",
  "status": "ACTIVE",
  "billing_cycles": [
    {
      "frequency": {
        "interval_unit": "MONTH",
        "interval_count": 1
      },
      "tenure_type": "REGULAR",
      "sequence": 1,
      "total_cycles": 999,
      "pricing_scheme": {
        "fixed_price": {
          "value": "149",
          "currency_code": "PHP"
        }
      }
    }
  ],
  "payment_preferences": {
    "auto_bill_outstanding": true,
    "setup_fee": {
      "value": "0",
      "currency_code": "PHP"
    },
    "setup_fee_failure_action": "CONTINUE",
    "payment_failure_threshold": 3
  },
  "taxes": {
    "percentage": "12",
    "inclusive": false
  }
}'
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

100   921  100   159  100   762     99    478  0:00:01  0:00:01 --:--:--   578{"name":"INTERNAL_SERVICE_ERROR","debug_id":"1975a4fe9232","links":[{"href":"https://developer.paypal.com/docs/api/overview/#error","rel":"information_link"}]}
Run Code Online (Sandbox Code Playgroud)

2

更新

阅读所有链接并按照步骤操作,我认为这是剩下的唯一问题

{"name":"NOT_AUTHORIZED","message":"Authorization failed due to insufficient permissions.","debug_id":"484a9d7460069","details":[{"issue":"PERMISSION_DENIED","description":"You do not have permission to access or perform operations on this resource"}],"links":[{"href":"https://developer.paypal.com/docs/api/v1/billing/subscriptions#NOT_AUTHORIZED","rel":"information_link","method":"GET"}]}
Run Code Online (Sandbox Code Playgroud)

我检查了Paypal帮助中心,看来我需要Paypal本身的人来授权我的REST。

Tho*_*ate 6

问题1-在访问令牌中,是否需要放入"access_token$production$",然后输入给出的代码?

在您的示例中,您使用的是基本身份验证方案。您可以使用:

-H "Authorization: Bearer Access-Token" \
Run Code Online (Sandbox Code Playgroud)

但是要回答您的问题,不,您不需要专门包括access_token文本字符串。


问题2-我可以手动创建Paypal请求ID和产品ID吗?

是的,使用了请求ID,因此您可以重试API调用。 https://developer.paypal.com/docs/api/reference/api-requests/#http-request-headers

但是 product_id应该来自https://developer.paypal.com/docs/api/catalog-products/v1/#products_create

所以您首先需要做。请参阅此答案底部的更新。


问题3-计费周期是否全部在同一命令上,还是我必须触发三遍?

您将需要调用每个计划配置来创建三个订阅计划。基本上,在API doc示例中,它向您显示了它为试用期创建的结算周期以及它自己的常规计划。它还说:

https://developer.paypal.com/docs/api/subscriptions/v1/#plans_create

试用和常规计费的一系列计费周期。一个计划可以有多个计费周期,但只能有一个常规计费周期。

您还提到了:

一次只有一个处于活动状态,如果用户在运行中选择了三个中的另一个,则将自动停止向他们收费,并向他们收取新的费用。(例如:目前为Elite149,一旦选择,订阅和续订将更改为549luxury)。

您需要最终以编程方式执行此操作。

如果用户取消订阅计划,则您需要通过以下方式取消其订阅:https : //developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_cancel

如果您打算更改订阅,则首先需要取消现有订阅,然后使用以下命令订阅用户新的订阅计划:https : //developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_create


问题4-如果客户订阅,安装费是否要收费?我首先假设是这种情况,并将其设置为0。

设置费只是您可以向客户收取的附加费。您需要通过将设置费用值设置为0来手动声明此选项或使其成为可选 。https://developer.paypal.com/docs/api/subscriptions/v1/#definition-payment_preferences


问题5-我的意图是使每月订阅(30天)自动续订,直到用户取消订阅为止。我将示例设置为12,但是会出现“ total_cycles”:永远不是正确的输入吗?

最大值为999。它仅接受整数。 https://developer.paypal.com/docs/api/subscriptions/v1/#definition-billing_cycle


问题6-我不确定税项的运作方式,为什么我要修改它?

由于税收取决于您所在的地区或国家。您使用PHP或菲律宾比索作为货币,因此可能意味着您在菲律宾。您需要将税率设置为12%,因为这是用于对商品和服务征税的方法

资料来源:https : //www.full-suite.com/blog/whats-difference-vat-percentage-tax/

贝宝税对象定义:https//developer.paypal.com/docs/api/subscriptions/v1/#definition-taxes


问题7-该文档没有显示链接的实时等效https://api.sandbox.paypal.com/v1/billing/plans内容,仅仅是https://api.live.paypal.com/v1/billing/plans?

您可以在此处找到地址:https : //developer.paypal.com/docs/api/overview/#get-an-access-token

它说:

沙箱:https//api.sandbox.paypal.com

直播:https//api.paypal.com


Q8-我尝试使用git bash和curl添加上述代码,但在运行时显示 1008{"error":"invalid_client","error_description":"Client credentials are missing"}

这可能意味着您正在传递无效的凭据。确保您使用以下信息通过标头发送它们

Bearer <Access-Token>
Run Code Online (Sandbox Code Playgroud)

要么

Basic <client_id>:<secret>
Run Code Online (Sandbox Code Playgroud)

并验证您的字符串输入是否代表实际值。此外,请确保您使用的是沙盒凭据,因为它与生产版本或实时https://developer.paypal.com/docs/classic/lifecycle/sb-create-accounts/#create-a-sandbox具有不同的凭据集 -帐户


问题9-我是否尝试在Git bash中运行curl代码而不更改目录?我只是启动git并在此处运行curl:

不要将Git Bash解释为命令行界面,它只是项目的版本控制工具。但是,用于Windows的Git软件包具有内置组件,这些组件应允许您运行CURL。由于Curl安装在Bin目录中,因此您应该可以在任何目录中运行它

您可以使用不同的工具来运行curl命令,最好使用脚本或编程语言(如PHP,Phyton,Java或什至Node)运行,该脚本对curl具有更好的支持,并应使您可以更简洁地编写和测试程序。


更新

我对此进行了进一步调查。我想与您分享,因为您似乎还没有阅读完整的API文档。

您正在创建订阅计划,但是首先需要创建产品。(我已经更新了对问题2的回答)

首先-创建产品 这将创建创建订阅计划所需的product_id。 https://developer.paypal.com/docs/api/catalog-products/v1/#products_create 要返回并检查创建的产品以获取其产品ID,可以使用以下api调用: https:// developer。 paypal.com/docs/api/catalog-products/v1/#products_list

然后-创建订阅计划 创建产品之后,可以为其创建多个订阅计划。 https://developer.paypal.com/docs/api/subscriptions/v1/#plans_create

展望未来,如果您要订阅/取消订阅用户,则需要按照我对问题3的回答,以编程方式进行操作。

关于凭证无效的问题

尝试先获取访问令牌。为此,请按照以下说明进行操作:https : //developer.paypal.com/docs/api/get-an-access-token-curl/

curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
   -H "Accept: application/json" \
   -H "Accept-Language: en_US" \
   -u "client_id:secret" \
   -d "grant_type=client_credentials"
Run Code Online (Sandbox Code Playgroud)

然后获取返回的令牌,并使用该令牌进行api调用。它将返回如下内容:

{
  "scope": "scope",
  "access_token": "Access-Token",
  "token_type": "Bearer",
  "app_id": "APP-80W284485P519543T",
  "expires_in": 31349,
  "nonce": "nonce"
}
Run Code Online (Sandbox Code Playgroud)

这里是你的代码,我用来测试的修改版本,发现它使用Bearer token代替basic client_id:secret

curl -v -X POST https://api.sandbox.paypal.com/v1/billing/plans \
-H "Content-Type: application/json" \
-H "Authorization: Bearer Access-Token-goeshere" \
-H "PayPal-Request-Id: MWC-helper" \
-d '{
  "product_id": "PROD-ELITETEST", //<---- this product id should be taken from the real product id when you created your product through product_create api.
  "name": "Elite Membership",
  "description": "Elite Membership Monthly Plan",
  "status": "ACTIVE",
  "billing_cycles": [
    {
      "frequency": {
        "interval_unit": "MONTH",
        "interval_count": 1
      },
      "tenure_type": "REGULAR",
      "sequence": 1,
      "total_cycles": 999,
      "pricing_scheme": {
        "fixed_price": {
          "value": "149",
          "currency_code": "PHP"
        }
      }
    }
  ],
  "payment_preferences": {
    "auto_bill_outstanding": true,
    "setup_fee": {
      "value": "0",
      "currency_code": "PHP"
    },
    "setup_fee_failure_action": "CONTINUE",
    "payment_failure_threshold": 3
  },
  "taxes": {
    "percentage": "12",
    "inclusive": false
  }
}'
Run Code Online (Sandbox Code Playgroud)

它为我工作!