Javascript 节点/fastify不支持的媒体类型出现错误:application/x-www-form-urlencoded
index.jsJavascript 节点/fastify不支持的媒体类型出现错误:application/x-www-form-urlencoded,javascript,node.js,paytm,fastify,fastify-multipart,Javascript,Node.js,Paytm,Fastify,Fastify Multipart,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 Paym
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
}
});
});
fastfy.get(“/paynow”,(请求、回复)=>{
让数据={
TXN_金额:'10',//请求金额
订单ID:'订单123455',//任何唯一的订单ID
客户ID:'CUST_1238w4'//任何唯一的客户ID
}
//创建Paytm支付
createPayment(配置、数据、函数(错误、数据){
如果(错误){
//处理错误
}
//存储url和校验和
设url=data.url;
设checksum=data.checksum;
//从数据对象中删除它
删除data.url;
删除数据。校验和;
/*准备HTML表格并提交给Paytm*/
reply.type('text/html');
reply.raw.writeHead(200,{'Content-Type':'text/html'});
reply.header('Content-Type','application/x-www-form-urlencoded');
reply.header(“访问控制允许来源”、“*”);
reply.header(“访问控制公开头”、“内容范围”);
答复.标题(
“访问控制允许标头”,
来源,X请求,内容类型,接受,授权
);
回复。原始。填写(“”);
回复。原始。填写(“”);
回复.raw.write('Merchant Checkout Page');
回复。原始。填写(“”);
回复。原始。填写(“”);
reply.raw.write('请不要刷新此页面…');
回复。原始。填写(“”);
用于(数据中的var x){
回复。原始。填写(“”);
}
回复。原始。填写(“”);
回复。原始。填写(“”);
回复。原始。填写(“”);
reply.raw.write('document.paytm_form.submit();');
回复。原始。填写(“”);
回复。原始。填写(“”);
回复。原始。填写(“”);
reply.raw.write('ok')
reply.raw.end();
});
});
fastfy.post('/true',(请求、回复)=>{
console.log(“*”)
paytm.validate(配置、请求.body、函数(错误、数据){
console.log(数据)
如果(错误){
//处理错误
console.log(错误)
}
如果(data.status==“已验证”){
//在db中标记付款完成
}
});
});
Paynow API工作正常,但当它重定向到/true路由时,会出现错误
{“statusCode”:415,“代码”:“FST_ERR_CTP_INVALID_MEDIA_TYPE”,“error”:“Unsupported”
媒体类型,“消息”:“不支持的媒体类型:
application/x-www-form-urlencoded“}
我认为这与fastify有关,我真的不知道,因为这是我与fastify的第一个项目。任何帮助都将被告知Fastify,开箱即用,仅解析
application/json
payload
要管理表单,您需要将这些插件添加到项目中
- 管理
应用程序/x-www-form-urlencoded
- 管理多部分/表单数据(又称文件上载)
应用程序/x-www-form-urlencoded
不受支持我也尝试过没有它,但同样的错误尝试过没有什么?那没有道理