Skip to main content

One post tagged with "alipay"

View All Tags

· One min read

首先,使用express框架,能够接收到支付宝发来的POST notify请求,但是解析出来的body一直为空对象,然后将整个请求log出来查看,发现支付宝发来的Content-Type是一个奇葩的

application/x-www-form-urlencoded;text/html;charset=utf-8

这TM什么鬼玩意,到底是form还是html,于是bodyParser就扑街表示不认识了

解决方式也非常简单暴力,在bodyParser中间件之前添加一个中间件

app.use(function (req, res, next) {
if (req.url == '/alipay' || req.url == '/alipay/test'){
req.headers['content-type'] = 'application/x-www-form-urlencoded';
}
next();
});

其次是校验notify的签名时,支付宝官方给的说明是这样的 untitled1.png

如果没注意仔细看的话,就会以为是queryString的方式拼接,于是我用了nodejs自带的query-string库,做好了queryString.stringify(),一切完美。但是签名校验根本过不去

后来突然想到,难道不要urlencode,不是queryString,于是把代码替换成了手工拼接字符串而不要urlencode。校验就过去了……

原文 https://blog.bangbang93.com/2015/12/08/nodejs%E9%9B%86%E6%88%90%E6%94%AF%E4%BB%98%E5%AE%9D%E6%89%80%E9%81%87%E5%88%B0%E7%9A%84%E5%9D%91.moe?utm_source=tuicool&utm_medium=referral

· One min read

两边肯定是都有开发文档的,只要签约了之后都会拿到相应的秘钥之类的。

感觉把,支付宝的文档还是比较详细的,而且他们做的事不用说还是比较多的。

举例,支付宝的可以点击按钮跳过去付款再用你给的return_url跳到你的系统过去,或者是加个参数,变成扫码支付,扫完之后付款然后再跳转页面,可以说基本你按他的文档把参数拼接好了之后基本不需要多操心了,而且回调也是query parameter的方式,比较好解析。

微信,我用的扫码支付二(这种扫码直接支付的),感觉挺麻烦的。 首先,交互采用的xml的方式,对于node.js来说不是很友好,发送的时候要拼接一次,接收的时候要解析一次,而且,只是返回一个地址,还要自己生成二维码,扫了之后也没有后续操作了。

我看那个扫码支付模式一台麻烦就没弄,有时间再看看。

唉,不过没办法,两种都要接。


9.18

相当坑,微信支付的notify_url也就是异步的通知接口,必须你这边的地址是走https协议的,所以我放弃了。

只能在微信支付的页面的跳转按钮做手脚了,大致步骤如下:

  1. 扫码后,点击跳转到我的订单,实际上我在中间加了一层
  2. 通过查询接口去查询订单的情况,根据结果来更新你的订单信息
  3. 再跳转到订单列表去

暂时没想到更好的解决方案了,看到过别人有说轮训,对我来说好像不大好实现