微信支付回调取不到body体中的信息node.js

因为支付回调返回的数据格式为XML数据格式,需要安装组件body-parser-xml

 

安装语法:   npm install body-parser-xml --save

 

在app.js 文件中引入该模块  require('body-parser-xml')(bodyParser);

使用中间件:

app.use(bodyParser.xml({
  limit: '2MB',   // Reject payload bigger than 1 MB
  xmlParseOptions: {
    normalize: true,     // Trim whitespace inside text nodes
    normalizeTags: true, // Transform tags to lowercase
    explicitArray: false // Only put nodes in array if >1
  }
}));

 

转载于:https://www.cnblogs.com/liluping860122/p/7027351.html

### 如何在 Node.js 中集成和使用微信支付 API #### 使用 `node-tenpay` 实现微信支付功能 为了使服务类平台能够为用户提供充值、购买服务等付解决方案,可以通过集成 `node-tenpay` 来处理各种付请求,确保付流程的顺畅。典型的应用场景是在 Express.js 或者 Koa.js 项目中引入此模块来简化开发过程。 对于基于 Express.js 的项目,在 index.js 文件的最后一行添加如下代码以加载微信支付路由: ```javascript app.use(API_PATH, require(`.${API_PATH}/demo/wxpay`)); ``` 这段配置使得应用程序能够在指定路径下响应有关微信支付的操作[^1]。 #### 安装依赖包 要开始使用 `node-tenpay`,首先需要安装它以及必要的依赖项。可以在命令行执行以下 npm 命令完成安装: ```bash npm install node-tenpay express body-parser --save ``` 这一步骤会下载并保存所需的库到项目的 package.json 文件里[^2]。 #### 初始化 `node-tenpay` 创建一个新的文件用于初始化 `node-tenpay` 并设置相关参数,比如商户号、密钥等信息。下面是一个简单的例子展示如何实例化该对象: ```javascript const TenPay = require('node-tenpay'); let tenpayConfig = { partner: 'your_partner_id', // 商户ID key: 'your_key', // 密钥 }; // 创建TenPay实例 let tenpay = new TenPay(tenpayConfig); ``` 上述代码片段展示了如何根据官方文档中的指导来准备一个可用的 `node-tenpay` 对象。 #### 处理回调 当用户成功付款后,微信服务器将会向设定好的 URL 发送通知消息。因此,还需要编写相应的逻辑去接收这些 POST 请求,并验证签名的有效性。这里给出一段基本的实现方式: ```javascript app.post('/wxpay/callback', (req, res) => { let xmlData = req.body.xml; try { const result = tenpay.checkSign(xmlData); // 验证签名 if(result){ console.log("Payment successful"); // 更新订单状态或其他业务操作 res.send('<xml><return_code><![CDATA[SUCCESS]]></return_code></xml>'); }else{ throw Error("Invalid sign"); } } catch(error){ console.error(error.message); res.status(500).send(`<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[${error.message}]]></return_msg></xml>`); } }); ``` 这个函数监听来自 `/wxpay/callback` 路径下的 HTTP POST 请求,解析传入的数据并通过调用 `checkSign()` 方法检验其合法性。如果一切正常,则返回微信确认已接收到成功的交易通知;反之则发送错误报告。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值