节点/fastify 出现错误,不支持的媒体类型:application/x-www-form-urlencoded

2024-03-23

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”:“不支持 媒体类型","message":"不支持的媒体类型: 应用程序/x-www-form-urlencoded"}

我认为它与 fastify 有关,真的不知道,因为这是我使用 fastify 的第一个项目。任何帮助都会得到帮助


Fastify,开箱即用,仅解析application/json有效负载。

要管理表单,您需要将这些插件添加到您的项目中

  • fastify 形式主体 https://github.com/fastify/fastify-formbody#fastify-formbody管理application/x-www-form-urlencoded
  • fastify-多部分 https://github.com/fastify/fastify-multipart/管理multipart/form-data(又名文件上传)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

节点/fastify 出现错误,不支持的媒体类型:application/x-www-form-urlencoded 的相关文章

随机推荐