node.js 中 PayPal webhook 的签名是啥?

Posted

技术标签:

【中文标题】node.js 中 PayPal webhook 的签名是啥?【英文标题】:What is the signature of a PayPal webhook in node.js?node.js 中 PayPal webhook 的签名是什么? 【发布时间】:2018-10-02 17:43:43 【问题描述】:

我无法理解 PayPal webhook。他们提供samples 来创建、删除、列出 webhook。例如,当

var create_webhook_json = 
    "url": "https://www.yeowza.com/paypal_webhook",
    "event_types": [
        
            "name": "PAYMENT.AUTHORIZATION.CREATED"
        ,
        
            "name": "PAYMENT.AUTHORIZATION.VOIDED"
        
    ]
;

那么我希望 https://www.yeowza.com/paypal_webhook 成为一个 webhook。

我对那个示例 webhook 的问题:

    当其注册的事件发生时,它是否接收到来自 PayPal 的事件? (显然是的) PayPal 是否发出 POST 类型的请求? webhook 如何检查此类事件? PayPal 期望得到什么响应?

最后是“webhooks”仅限于 PayPal 还是一般的 node.js 概念?

【问题讨论】:

1,2,3 和 4 阅读了他们的文档,你的最后一点没有 webhook 是一个通用的流行语,即“当我的应用执行某些操作时,我会通过你提供的 URL 通知你的应用” @Darkrum 文档对我来说毫无意义。给定Webhook event names,我被重定向到Post requests。你的意思是说 PayPal 将这些发送到 webhook,就好像它是一个客户端一样? 我回到文档并找到Notification messages 回答 2.(是 POST)和 4(返回 200)。至于 3,我仍然感到困惑,因为文档将事件链接到客户端调用。这令人困惑。 Webhook 是一个通用的 Web 架构概念,不仅限于 node.js。传统上 webhook 示例使用 php 或 Java 提供,但最近越来越多的示例使用 node.js 作为选择的语言。 Webhook 仅表示您实现的 URL,外部服务可以向该 URL 发送 HTTP 请求以便为您提供一些数据。 webhook 没有标准。您需要阅读各个服务的文档,了解它们将如何向您的服务器发出请求以及它们将以何种格式发送数据 【参考方案1】:

Darkrum 说的可以在文档中找到答案是对的。

1,2,4:“当事件发生时,PayPal 会在您在 webhook 中定义的 webhook 侦听器 URL 向您的应用程序发出一条 HTTP POST 通知消息。...当您的应用程序收到通知消息时,它必须使用 HTTP 200 级别的状态代码进行响应。如果您的应用使用任何其他状态代码进行响应,PayPal 会在三天内尝试重新发送通知消息 25 次。"

至于3你可能要检查example。

【讨论】:

是否应该将 paypal 存储库 (github.com/paypal/PayPal-node-SDK) 克隆到他们的项目中?该示例有一个 var paypal = require('../../../');在顶部。然后,这个示例代码会在路由中,对吗?

以上是关于node.js 中 PayPal webhook 的签名是啥?的主要内容,如果未能解决你的问题,请参考以下文章

PayPal + RESTful API + WebHooks + 自签名证书

PayPal webhook 所有事件仍处于待处理状态

如何通过 webhook 在 PayPal API 中确认每月订阅的计费?

永远不会发送 PayPal webhook 事件?

PHP 验证 Paypal webhook 签名

在 Zapier 中使用 Webhooks 和 PayPal API 从特定 PayPal 交易中获取交易信息