在 PayPal REST API 中查找 Braintree 计费协议 ID
Posted
技术标签:
【中文标题】在 PayPal REST API 中查找 Braintree 计费协议 ID【英文标题】:Braintree BillingAgreement ID Lookup in PayPal REST API 【发布时间】:2020-04-06 02:05:12 【问题描述】:我创建了一个 Java 应用程序,它使用 Braintree SDK 进行 PayPal 结帐流程。
我在 PayPal 创建了一个沙盒帐户以及一个商家沙盒帐户。接下来,我使用刚刚创建的商家创建了 Braintree AccessToken。在 PayPal 中创建 Braintree 访问令牌后,我注意到商家帐户的 REST 应用程序是自动创建的。在自动创建的REST APP
中,我激活了所有可能的选项。此外,我还存储了 ClientID 和 ClientSecret 以使用 PayPal REST API 生成 AccessToken。
在第一次付款期间,会为用户创建一个 Braintree 客户,并创建一个 为用户创建计费协议。现在无需再次输入用户的 PayPal 凭据即可收取所有进一步的付款。到目前为止,结帐流程没有任何问题。
现在我想实现一个功能来检查计费协议是否仍然有效,因为用户可能同时撤销了它。检查对应Customer
实例的PayPalAccount
类型的PaymentMethod
实例我看到一个名为billingAgreementId
的属性,它与用户的PayPal交易的计费协议id st相匹配,并进一步匹配存放在PayPal中的计费协议用户的帐户。 ID 以“B-
”和一些数字开头。
问题是我无法在 PayPal 中找到 REST API 方法,该方法允许我使用 PaymentMethod
实例的 billingAgreementId
来检查计费协议是否仍然有效。
我已经尝试过这里列出的 REST API 方法: https://developer.paypal.com/docs/api/payments.billing-agreements/v1/ 已弃用的一个和新的一个,但两者都不返回有关计费协议的信息。相反,我收到一个错误返回“配置文件 ID 无效”或类似的内容。
此外,billingAgreementId
的“B-
”模式似乎与 PayPal API 示例中使用的 ID 模式不匹配。
我还注意到:我无法使用 PayPal REST API 获取有关 Braintree 生成的 PayPal 交易/付款/订单的任何信息。 Braintree 是否在这里做一些不同的事情,以便使用 PayPal REST API 看不到这些交易/付款/订单?似乎无法从 PayPal REST API 中获取有关使用 Braintree 创建的交易/付款/订单的任何信息。
有没有办法检查 Braintree 中的 billingAgreementId
Customer
PaymentMethod
是否仍然有效?还是我必须检查失败的CheckOut
的ResponseCode 并删除存储的Customer
的PaymentMethod
我已经将响应代码映射到已撤销的计费协议状态?
我已经阅读了有关使用 webhook 实现此目的的信息,但另一方面,我还了解到 PayPal webhook 并不真正可靠。
【问题讨论】:
【参考方案1】:很多地方都没有记录,我认为目前引用它的少数几页之一是https://developer.paypal.com/docs/checkout/reference/upgrade-integration/
但是如果你把它拼凑起来,你可以尝试一个带有标准 REST http 标头的 GET 请求:“Authorization: Bearer token”
https://api.sandbox.paypal.com/v1/billing-agreements/agreements/B-XXXXXXXXXXXXX
YMMV
另一个解决方案是尝试旧的 BAUpdate API:How to check Billing Agreement is active or cancel?
(我并不是认真地建议这个,但它是一个古老的经典 NVP/SOAP PayPal API,如果出于某种奇怪的原因你想尝试它,它可能在技术上仍然存在)
【讨论】:
以上是关于在 PayPal REST API 中查找 Braintree 计费协议 ID的主要内容,如果未能解决你的问题,请参考以下文章
如何在 c# 中使用 rest api 进行 paypal 卡存在(刷卡)付款?