java - Paypal REST API 中的 Braintree 计费协议(protocol) ID 查找

标签 java rest paypal paypal-sandbox braintree

我创建了一个 Java 应用程序,它使用 Braintree SDK 进行 PayPal 结帐流程。

我已经在 PayPal 创建了一个沙盒账户和一个商家沙盒账户。接下来,我使用刚刚创建的商家创建了一个 Braintree AccessToken。在 PayPal 中创建 Braintree 访问 token 后,我注意到自动为商家帐户创建了一个 REST 应用程序。在自动创建的 REST APP 中,我已经激活了所有可能的选项。此外,我还存储了 ClientID 和 ClientSecret,以使用 PayPal REST API 生成 AccessToken。

在第一次付款期间,会为用户创建一个 Braintree Customer 和一个 为用户创建计费协议(protocol)。现在无需再次输入用户的 PayPal 凭据即可收取所有进一步的付款。到目前为止,结帐流程没有任何问题。

现在我想实现一个功能来检查计费协议(protocol)是否仍然有效,因为用户可能同时撤销了它。检查相应 Customer 实例的 PayPalAccount 类型的 PaymentMethod 实例,我看到一个名为 billingAgreementId 的属性,它与账单匹配agreement id st 用户的 PayPal 交易,进一步匹配用户 PayPal 账户中存入的计费协议(protocol)。 ID 以“B-”开头,然后是一些数字。

问题是我无法在 PayPal 中找到允许我使用 PaymentMethod 实例的 billingAgreementId 检查计费协议(protocol)是否有效的 REST API 方法是否仍然有效。

我已经尝试过此处列出的 REST API 方法: https://developer.paypal.com/docs/api/payments.billing-agreements/v1/ 已弃用的和新的,但两者都不返回有关计费协议(protocol)的信息。相反,我收到返回的错误“配置文件 ID 无效”或类似的错误。

此外,billingAgreementId 的“B-”模式似乎与 PayPal API 示例中使用的 ID 模式不匹配。

我还注意到:我无法使用 PayPal REST API 获取有关 Braintree 生成的 PayPal 交易/付款/订单的任何信息。 Braintree 是否在这里做了一些不同的事情,以便使用 PayPal REST API 看不到这些交易/付款/订单?似乎无法从 PayPal REST API 中获取有关使用 Braintree 创建的交易/付款/订单的任何信息。

有没有办法检查 Braintree Customer PaymentMethod 中的 billingAgreementId 是否仍然有效?或者我是否必须检查失败的 CheckOut 的 ResponseCode 并删除存储的 CustomerPaymentMethod 我已将响应代码映射到已撤销的结算协议(protocol)状态?

我读过有关通过使用 webhooks 实现此目的的文章,但另一方面我也读到过 PayPal webhooks 并不真正可靠。

最佳答案

很多地方都没有记录,我认为目前引用它的少数页面之一是 https://developer.paypal.com/docs/checkout/reference/upgrade-integration/

但是如果你把它拼凑起来,你可以尝试使用标准 REST http header “Authorization: Bearer {token}”的 GET 请求

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,如果出于某种奇怪的原因你想尝试它,它在技术上可能仍然存在)

关于java - Paypal REST API 中的 Braintree 计费协议(protocol) ID 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59308687/

相关文章:

ruby - 从另一个调用一个 Ruby 脚本

payment-gateway - 哪个 PayPal 集成用于后台 && 前端电子商务解决方案

java - 如何在打印机中打印带有图像作为 Logo 的账单,java

javascript - 没有响应正文的 OPTIONS 请求上的 Chrome 长 "Content Download"时间

validation - 使用队列时何时验证 paypal IPN?

linux - 多个脚本使休息调用干扰

ruby-on-rails - Rails 如何决定使用 PUT 或 POST 方法渲染表单?

java - AppEngine "Task size too large"异常

java - 从扩展可运行的类列表中删除项目是否会终止其线程?

java - 如何解决这个设计问题