Braintree BillingAgreement ID Lookup in PayPal REST API



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

我在PayPal创建了一个沙盒帐户和一个商家沙盒帐户。接下来,我使用刚刚创建的商家创建了一个Braintree AccessToken。在PayPal中创建Braintree访问令牌后,我注意到商家帐户的REST APP是自动创建的。在自动创建的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创建的交易/付款/订单的任何信息。

有没有办法检查BraintreeCustomerPaymentMethod中的billingAgreementId是否仍然有效?或者,我是否必须检查失败CheckOut的响应代码并删除已Customer的存储PaymentMethod,我的响应代码已映射到已吊销的计费协议状态?

我已经读过关于使用 webhook 来实现这一点的信息,但另一方面,我也读到PayPal webhook 并不是很可靠。

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

但是如果你把它拼凑在一起,有一个URL,你可以尝试一个GET请求,一个标准的REST http头:"授权:持有者{token}">

https://api.sandbox.paypal.com/v1/billing-agreements/agreements/B-XXXXXXXXXXXXX

扬子晚报


另一种解决方案是尝试旧的BAUpdate API:如何检查计费协议是否有效或取消?

(我并不是认真地建议这样做,但它是一个旧的经典 NVP/SOAP PayPal API,如果出于某种奇怪的原因您想尝试一下,它在技术上可能仍然存在(

最新更新