用 thinkjs 封装了个小程序支付的 Service 在这里记录一下,顺便梳理一下小程序支付的流程和思路。首先,先把官网的流程图放上来,然后按照图一步步的来。 第一步:用户请求开发者后台,发起下单请求
第二步:开发者查找一下数据库或者缓存里是否有
第三步:开发者服务器请求统一下单 appid
mch_id
nonce_str
sign
body
out_trade_no
total_fee
spbill_create_ip
test.js
/*
* 功能: 返回32位随机字符串
* create by tiankai on 2018-06-25 15:39
*/
getNonceStr(){
let char = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
let len = 32;
let result = '';
for(let i = 0; i < len; i++){
let randomNum = Math.floor(Math.random()*char.length);
result += char[randomNum];
}
return result;
}
sign 参数签名, 第二个tab(js)是调用函数的方法, key 为商户平台设置的密钥 key test.js
/*
* 功能:sign 参数签名
* create by tiankai on 2018-06-26 12:00
*/
async makeSign(params, key){
// 生成签名 sign
let strOrderArr = Object.keys(params).sort();
let stringA = "";
strOrderArr.map(val =>{
//如果参数值为空,或者验证返回的 sign 不参与签名
if(
think.isNullOrUndefined(params[val]) ||
val === 'sign' ||
params[val].length === 0
) return;
stringA += val + "=" + params[val] + "&";
});
let stringSignTemp = stringA + "key=" + key;
let sign = think.md5(stringSignTemp).toUpperCase();
return sign;
}
得到这几个参数就开始发起请求统一下单 API 了,这里需要注意的是,请求参数应该以 安装 npm i xml2js
使用 test.js
请求参数转换为 xml test.js
/*
* 功能:获取统一下单 API 请求XML参数
* create by tiankai on 2018-06-25 15:23
*/
async getUnifiedOrderParams(){
let signString = {
appid: config.appid,
mch_id: config.mchid,
nonce_str: await this.getNonceStr(),
body: '短信平台-短信套餐购买',
out_trade_no: '20180926125346',//订单号
total_fee: 88,//订单金额
//APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP
//需要自行获取,这里只是为了测试直接写上了
spbill_create_ip: '123.12.12.123',
notify_url: config.notify_url,
trade_type: 'JSAPI',
openid: await think.cache('openId')
}
let sign = await this.makeSign(signString,config.key);
signString.sign = sign;
/* console.log("--------------------------");
* console.log(sign);
* console.log("--------------------------"); */
let xml = await jsonBuilder.buildObject(signString);
/* console.log(xml); */
return xml;
}
然后就可以发起统一下单API请求了 test.js
第四步:当请求成功时 判断一下
第五步:拿上 test.js
第六步:用户确认支付后,小程序端调用支付接口,根据返回结果提示用户 test.js
第七步:支付成功后,微信服务器会把支付结果返回给配置的 大体流程就是这,现在进行到了 第四步 公司小程序 |
微信小程序支付流程梳理
本文转载:CSDN博客