google-apps-script - 如何验证 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 进行验证。
解决方案
IPN 是一种独立于 webhook 的旧解决方案。
关于 webhook 验证,您链接到一个 DIY 验证页面,您可以在其中计算签名是否匹配。该示例是用 Java 编写的,但可以想象可以适应任何语言(需要做一些大量工作)
验证 webhook 的另一种方法是通过 webhooks API,使用此 API 调用发回消息:https ://developer.paypal.com/docs/api/webhooks/v1/#verify-webhook-signature
避免使用 PayPal-*-SDK,因为该文档是在这些 SDK 被弃用之前编写的
推荐阅读
- spring-boot - Springboot Heroku 应用程序在部署时崩溃
- entity-framework - 使用 Entity Framework 和集成测试搭建 .NETCore WebAPI 项目的工具
- forms - 在 MsAccess 表单中按“显示全部”按钮后删除关键字
- php - PHP:正则表达式,如何验证 android 和 ios 深层链接 URI
- java - 如何有效地将属性更改为 Android Studio 中的多个视图/按钮?
- javascript - jQuery FormBuilder 仅验证必填字段
- python - 如何在robot.api中调用监听类?
- python - 不允许我在函数和 int 之间使用 >
- java - How do you remove an element from an array based on element's field value? (Spring-Boot, Reactive MongoDB)
- python - 覆盖 Flask Admin 在表中保存新行