html - Paypal 订阅设置

标签 html git curl paypal

我正在尝试使用curl和im设置我的三个订阅,以确保这些值是正确的。尝试执行请求并获得响应,但我的curl无法正常工作。
https://developer.paypal.com/docs/api/subscriptions/v1/#plans_create
我的意图:
3个计划可供选择:Elite(149 php/月)、Premium(349 php/月)、Luxury(549 php/月)
正如贝宝所说,一个月就是30天。
我想将其设置为每月自动续订,直到客户选择取消它。
一次只有一个是活动的,如果用户在一个运行时选择了三个中的另一个,他们将自动停止计费,并将用所选的新的收费。(例如:目前的Elite149,一旦选择,订阅和续订将更改为549奢侈品)。

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
   }
 }'

我刚取出我账户的客户账号:secret
正在使用实时凭据
live
我的问题和关切:
在访问令牌中,是否需要放置“访问令牌$production$”,然后输入给定的代码?
我可以手动创建PayPal请求ID和产品ID吗?
计费周期是否都在同一个命令上?还是必须触发三次?
如果客户订阅,安装费是收费吗?我首先假设是这样,然后将其设置为0。
我的目的是让每月订阅(30天)自动续订,直到用户取消订阅。我将示例设置为12,但"total_cycles": NEVER是否是正确的输入?
我不知道税收部分是如何运作的,为什么我要修改它?
其他问题:
文档没有显示与链接https://api.sandbox.paypal.com/v1/billing/plans等效的实时链接,只是简单地https://api.live.paypal.com/v1/billing/plans
我试图使用git bash和curl添加上面的代码,但在运行时它显示1008{"error":"invalid_client","error_description":"Client credentials are missing"}
我是否尝试在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",为了清楚起见,我拿出了我的身份证代码,因为我不能只在公共场合显示它。我举了一个例子
-H "Authorization: Basic JAKRc85nJy2eMLq3aIV:01PvLC934xMAwLHqU4JqA89as4N"

更新我试图在git中运行这个curl,在阅读完答案之后,不知怎么的,我仍然得到并出错了。我确保api在api.paypal.com中,客户端id和secret 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
  }
}'

我得到这个错误:
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"}]}

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"}]}

我查看了贝宝帮助中心,似乎我需要贝宝自己的人来授权我休息。

最佳答案

Q1-在访问令牌中,我是否需要放置"access_token$production$"然后输入给定的代码?
在您的示例中,您使用的是基本身份验证方案。您可以使用:

-H "Authorization: Bearer Access-Token" \

但要回答您的问题,不需要特别包括access_token文本字符串。
问题2-我可以手动创建PayPal请求ID和产品ID吗?
是的,使用了请求id,因此您可以重试您的api调用。
https://developer.paypal.com/docs/api/reference/api-requests/#http-request-headers
但是,产品ID应该来自https://developer.paypal.com/docs/api/catalog-products/v1/#products_create
所以你得先做。请参阅此答案底部的更新。
问题3-计费周期是否都在同一个命令上,或者我必须触发这三次?
您需要调用每个计划配置来创建三个订阅计划。基本上,在api文档示例中,它向您展示了它有一个为试用期创建的计费周期,以及它自己的常规计划。它还说:
https://developer.paypal.com/docs/api/subscriptions/v1/#plans_create
用于试用和定期计费的一系列计费周期。计划可以
有多个计费周期,但只有一个常规计费周期。
你还提到:
如果用户选择了
三个当一个运行时,它们将自动停止
收费,并将收取新的一个选择。(例如:目前
Elite149,订阅和续费将改为549豪华一次
选择)。
你需要以编程的方式完成这项工作。
如果用户取消了对计划的订阅,则需要通过调用以下命令取消其订阅:
https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_cancel
如果您计划更改订阅,则首先需要取消现有的订阅,然后使用https://developer.paypal.com/docs/api/subscriptions/v1/#subscriptions_create订阅用户订阅新订阅计划。
Q4-如果客户订阅,安装费是收费吗?我首先假设是这样,然后将其设置为0。
安装费只是一个附加费,你可以向你的客户收取。您需要手动声明此项,或通过设置安装费值0使其成为可选项。
https://developer.paypal.com/docs/api/subscriptions/v1/#definition-payment_preferences
我的目的是让每月订阅(30天)自动续费,直到用户退订。我把我的例子设为12,但是“总周期”:永远不是正确的输入吗?
最大值为999。它只接受整数。
https://developer.paypal.com/docs/api/subscriptions/v1/#definition-billing_cycle
问6:我不确定税收部分是如何运作的,为什么我要修改它?
因为税收取决于你在哪个地区或国家。您使用的是菲律宾比索或菲律宾比索作为货币,因此可能意味着您在菲律宾。你需要把你的税率设定为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>


Basic <client_id>:<secret>

并验证字符串输入是否表示实际值。
另外,请确保您使用的是沙盒凭据,因为它具有与生产或现场不同的凭据集
https://developer.paypal.com/docs/classic/lifecycle/sb-create-accounts/#create-a-sandbox-account
q9-我是否尝试在git bash中运行curl代码而不更改我的目录?我只要启动git并在这里运行curl:
不要将git bash误解为命令行界面,它只是项目的版本控制工具。但是,用于windows的git包有内置组件,可以让您运行curl。因为curl安装在bin目录中,所以您应该能够在任何目录上运行它。
您可以使用不同的工具运行curl命令,理想情况下,您可以使用脚本或编程语言(如php、phton、java甚至node)来运行curl命令,这些语言对curl有更好的支持,并且应该允许您以更简洁的方式更容易地编写和测试程序。
更新
我已经进一步调查过了。我想我会和你分享的,因为看起来你还没有读过整个api文档。
您正在创建订阅计划,但需要先创建产品。(我更新了对问题2的回答)
首先-创建产品
这将创建创建订阅计划所需的产品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"

然后获取返回的令牌并使用它进行api调用。
它将返回如下内容:
{
  "scope": "scope",
  "access_token": "Access-Token",
  "token_type": "Bearer",
  "app_id": "APP-80W284485P519543T",
  "expires_in": 31349,
  "nonce": "nonce"
}

这里是我用来测试的代码的修改版本,注意它使用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
  }
}'

它对我有用!

关于html - Paypal 订阅设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57178999/

相关文章:

git - 为什么父级存储在 git Notes 中?

ios - 三位开发者如何使用Xcode8和Github进行项目协作?

c++ - easy_curl_perform 返回错误 26(写入错误)

javascript - 用于切换 css 动画暂停的按钮 |运行播放状态

html - 带渐变外边框的按钮

search - 如何通过 HTML5 中搜索框的第 508 节?

git - Jenkins 无法提取 20 GB 的 git 存储库

linux - cURL 不发送文件数据

bash - 是否可以将 linux 管道中的值放入 curl 查询字符串参数中?

html - 在另一个中心 div