如何解决Express JS 和 CoinPayments:无法获取 IPN 通知请求的请求正文
所以这是我的问题,我使用 Express JS,我正在使用 coinPayments 设置付款,一切正常运行 npm coinpayments,但是我无法使用 IPN 获得任何实体
router.post(
`/notify`,(req,res,next) => {
res.send('ok');
console.log('------------------------------ipn--------------------------------------');
console.log('body',req.body);
console.log('------------------------------ipn--------------------------------------');
if (
!req.get(`HMAC`) ||
!req.body.ipn_mode ||
req.body.ipn_mode !== `hmac` ||
MERCHANT_ID !== req.body.merchant
) {
return next(new Error(`Invalid request`));
}
let isValid;
let error;
try {
isValid = verify(req.get(`HMAC`),IPN_SECRET,req.body);
} catch (e) {
error = e;
}
if (error && error) {
return next(error);
}
if (!isValid) {
return next(new Error(`Hmac calculation does not match`));
}
return next();
}
我总是得到一个空的 req.body
------------------------------ipn--------------------------------------
body {}
------------------------------ipn--------------------------------------
Invalid request at router.post.txn_id.txn_id
有谁知道为什么,我该如何解决?
解决方法
它是通过制作一个标准的 HTTP POST 来实现的 (application/x-www-form-urlencoded) 通过 https:// 或 http:// 调用 服务器上脚本或 CGI 程序的 URL。
在您的 Express 服务器中,您可能需要添加中间件来解析 urlencoded 格式的请求:
app.use(express.urlencoded({ extended: true })) // for parsing application/x-www-form-urlencoded
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。