基础准备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
微信小程序调用支付功能-Nodejs-微信小程序实现微信支付功能-微信小程序支付代码
浏览量:2204
时间:
来源:JMhappy
版权声明
即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。
最新资讯
-

即速应用,赋能企业玩转微信小程序智慧经营
作为国内领军的智慧商业经营服务商,即速应用始终秉承“让每个企业都拥有自己的智慧店铺”的愿景,持续赋能更多企业玩转智慧经营。即速应用旗下拥有“小程序搭建工具-即速应用”、“私域流量专家-即客云”等产品,帮助商家打通互联网全生态营销闭环。 -

即客云2.0重磅更新,让微信小程序运营更简单!
即客云作为一款基于企业微信的第三方工具,现从多维度提供超过30种功能,自上线以来,已服务多家企业,受到一致好评。近期,我们根据客户反馈和市场调研正式推出升级版 即客云2.0!更新了私域运营SOP,群日历功能,批量拓客,客户雷达,消息推送,个人欢迎语,帮助企业更好运用企业微信;同时提升了社群运营工作标准化,提升运营效率,帮助企业实现客户增长,玩转私域流量。 -

零代码 + AI 双轮驱动|即速应用解锁人工智能小程序开发新范式
无需代码、无需 AI 算法功底,普通人也能快速搭建智能小程序。即速应用将人工智能与零代码开发深度融合,推出 AI 智能生成能力,用户通过自然语言描述需求,AI 自动生成小程序页面、功能模块与后台配置,覆盖商城、预约、同城、社区团购等全场景。平台内置 AI 智能推荐、智能客服、用户画像分析等能力,一键对接微信生态,打通视频号、企业微信、短信跳转,帮企业快速落地 AI 应用,抢占智慧经营先机,让每家企业都拥有 AI 驱动的智慧店铺。










