微信小程序> 微信小程序调用支付功能-Nodejs-微信小程序实现微信支付功能-微信小程序支付代码

微信小程序调用支付功能-Nodejs-微信小程序实现微信支付功能-微信小程序支付代码

浏览量:2204 时间: 来源:JMhappy
基础准备1.

1、注册小程序https://mp.weixin.qq.com/2、小程序需要交300大洋做认证,可以关联以后商户号(如果没有商户需注册开通)

代码2.

主体代码

varexpressrequire("express");varrouterexpress.Router();vardbrequire("../src/mysql");varcryptorequire('crypto');varxml2jsrequire('xml2js');varrequestrequire('request');varbodyparserrequire('body-parser');router.use(bodyparser.urlencoded({extended:false}));.....................console.log(req.query,'获取请求参数');varordernonewDate().getTime();//自定义的商户订单号varnonce_strrandomStr();//随机数vartotal_feeNumber(req.query.amount)*100;//订单价格varreqUrl'https://api.mch.weixin.qq.com/pay/unifiedorder';//签名varsignoption{appid:global.appid,//小程序appidbody:'xxxx',//商品描述mch_id:global.mch_id,//商户号nonce_str:nonce_str,//随机字符串notify_url:global.notify_url,//回调地址openid:openid,//交易类型是JSAPI的话,此参数必传可从过code获取openidout_trade_no:orderno,//商品订单号spbill_create_ip:'111.111.111.111',//因为微信支付需要有回调url,所以没法确定你的公网ip就没法发送订单支付通知给你,所以提供一个解析的正常ip就好total_fee:total_fee,//商品价格trade_type:'JSAPI'//交易类型,JSAPI为小程序交易类型};varsigncreateSign(signoption);//这个顺序要和签名顺序一致letformData'xmlappid'+signoption.appid+'/appidbody'+signoption.body+'/bodymch_id'+signoption.mch_id+'/mch_idnonce_str'+signoption.nonce_str+'/nonce_strnotify_url'+signoption.notify_url+'/notify_urlopenid'+signoption.openid+'/openidout_trade_no'+signoption.out_trade_no+'/out_trade_nospbill_create_ip'+signoption.spbill_create_ip+'/spbill_create_iptotal_fee'+signoption.total_fee+'/total_feetrade_type'+signoption.trade_type+'/trade_typesign'+sign+'/sign/xml';//发起请求,获取微信支付的一些必要信息request({url:reqUrl,method:"POST",json:true,headers:{"content-type":"application/json"},body:formData},function(error,response,body){if(!errorresponse.statusCode200){console.log(body,'统一下单接口返回的数据');try{xml2js.parseString(body,function(error,result){console.log(JSON.stringify(result),'xml解析成字符串');letreDataresult.xml;letresponseData{timeStamp:newDate().getTime(),nonceStr:reData.nonce_str[0],package:reData.prepay_id[0],paySign:reData.sign[0]};//更新记录支付结果//................//个性化业务处理res.json({error_code:0,result:responseData});});}catch(e){console.log(e);}}});3.

产生随机数

functionrandomStr(){varstr"";vararr['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];for(vari1;i32;i++){varrandomMath.floor(Math.random()*arr.length);str+arr[random];}returnstr;}4.

签名

//签名算法(把所有的非空的参数,按字典顺序组合起来+key,然后md5加密,再把加密结果都转成大写的即可)functioncreateSign(obj){varstringA'appid'+obj.appid+'body'+obj.body+'mch_id'+obj.mch_id+'nonce_str'+obj.nonce_str+'notify_url'+obj.notify_url+'openid'+obj.openid+'out_trade_no'+obj.out_trade_no+'spbill_create_ip'+obj.spbill_create_ip+'total_fee'+obj.total_fee+'trade_type'+obj.trade_type;varstringSignTempstringA+'key'+global.mch_key;varhashcrypto.createHash('md5');stringSignTemphash.update(stringSignTemp);varsignValuehash.digest('hex');returnsignValue.toUpperCase();}5.

以下是遇到的坑

spbill_create_ip一定要给一个公网地址,不然可能会报total_fee的问题加密的顺序一定不要错,保持一致,不然会签名错误参数顺序后最后要加上keyxxxxx商户的mch_key小程序端wx.request({url:'接口地址?code用户codeamount0.01',success(res){console.log(res,'统一下单接口返回信息')if(res.data.error_code0){//成功var_signtext"appId小程序appidnonceStr"+res.data.result.nonceStr+"packageprepay_id"+res.data.result.package+"signTypeMD5timeStamp"+res.data.result.timeStamp+"key商户mch_key";**//商户key一定要补,顺序不要随便调整**varpaysignmd5.hexMD5(_signtext);**//md5重新加密生成签名**//开始调起支付wx.requestPayment({timeStamp:res.data.result.timeStamp+'',//统一下单返回nonceStr:res.data.result.nonceStr,//统一下单返回package:"prepay_id"+res.data.result.package,**//一定要写prepay_id不然会报total_fee错误**signType:'MD5',//签名算法paySign:paysign.toUpperCase(),**//不能用统一下单的签名,需重新签名!!!!**success(res){console.log(res,'微信支付成功!!!')//个性化业务处理})}})}else{console.log(res,"支付失败!"+res.msg);}}})6.

注意:小程序的官方文档一定要小心看,看少一点错误都看不懂签名测试地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter20_1小程序端签名文档:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter7_7index5小程序支付API:https://developers.weixin.qq.com/miniprogram/dev/api/wx.requestPayment.html

7.

参考引用:https://blog.csdn.net/yemuxia_sinian/article/details/86672495

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎