【发布时间】: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 并删除存储的Customer 的PaymentMethod 我已经将响应代码映射到已撤销的计费协议状态?
我已经阅读了有关使用 webhook 实现此目的的信息,但另一方面,我还了解到 PayPal webhook 并不真正可靠。
【问题讨论】:
标签: java rest paypal paypal-sandbox braintree