我正在使用 Paypal API V2 和 Javascript SDK。我还想说我正在使用 PHP 7.4 和 Angular 9,但这没有意义。
目前我处于 PayPal 沙盒模式,因此如果我上线,我看到的问题可能并不相关。
无论如何,我的前端将渲染这两个由 PayPal SDK 插件提供的 PayPal 按钮(即我没有对这些按钮进行编码,我只是使用了 Paypal Buttons 插件),并且有两个按钮,因为插件感知到这些按钮考虑到位置、环境等,这是唯一可用的选项,这很好:
无论选择哪个选项,我的后端都会调用捕获订单付款PayPal端点。
我想通过查看该调用的响应来了解用户选择了哪个选项,以便我可以在用户的交易列表中显示正确的图标(例如“使用 PayPal 付款”或“使用卡详细信息付款”)
如果用户选择了第一个选项,则响应将如下所示:
{
...
"status": "COMPLETED",
"payment_source": {
"paypal": {
...
"account_status": "VERIFIED",
"name": {
...
}
...
}
},
...
}
因为我在
paypal
集合中看到 payment_source
,所以我应该推断选择了第一个选项。
但是,如果用户选择第二个选项,端点的响应将如下所示。
{
...
"status": "COMPLETED",
"payment_source": {
"paypal": {
...
"account_status": "UNVERIFIED",
"name": {
...
}
...
}
},
...
}
我本来希望在
card
属性中看到 payment_source
,但我再次看到 paypal
,这也应该让我推断出选择了第一个选项,而实际上它是第二个。
区分它们的唯一方法是检查
account_status
属性,但在我看来,这是一个不可靠的黑客行为。据我了解,您仍然可以使用未经验证的帐户的第一个 PayPal 按钮,并且仅在您收到款项时才需要进行帐户验证,而不是在您发送款项时。
无论如何,所有这些都有点令人困惑,经过彻底的谷歌调查后,我没有得出结论性的答案。
ChatGPT 还根据我如何构建同一问题给出了不同的答案。我对此并不感到惊讶的原因超出了我的范围。
我想我需要这三个紧迫问题的答案:
借记卡或信用卡按钮,我将
card
预期为 payment_source
是否正确(因此我描述的问题仅特定于沙盒环境)?account_status
是确定使用了哪个按钮的可靠方法吗?card
,因为 payment_source 仅适用于 高级集成,而不是您问题中的标准集成借记卡或信用卡按钮。标准付款为 payment_source:paypal 付款,与交易记录中的其他 PayPal 付款无法区分。
您可以做的是收集有关单击哪个按钮的信息,这是一条单独的信息。记录传递给
createOrder
回调函数的第一个参数,特别是其 paymentSource
键。