在 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 并删除存储的CustomerPaymentMethod 我已经将响应代码映射到已撤销的计费协议状态?

我已经阅读了有关使用 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的主要内容,如果未能解决你的问题,请参考以下文章

Paypal Rest API - 即时支付生命周期

如何在 c# 中使用 rest api 进行 paypal 卡存在(刷卡)付款?

使用 PayPal REST API 进行定期付款

Paypal REST API - 在 RedirectUrls() 中发送 GET 标头

REST api 中的 Paypal 自适应支付

PayPal Rest API for Payments 在沙箱中返回 NULL