首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PayPal IPN验证不仅仅适用于recurring_payment txn_type

PayPal IPN验证不仅仅适用于recurring_payment txn_type
EN

Stack Overflow用户
提问于 2020-12-23 01:43:00
回答 1查看 60关注 0票数 0

我的PayPal IPN正在验证,除了那些有txn_type of recurring_payment的。当我将消息传递给验证端点时,我使用以下方法将主体转换为查询字符串

代码语言:javascript
复制
var verificationString = '?cmd=_notify-validate';

Object.keys(body).map((key) => {
    verificationString = verificationString + '&' + key + '=' + body[key];
    return key;
});

我最好的猜测是,这扰乱了属性的顺序。PayPal的文件说:

您的侦听器HTTPS将完整、未更改的消息发回给PayPal;消息必须包含与原始消息相同的字段(按相同的顺序),并以与原始消息相同的方式进行编码。

但我不认为Object.keys(body).map会在Nodejs中重新排列任何东西。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2020-12-23 18:14:08

找到了解决办法。原来,PayPal允许用户字段包含反斜杠、换行符等内容。这个特定的IPN有一个地址字段,在街道和公寓号之间有一个\r\n换行符。使用我的原始代码,这在某种程度上被编码不同。

现在,我不再像在原来的问题中那样组装查询字符串,而是像这样组装它,因为它保留了所有字符和编码:

var verificationString = '?cmd=_notify-validate&' + request.rawBody.toString();

这就解决了问题!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65418026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档