node.js - paytm付款成功后,我无法回到我的角度应用程序
问题描述
我正在使用 Angular 8、nodejs 和 expressjs 集成 Paytm 支付网关。我正在服务器端(nodejs 和 expressjs)处理回调 url 事件,但在从 Paytm 支付网关获取成功回调 url 后,我无法返回到我的 Angular 应用程序。请帮我解决这个问题。
我的回调代码(在 expressjs 中):
app.post('/callback', (req,res) => {
responsePayment(req.body).then(
success => {
res.render("response.ejs", {resultData: "true", responseData: success});
console.log(res);
},
error => {
res.send(error);
}
);
})
}
const responsePayment = function(paymentObject) {
return new Promise((resolve, reject) => {
if (
checksum_lib.verifychecksum(
paymentObject,
"my Merchant Key",
paymentObject.CHECKSUMHASH
)
) {
resolve(paymentObject);
} else {
return reject('Error while verifying checksum');
}
});
解决方案
似乎没有从回调响应中验证校验和。
请使用 paytm 开发者页面上为 nodejs 提供的最新校验和库。此处给出了相同的 github 链接供您参考:https ://github.com/paytm/Paytm_Node_Checksum 请参考此处给出的验证校验和的方法:
/* import checksum generation utility */
var PaytmChecksum = require("./PaytmChecksum");
paytmChecksum = request.body.CHECKSUMHASH;
delete request.body.CHECKSUMHASH;
var isVerifySignature = PaytmChecksum.verifySignature(request.body, config.PAYTM_MERCHANT_KEY, paytmChecksum);
if (isVerifySignature) {
console.log("Checksum Matched");
} else {
console.log("Checksum Mismatched");
}
推荐阅读
- javascript - Brainjs返回错误数据
- spring - @QuerydslPredicate 和 @EmbeddedId
- javascript - 没有 `crossorigin` 的脚本不会暴露它的错误?
- android - 登录或注册后,用户不会被定向到提要屏幕。(Flutter Firebase)
- programming-languages - 操作语义、指称语义和公理语义有什么区别?
- javascript - 使用 Apps 脚本识别未定义工作表中相同列中的重复值
- node.js - 用 Promise 构建一个请求队列?
- python-3.x - 使用 Python Paho-MQTT 控制 Tasmota Tuya 灯泡
- html - 我在哪里将 API 密钥添加到这个 google mymaps 嵌入代码
- javascript - 使用带有封闭节点的 JSTree