Paypal REST API - 尝试使用其 HATEOS 自身 url 获取 webhook 事件时得到 404
Posted
技术标签:
【中文标题】Paypal REST API - 尝试使用其 HATEOS 自身 url 获取 webhook 事件时得到 404【英文标题】:Paypal REST API - getting 404 when trying to get webhook event with its HATEOS self url 【发布时间】:2015-03-30 22:36:03 【问题描述】:我在尝试使用 Paypal REST API 时被 webhook 的问题惊呆了。 我尝试使用以下策略来验证事件数据 - 确保 HATEOAS 链接与 rel == "self" 如https://api.sandbox.paypal.com/v1/notifications/webhooks-events/WH-6L177801XL962315K-5B870910V53268712 存在,并确保此链接以预期的 API 端点(在 web.config 中设置)开始并重新加载事件数据使用它,并将其用作 trusted 事件数据。 但是这种策略失败了,它会导致 404 而不是获取 webhook 数据。
还有谁使用过 Paypal REST API 网络钩子?您如何验证事件是否来自受信任的事件源?
更新
能够获得有关收到消息的更多详细信息。响应正文:
数据 [\r\n \"name\": \"INVALID_RESOURCE_ID\",\r\n \"details\": [],\r\n \"message\": \"资源 id 是无效\"\r\n]
标头作为 JSON 对象:[\r\n \"PROXY_SERVER_INFO\": [\r\n \"host=slcsbplatformapiserv3002.slc.paypal.com;threadId=370534\"\r\n ],\r \n \"Paypal-Debug-Id\": [\r\n \"e33a2f285d46f\"\r\n ],\r\n \"SERVER_INFO\": [\r\n \"webhooksplatformserv:ppaas_1_2.v1 .notifications.webhooks-events.id.GET&CalThreadId=184&TopLevelTxnStartTime=14b4099eb05&Host=slcsbwebhooksplatformserv3002.slc.paypal.com&pid=29135\"\r\n ],\r\n \"日期\": [\r\n \"星期六, 2015 年 1 月 31 日 15:26:44 GMT\"\r\n ],\r\n \"服务器\": [\r\n \"Apache-Coyote/1.1\"\r\n ]\r\ n]
【问题讨论】:
【参考方案1】:hateoas 链接应返回与原始 webhook 事件相同的有效负载。所以那里似乎有一些问题。
但是,如果您的目的是验证事件是否来自 PayPal,那么正确的方法是验证 webhook 标头中包含的签名。此链接包含有关 webhook 安全方面的更多详细信息。
https://developer.paypal.com/webapps/developer/docs/integration/direct/rest-webhooks-overview/#event-security
【讨论】:
签名验证过程对我来说有点不清楚。 签名验证过程对我来说有点不清楚(WebhookId 参数 - 它是什么?我在 REST API 网站上注册的 webhook 的标识符?因为这部分对我来说不清楚,我无法构建一个验证代码(.net helper 类/方法)以“正确的方式检查签名。所以我决定重新加载事件有效负载,但它因 404 错误而失败。现在我只检查源 IP 地址(使用 web.config 中的域名列表和 Dns.GetHostEntry 在每次启动 Web 应用时刷新 IP 白名单)... 是的,当您使用 REST API 注册您的 url 时,webhook id 就是资源 id。这不包含在事件有效负载中。由于您首先注册了 webhook,因此您应该可以通过 API 调用访问它。此外,我们正在努力以各种编程语言发布 SDK。以上是关于Paypal REST API - 尝试使用其 HATEOS 自身 url 获取 webhook 事件时得到 404的主要内容,如果未能解决你的问题,请参考以下文章