填坑系列: nodejs后台在支付宝异步通知时获取到的参数为空(使用koa模块)
2015-12-26 20:34
661 查看
填坑系列: nodejs后台在支付宝异步通知时获取到的参数为空(使用koa模块)
最近公司在开发一个涉及金额交易的app, 需要用到 支付宝与微信支付
, 在写支付宝支付后台接口时遇到一个大坑, 在这里记录一下, 方便需要的人及时解决问题.
情景如下
开发环境 | 路由器模块 | javascript标准 |
---|---|---|
nodejs | koa | ECMAScript6 |
问题
付款成功后支付宝异步通知到达了我们的服务器,但是接收到的参数为空.
原因
支付宝使用的是非标准协议,content-type的使用的是
application/x-www-form-urlencoded; text/html; charset=UTF-8, 进而导致
koa的解析模块
koa-bodyparser无法正常解析, 支付宝真是挖的一手好坑, 折腾了我几个小时才找到原因并解决.
解决方法
在 koa-bodyparser
中间件前手动修改 content-type
为标准模式
var koa = require('koa'); var router = require('./router'); var app = koa(); app.use(function*(next) { if (this.request.method !== 'GET' && this.request.path === '支付宝异步通知路径') { this.request.headers['content-type'] = 'application/x-www-form-urlencoded'; } yield next; }); app.use(router.routes()); app.listen(80, function(){ console.log("App is running on 80"); });
相关文章推荐
- 使用ruby部署工具mina快速部署nodejs应用教程
- Google官方支持的NodeJS访问API,提供后台登录授权
- 浅谈Nodejs观察者模式
- nodejs教程之环境安装及运行
- nodejs中的fiber(纤程)库详解
- 基于NodeJS的前后端分离的思考与实践(五)多终端适配
- 基于NodeJS的前后端分离的思考与实践(二)模版探索
- 我的NodeJs学习小结(一)
- nodejs中实现sleep功能实例
- Nodejs异步回调的优雅处理方法
- Windows系统下使用Sublime搭建nodejs环境
- nodejs实现获取某宝商品分类
- nodejs简单实现中英文翻译
- Node.js插件的正确编写方式
- 使用upstart把nodejs应用封装为系统服务实例
- NodeJS Web应用监听sock文件实例
- Nodejs学习笔记之测试驱动
- Nodejs学习笔记之Stream模块
- 如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
- Nodejs为什么选择javascript为载体语言