我应该将 webhook 与 PayPal 的 V2 API 一起使用吗?

Posted

技术标签:

【中文标题】我应该将 webhook 与 PayPal 的 V2 API 一起使用吗?【英文标题】:Should I be using webhooks with PayPal's V2 API? 【发布时间】:2021-05-02 10:06:07 【问题描述】:

我有一个 Laravel 网站,它使用 PayPal 的 webhook 在收到付款时收到通知。这一切正常,直到我们从以下 API 端点返回 404 错误:

PayPal\Exception\PayPalConnectionException
Got Http response code 404 when accessing https://api.paypal.com/v1/notifications/verify-webhook-signature.

经过一番调查,这个问题自行解决了,我假设 PayPal 存在问题。在审查该事件时,它在 PayPal 的网站和存储库中突出显示 PayPal 的 API V1 已贬值。我们最初的想法之一是 PayPal 可以关闭 API 的 V1。但最终并非如此。

我假设上面的端点是这个问题其余部分的 V1 折旧端点。因为它在 URL 中包含“v1”。

为了安全起见,我们认为最好升级为使用 V2 API。但根据 PayPal 的文档,事实证明这比预期的要难。要使用 webhook,我的印象是您需要验证签名。我们使用来自https://github.com/paypal/PayPal-php-SDK 的VerifyWebhookSignature 来执行此操作。这也是一个折旧的存储库。

此处的粗略示例(已折旧),https://github.com/paypal/PayPal-PHP-SDK/blob/master/sample/notifications/ValidateWebhookEvent.php

因此,如果您访问 PayPal 开发人员 API 主页 https://developer.paypal.com/docs/api/overview/,然后将此页面滚动到“Webhooks”,它会将您带到 V1 API 页面 https://developer.paypal.com/docs/api/webhooks/v1/。

所以我的问题是,如果 V1 API 被贬值,我是否还应该在 PayPal 中使用 webhook?他们是替代/更好的解决方案吗?

相关:PHP verify Paypal webhook signature

【问题讨论】:

【参考方案1】:

不推荐使用通用 PayPal-PHP-SDK。如果您需要用于支付的 SDK,请使用 Checkout-PHP-SDK(用于 v2/checkout/orders API)

Webhooks 不支持 SDK,直接集成。 Webhook 使用 v1 URL,没有 v2 webhook。


v1 端点通常不会被弃用,除非存在较新的版本

v1/payments 已被弃用,因为 v2/payments 和移至 v2/checkout/orders 的功能存在

【讨论】:

谢谢,我想这就是我的想法。但要澄清一下,Webhooks 使用 v1 URL,它是 v1 API 的一部分,因此贬值了吗?所以他们不再提供对 webhook 的支持? v1/payments API 已弃用。其他 v1 API 是他们自己的事情 这就解释了(如果不是从 PayPal 的角度来看有点混乱的话)。您想澄清一下,在您的回答中,“v1/payments API 已被弃用”。其他 v1 API 是他们自己的东西吗?因为我认为这将完全回答我的整个问题并帮助其他人。然后我可以给你接受的答案。

以上是关于我应该将 webhook 与 PayPal 的 V2 API 一起使用吗?的主要内容,如果未能解决你的问题,请参考以下文章

Paypal Webhooks 与直接 PaypalApi 响应

将 PayPal webhook 与 NVP DoExpressCheckoutPayment 结合使用

PHP 验证 Paypal webhook 签名

PayPal webhook 创建与激活

关于无法从开发者沙箱触发 Paypal REST API webhook 事件

PayPal:IPN/REST/Webhooks 与 Java 程序的集成