微信小程序微信支付的一些坑
使用的是node.js作为后端
统一下单:
appid:这里的appid是调起微信支付的appid
mch_id:商户号,需要注意的是商户号要与appid对应
nonce_str:math.random().tostring(36).substr(2)这是我的随机字符串的生成算法
sign:这里的签名是第一次签名,后面还会讲到第二次签名,主要注意点如下:
1.首先要把需要传递请求参数使用key1=value&key2=value2的形式进行拼接也就是文档上的参数,除去sign
2.所拼接的字符串的属性名的顺序,必须按照ascii码(字典序)进行排序
3.在最后拼接上使用的key,这里的key指的是商户平台设置的api秘钥>>>>微信商户平台(pay.weixin.qq.com)-->账户设置-->api安全-->密钥设置
4.进行md5签名或者hmac-sha256签名方式,这里使用到的是md5的方式
5.最后需要需要转换成大写
sign_type:签名方式,要与使用的签名方式一直
spbill_create_ip:这里的ip网上有人说随便填,但是我在尝试时候使用了127.0.0.1返回的数据中数ip错误,所以使用了网络的真实ip,这里使用到了
trade_type:这里使用jsapi,需要在商户平台进行开通
openid:用户在商户appid下的唯一标识 获取方式请参考小程序api wx.login和code2session,其中appid,secret应该对应
最后请求参数生成完毕之后需要传递一个xml文件到服务器这里使用到了xml2js
一般请求失败后可以先检查请求数据格式是否正确,再检查参数顺序以及key是否对应
wx.requestpayment(object object)调起微信支付
timestamp:当前的时间戳单位秒
package:这里的形式是prepay_id=***这里的prepay_id是统一下单成功后返回的数据结果
signtype:签名方式
paysign:这里是签名也就是前面所说的二次签名这里的签名包含参数有appid(注意这里跟一次签名的属性不同i为大写)传递参数不用,但是必须参与签名,之后就是
上一篇: Angular基础使用教程