在这里引用答案:PHP verify Paypal webhook signature
这仍然是今天(22 年 1 月)的有效解决方案吗?好奇为什么它在 github.com/paypal/PayPal-PHP-SDK 上说这个包已被弃用? (并存档)?
该 SDK 已弃用且不再维护。没有对它的支持。
有两种受支持的方法来验证 webhook,要么将其发回 API 端点,要么自己验证加密消息签名。
这两个文档都不是特定于 PHP 的,但具有适应您自己的任何语言实现的必要信息。
这就是我如何使用 PHP 验证从 PayPal 到我的 webhook 的调用:
$success = (
openssl_verify(
data: implode(separator: '|', array: [
$httpPayPalTransmissionId,
$httpPayPalTransmissionTime,
$webhookID,
crc32(string: $rawRequestBody),
]),
signature: base64_decode(string: $httpPayPalTransmissionSignature),
public_key: openssl_pkey_get_public(public_key: file_get_contents(filename: $httpPayPalCertUrl)),
algorithm: 'sha256WithRSAEncryption'
) === 1
);