首页 > 解决方案 > 如何验证 Google Script 的 PayPal webhook 签名?

问题描述

PayPal 订单完成后,它会向 google 脚本 URL 发送一个 webhook。在发送信息之前,它必须验证签名。下面是指向 Java 示例的链接。

https://developer.paypal.com/docs/api-basics/notifications/webhooks/notification-messages/#

如何验证 Google Script 的 PayPal webhook 签名?

我查看了 google-apps-script 和 PayPal 标签以寻找解决方案,但它只提供 IPN 解决方案。据我了解,这是一种较旧的方法。也许这是唯一的方法。我不知道。我是 API 处理的新手,所以我可能会错误地措辞这个问题。

编辑:做了更多的挖掘,并且能够接收和处理一个贝宝网络钩子。

function doPost(e) {
    var params = JSON.stringify(e.postData.contents);
    params = JSON.parse(params);
    var myData = JSON.parse(e.postData.contents);

    SpreadsheetApp.flush();
    return HtmlService.createHtmlOutput("post request received");
}

下一个问题是设置 PayPal Smart 按钮以发送正确的 webhook。正确的 webhook 事件应该是“Checkout order completed”(通过 PayPal 的 Webhooks 模拟器测试)。此 webhook 包含订单信息。PayPal Smart Button Demo中的示例将 onAuthorize 作为 webhook 调用。这个 webhook 不包含我想要的信息。我会单独发一篇关于这个的帖子。

onAuthorize: function(data, actions) {
        return actions.payment.execute().then(function() {
            window.alert('Payment Complete!');
        });
    }

所以我想可能不需要对 webhook 进行验证。

标签: google-apps-scriptpaypal

解决方案


IPN 是一种独立于 webhook 的旧解决方案。

关于 webhook 验证,您链接到一个 DIY 验证页面,您可以在其中计算签名是否匹配。该示例是用 Java 编写的,但可以想象可以适应任何语言(需要做一些大量工作)

验证 webhook 的另一种方法是通过 webhooks API,使用此 API 调用发回消息:https ://developer.paypal.com/docs/api/webhooks/v1/#verify-webhook-signature

避免使用 PayPal-*-SDK,因为该文档是在这些 SDK 被弃用之前编写的


推荐阅读