【Vue+Node 微信支付前后端流程整理】以上是整个分享、支付流程,关于支付核心,下面我单独列出 。
支付核心流程
- 生成随机数
createNonceStr(){ return Math.random().toString(36).substr(2,15);} - 生成时间戳
createTimeStamp(){ return parseInt(new Date().getTime() / 1000) + ''} - 生成预支付的签名
getPrePaySign: function (appid, attach, body, openid, total_fee, notify_url, ip, nonce_str, out_trade_no) { let params = { appid, attach, body, mch_id: config.mch_id, nonce_str, notify_url, openid, out_trade_no, spbill_create_ip: ip, total_fee, trade_type: 'JSAPI' } let string = util.raw(params) + '&key=' + config.key; let sign = createHash('md5').update(string).digest('hex'); return sign.toUpperCase(); } - 拼接xml下单数据
wxSendData: function (appid, attach, body, openid, total_fee, notify_url, ip, nonce_str, out_trade_no,sign) { let data = '<xml>' + '<appid><![CDATA[' + appid + ']]></appid>' + '<attach><![CDATA[' + attach + ']]></attach>' + '<body><![CDATA[' + body + ']]></body>' + '<mch_id><![CDATA[' + config.mch_id + ']]></mch_id>' + '<nonce_str><![CDATA[' + nonce_str + ']]></nonce_str>' + '<notify_url><![CDATA[' + notify_url + ']]></notify_url>' + '<openid><![CDATA[' + openid + ']]></openid>' + '<out_trade_no><![CDATA[' + out_trade_no + ']]></out_trade_no>' + '<spbill_create_ip><![CDATA[' + ip + ']]></spbill_create_ip>' + '<total_fee><![CDATA[' + total_fee + ']]></total_fee>' + '<trade_type><![CDATA[JSAPI]]></trade_type>' + '<sign><![CDATA['+sign+']]></sign>' + '</xml>' return data;} - 调用微信统一下单接口
https://api.mch.weixin.qq.com/pay/unifiedorder
let url = 'https://api.mch.weixin.qq.com/pay/unifiedorder'; request({ url, method: 'POST', body: sendData }, function (err, response, body) { if (!err && response.statusCode == 200) { xml.parseString(body.toString('utf-8'),(error,res)=>{ if(!error){ let data = res.xml; if (data.return_code[0] == 'SUCCESS' && data.result_code[0] == 'SUCCESS'){ // 获取预支付的ID let prepay_id = data.prepay_id || []; // 此处非常重要,生成前端所需要的支付配置 let payResult = self.getPayParams(appid, prepay_id[0]); resolve(payResult); } } }) } else { resolve(util.handleFail(err)); } })
推荐阅读
-
程序员|程序员用CPU烤肉当夜宵,一边烤肉一边继续写代码
-
运动|王子文“吃不胖”的秘密:6个习惯,坚持3个月,养成易瘦体质
-
-
AMD|AMD新年显卡驱动Adrenalin 22.1.1发布:《战神》4K性能提升7%
-
海峡中线|越过“海峡中线”?37架战机绕台,飞行员回怼台军喊话:没有中线!
-
娱乐丫小丫|▏无限复制信号弹?一次领十几个空投你也可以,和平精英
-
北晚新视觉网|超级幸运!英国男子首次买彩票即中百万英镑
-
-
-
重新登记退伍军人信息是为了什么原来每人都能领到福利!
-
我要可口|难怪是“人间芭比”,程潇减肥成功了?穿露脐装树荫下拍照
-
2021年物价上涨什么原因,2021年物价为什么会上涨-
-
引领先锋|华为再度面临危机?韩美两大手机巨头联手,想共同占领高端市场
-
失血性休克是啥感受?也就是平常说的失血过多,最好讲得系统点、感性点。
-
运势|8月中旬,四生肖紫气东来,运势飙升,事业平步青云,收获惊人
-
-
沐訢情感|英超上演进球大战!1场比赛狂轰7球,“疯子”教练带队破40年纪录
-
使用|苹果发布手机等操作系统升级版本 苹果电脑将使用自研芯片
-
教育部|2020中国人工智能专业大学排名,北大黯然离场!
-
菊花茶选择什么样的茶最好,如何挑选和保持花草茶的秘诀