Express JS и CoinPayments: не удалось получить тело запроса уведомления IPN
Итак, вот моя проблема, я работаю с Express JS, я настраиваю платежи с помощью coinPayments, все работает с монетами npm, однако я не мог получить ни одного тела с 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
Есть ли у кого-нибудь идеи, почему и как я могу это решить?
1 ответ
Из по документациикооплате
Это реализуется путем выполнения стандартного HTTP-запроса POST(application / x-www-form-urlencoded) по URL-адресу https: // или http: // к сценарию или программе CGI на вашем сервере.
На вашем сервере Express вам может потребоваться добавить промежуточное программное обеспечение для анализа запросов в формате urlencoded:
app.use(express.urlencoded({ extended: true })) // for parsing application/x-www-form-urlencoded