我创建了一个 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 并删除存储的 Customer
的 PaymentMethod
我已将响应代码映射到已撤销的结算协议(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/