我创建了一个Java应用,该应用使用Braintree SDK进行PayPal的结帐流程。
我已经在贝宝(PayPal)和一个商人沙箱帐户中创建了一个沙箱帐户。接下来,我使用刚刚创建的商人创建了Braintree AccessToken。在PayPal中创建Braintree Access令牌后,我注意到为商家帐户自动创建了REST APP。在自动创建的REST APP
中,我激活了所有可能的选项。此外,我已经存储了ClientID和ClientSecret,以使用PayPal REST API生成AccessToken。
[第一次付款期间,将为该用户创建一个Braintree客户,为用户创建了一个计费协议。现在,无需支付用户的PayPal凭证就可以对所有其他付款进行收费。到目前为止,该结帐流程没有任何问题。
现在,我想实现一个功能来检查计费协议是否仍然有效,因为用户可能已同时撤消了该协议。检查相应PaymentMethod
实例的PayPalAccount
类型的Customer
实例,我看到一个名为billingAgreementId
的属性,该属性与用户的PayPal交易的计费协议ID st相匹配,并且进一步与在PayPal中存储的计费协议相匹配用户的帐户。 ID以“ B-
”开头,而不是一些数字。
问题是我无法在PayPal中找到REST API方法,该方法使我可以使用billingAgreementId
实例的PaymentMethod
来检查计费协议是否仍然有效。
我已经尝试过这里列出的REST API方法:https://developer.paypal.com/docs/api/payments.billing-agreements/v1/已弃用的版本和新版本中的一个都不返回有关计费协议的信息。相反,我收到错误消息“个人资料ID无效”或类似的信息。
此外,B-
的“ billingAgreementId
”模式似乎与PayPal API示例中使用的ID的模式不匹配。
[我还注意到:我无法使用PayPal REST API获得有关Braintree生成的PayPal交易/付款/订单的任何信息。 Braintree是否在这里做一些不同的事情,以便使用PayPal REST API无法看到这些交易/付款/订单?似乎无法从PayPal REST API中获取有关使用Braintree创建的交易/付款/订单的任何信息。
是否有办法检查BraintreebillingAgreementId
Customer
中的PaymentMethod
是否仍然有效?还是我必须检查失败的CheckOut
的ResponseCode并删除已存储的PaymentMethod
的Customer
我已将响应代码映射到已撤销的计费协议状态?
我已经阅读过有关通过使用Webhooks实现此目标的信息,但另一方面,我也阅读到PayPal Webhooks并不十分可靠。
[很多地方都没有记录,我认为https://developer.paypal.com/docs/checkout/reference/upgrade-integration/是目前引用它的少数几页之一
但是,如果将它们组合在一起,则可以使用此URL,您可以使用标准REST HTTP标头尝试GET请求:“授权:承载{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,如果出于某些奇怪的原因您想尝试它,那么从技术上讲它仍然存在)