node/fastify 不支持的媒体类型出错:application/x-www-form-urlencoded
Giving error with node/fastify Unsupported Media Type: application/x-www-form-urlencoded
index.js
fastify.get("/paynow", (request, reply) => {
let data = {
TXN_AMOUNT: '10', // request amount
ORDER_ID: 'ORDER_123455', // any unique order id
CUST_ID: 'CUST_1238w4' // any unique customer id
}
// create Paytm Payment
paytm.createPayment(config, data, function (err, data) {
if (err) {
// handle err
}
//store the url and checksum
let url = data.url;
let checksum = data.checksum;
// delete it from data object
delete data.url;
delete data.checksum;
/* Prepare HTML Form and Submit to Paytm */
reply.type('text/html');
reply.raw.writeHead(200, { 'Content-Type': 'text/html' });
reply.header('Content-Type', 'application/x-www-form-urlencoded');
reply.header("Access-Control-Allow-Origin", "*");
reply.header("Access-Control-Expose-Headers", "Content-Range");
reply.header(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept, Authorization"
);
reply.raw.write('<html>');
reply.raw.write('<head>');
reply.raw.write('<title>Merchant Checkout Page</title>');
reply.raw.write('</head>');
reply.raw.write('<body>');
reply.raw.write('<center><h1>Please do not refresh this page...</h1></center>');
reply.raw.write('<form method="post" action="' + url + '" name="paytm_form">');
for (var x in data) {
reply.raw.write('<input type="hidden" name="' + x + '" value="' + data[x] + '">');
}
reply.raw.write('<input type="hidden" name="CHECKSUMHASH" value="' + checksum + '">');
reply.raw.write('</form>');
reply.raw.write('<script type="text/javascript">');
reply.raw.write('document.paytm_form.submit();');
reply.raw.write('</script>');
reply.raw.write('</body>');
reply.raw.write('</html>');
reply.raw.write('ok')
reply.raw.end();
});
});
fastify.post('/true', (request, reply) => {
console.log('*')
paytm.validate(config, request.body, function (err, data) {
console.log(data)
if (err) {
// handle err
console.log(err)
}
if (data.status == 'verified') {
// mark payment done in your db
}
});
});
Paynow API 工作正常,但当它重定向到 /true 路由时出现错误
{"statusCode":415,"code":"FST_ERR_CTP_INVALID_MEDIA_TYPE","error":"Unsupported
Media Type","message":"Unsupported Media Type:
application/x-www-form-urlencoded"}
我认为它与 fastify 有关真的不知道,因为这是我使用 fastify 的第一个项目。任何帮助都会得到应用
Fastify,开箱即用,仅解析 application/json
有效载荷。
要管理表单,您需要将这些插件添加到您的项目中
- fastify-formbody 管理
application/x-www-form-urlencoded
- fastify-multipart 管理
multipart/form-data
(又名文件上传)
index.js
fastify.get("/paynow", (request, reply) => {
let data = {
TXN_AMOUNT: '10', // request amount
ORDER_ID: 'ORDER_123455', // any unique order id
CUST_ID: 'CUST_1238w4' // any unique customer id
}
// create Paytm Payment
paytm.createPayment(config, data, function (err, data) {
if (err) {
// handle err
}
//store the url and checksum
let url = data.url;
let checksum = data.checksum;
// delete it from data object
delete data.url;
delete data.checksum;
/* Prepare HTML Form and Submit to Paytm */
reply.type('text/html');
reply.raw.writeHead(200, { 'Content-Type': 'text/html' });
reply.header('Content-Type', 'application/x-www-form-urlencoded');
reply.header("Access-Control-Allow-Origin", "*");
reply.header("Access-Control-Expose-Headers", "Content-Range");
reply.header(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept, Authorization"
);
reply.raw.write('<html>');
reply.raw.write('<head>');
reply.raw.write('<title>Merchant Checkout Page</title>');
reply.raw.write('</head>');
reply.raw.write('<body>');
reply.raw.write('<center><h1>Please do not refresh this page...</h1></center>');
reply.raw.write('<form method="post" action="' + url + '" name="paytm_form">');
for (var x in data) {
reply.raw.write('<input type="hidden" name="' + x + '" value="' + data[x] + '">');
}
reply.raw.write('<input type="hidden" name="CHECKSUMHASH" value="' + checksum + '">');
reply.raw.write('</form>');
reply.raw.write('<script type="text/javascript">');
reply.raw.write('document.paytm_form.submit();');
reply.raw.write('</script>');
reply.raw.write('</body>');
reply.raw.write('</html>');
reply.raw.write('ok')
reply.raw.end();
});
});
fastify.post('/true', (request, reply) => {
console.log('*')
paytm.validate(config, request.body, function (err, data) {
console.log(data)
if (err) {
// handle err
console.log(err)
}
if (data.status == 'verified') {
// mark payment done in your db
}
});
});
Paynow API 工作正常,但当它重定向到 /true 路由时出现错误
{"statusCode":415,"code":"FST_ERR_CTP_INVALID_MEDIA_TYPE","error":"Unsupported Media Type","message":"Unsupported Media Type: application/x-www-form-urlencoded"}
我认为它与 fastify 有关真的不知道,因为这是我使用 fastify 的第一个项目。任何帮助都会得到应用
Fastify,开箱即用,仅解析 application/json
有效载荷。
要管理表单,您需要将这些插件添加到您的项目中
- fastify-formbody 管理
application/x-www-form-urlencoded
- fastify-multipart 管理
multipart/form-data
(又名文件上传)