如何解决我在PAYTM付款网关中的CALLBACK_URL无法正常运行
我正在尝试将paytm支付网关集成到我的node.js应用程序中。发生的事情是,每当我尝试通过pautm号码付款时,都会向我发送OTP,当我输入OTP并点击以验证其不正确时,就选择了下一个使用卡付款的选项。再次,如果我尝试用卡付款,则付款成功完成,但不会重定向我到任何地方并且超时。
这是我的代码,请告诉我我做错了。
const checksumLib = require('./paytm/checksum/checksum');
const port = 8000;
var today = new Date();
app.post('/payment',function(req,res) {
var payDetails = {
number: req.body.number,amount: req.body.amount
};
let params = {};
params['MID'] = 'XXXXXXXXXXXXXXXXXXXXX',params['WEBSITE'] = 'WEBSTAGING',params['CHANNEL_ID'] = 'WEB',params['INDUSTRY_TYPE_ID'] = 'Retail',params['ORDER_ID'] = 'ORD' + today.getDate()+today.getHours()+today.getMinutes()+today.getSeconds(),params['CUST_ID'] = 'CUST' + today.getDate()+today.getHours()+today.getMinutes()+today.getSeconds(),params['TXN_AMOUNT'] = payDetails.amount,params['CALLBACK_URL'] = 'http://localhost:' + port + '/callback',params['MOBILE_NO'] = payDetails.number
checksumLib.genchecksum(params,'XXXXXXXXXXXX',function(err,checksum) {
let txn_url = "https://securegw-stage.paytm.in/order/process";
let form_fields = "";
for(x in params) {
form_fields+= "<input type='hidden' name='"+x+"' value='"+params[x]+"' >"
}
form_fields += "<input type='hidden' name='CHECKSUMHASH' value='"+checksum+"' >";
res.writeHead(200,{'Content-Type': 'text/html'});
res.write('<html><head><title>Merchant Checkout Page</title></head><body><center><h1>Please do not refresh this page...</h1></center><form method="post" action="'+txn_url+'" name="f1">'+form_fields+'</form><script type="text/javascript">document.f1.submit();</script></body></html>');
res.end();
});
});
app.post('/callback',(req,res) => {
var body = '';
req.on('data',function (data) {
body += data;
});
req.on('end',function () {
var html = "";
var post_data = qs.parse(body);
// received params in callback
console.log('Callback Response: ',post_data,"\n");
// verify the checksum
var checksumhash = post_data.CHECKSUMHASH;
// delete post_data.CHECKSUMHASH;
var result = checksum_lib.verifychecksum(post_data,'XXXXXXXXXX',checksumhash);
console.log("Checksum Result => ",result,"\n");
// Send Server-to-Server request to verify Order Status
var params = {};
params['MID'] = 'XXXXXXXXXXXXX';
params['ORDER_ID'] = 'ORD' + today.getDate()+today.getHours()+today.getMinutes()+today.getSeconds();
checksum_lib.genchecksum(params,'PdMi4rHSpiUzccv!',function (err,checksum) {
params["CHECKSUMHASH"] = checksum;
var post_data = JSON.stringify(params);
var options = {
hostname: 'securegw-stage.paytm.in',// for staging
// hostname: 'securegw.paytm.in',// for production
port: 443,path: '/order/status',method: 'POST',headers: {
'Content-Type': 'application/x-www-form-urlencoded','Content-Length': post_data.length
}
};
// Set up the request
var response = "";
var post_req = https.request(options,function(post_res) {
post_res.on('data',function (chunk) {
response += chunk;
});
post_res.on('end',function(){
console.log('S2S Response: ',response,"\n");
var _result = JSON.parse(response);
if(_result.STATUS == 'TXN_SUCCESS') {
res.send('payment sucess')
}else {
res.send('payment failed')
}
});
});
// post the data
post_req.write(post_data);
post_req.end();
});
});
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。