1.准确来说小程序的支付在上个月就已经做完了,只是那个时候项目原型和UI还没出来就没正式动工。现在项目快做完了,就有时间写博客了。在做小程序支付希望你已经熟读微信的文档微信支付-小程序-手机端和微信支付-小程序-后台。且你已经有了
AppID:"wx****************",//小程序IDSecret:"********************************",//小程序SecretMch_id:"**********",//商户号Mch_key:"********************",//商户key2.关于上面的这4个数据的获取,请自行在自己的账号中获取和设置。且你已经有了用户的openid。《微信小程序开发(四)获取用户openid》。
小程序接口wx.requestPayment({'timeStamp':'','nonceStr':'','package':'','signType':'MD5','paySign':'','success':function(res){},'fail':function(res){}})3.小程序接口就暴露这一个方法。这个方法有4个参数是需要后台去获取的。其实大部分工作都是后台的事情。
后端实现4.后端主要是统一下单的这个接口https://api.mch.weixin.qq.com/pay/unifiedorder。这里主要就是几个签名算法:
统一下单签名//生成签名functionpaysignjsapi(appid,body,mch_id,nonce_str,notify_url,openid,out_trade_no,spbill_create_ip,total_fee){varret{appid:appid,body:body,mch_id:mch_id,nonce_str:nonce_str,notify_url:notify_url,openid:openid,out_trade_no:out_trade_no,spbill_create_ip:spbill_create_ip,total_fee:total_fee,trade_type:'JSAPI'};varstrraw(ret);strstr+'key'+key;varmd5StrcryptoMO.createHash('md5').update(str).digest('hex');md5Strmd5Str.toUpperCase();returnmd5Str;};functionraw(args){varkeysObject.keys(args);keyskeys.sort();varnewArgs{};keys.forEach(function(key){newArgs[key.toLowerCase()]args[key];});varstr'';for(varkinnewArgs){str+''+k+''+newArgs[k];}strstr.substr(1);returnstr;};小程序paySignfunctionpaysignjs(appid,nonceStr,package,signType,timeStamp){varret{appId:appid,nonceStr:nonceStr,package:package,signType:signType,timeStamp:timeStamp};varstrraw1(ret);strstr+'key'+key;returncryptoMO.createHash('md5').update(str).digest('hex');};functionraw1(args){varkeysObject.keys(args);keyskeys.sort()varnewArgs{};keys.forEach(function(key){newArgs[key]args[key];});varstr'';for(varkinnewArgs){str+''+k+''+newArgs[k];}strstr.substr(1);returnstr;};统一下单后端实现varwxConfigrequire('../wx_pay/wx_x_config');varcryptoMOrequire('crypto');//MD5算法varparseStringrequire('xml2js').parseString;//xml转js对象varkeywxConfig.Mch_key;/**根据openid发起微信支付*/router.all('/api/wxpay/unifiedorder',function(req,res,next){varparamreq.query||req.params;varopenidparam.openid;varspbill_create_ipreq.ip.replace(/::ffff:/,'');//获取客户端ipvarbody'测试支付';//商品描述varnotify_url'https://www.hgdqdev.cn/api/wxpay'//支付成功的回调地址可访问不带参数varnonce_strgetNonceStr();//随机字符串varout_trade_nowxConfig.getWxPayOrdrID();//商户订单号vartotal_fee'1';//订单价格单位是分vartimestampMath.round(newDate().getTime()/1000);//当前时间varbodyData'xml';bodyData+'appid'+wxConfig.AppID+'/appid';//小程序IDbodyData+'body'+body+'/body';//商品描述bodyData+'mch_id'+wxConfig.Mch_id+'/mch_id';//商户号bodyData+'nonce_str'+nonce_str+'/nonce_str';//随机字符串bodyData+'notify_url'+notify_url+'/notify_url';//支付成功的回调地址bodyData+'openid'+openid+'/openid';//用户标识bodyData+'out_trade_no'+out_trade_no+'/out_trade_no';//商户订单号bodyData+'spbill_create_ip'+spbill_create_ip+'/spbill_create_ip';//终端IPbodyData+'total_fee'+total_fee+'/total_fee';//总金额单位为分bodyData+'trade_typeJSAPI/trade_type';//交易类型小程序取值如下:JSAPI//签名varsignpaysignjsapi(wxConfig.AppID,body,wxConfig.Mch_id,nonce_str,notify_url,openid,out_trade_no,spbill_create_ip,total_fee);bodyData+'sign'+sign+'/sign';bodyData+'/xml';//微信小程序统一下单接口varurlStr'https://api.mch.weixin.qq.com/pay/unifiedorder';request({url:urlStr,method:'POST',body:bodyData},function(error,response,body){if(!errorresponse.statusCode200){varreturnValue{};parseString(body,function(err,result){if(result.xml.return_code[0]'SUCCESS'){returnValue.msg'操作成功';returnValue.status'100';returnValue.out_trade_noout_trade_no;//商户订单号//小程序客户端支付需要nonceStr,timestamp,package,paySign这四个参数returnValue.nonceStrresult.xml.nonce_str[0];//随机字符串returnValue.timestamptimestamp.toString();//时间戳returnValue.package'prepay_id'+result.xml.prepay_id[0];//统一下单接口返回的prepay_id参数值returnValue.paySignpaysignjs(wxConfig.AppID,returnValue.nonceStr,returnValue.package,'MD5',timestamp);//签名res.end(JSON.stringify(returnValue));}else{returnValue.msgresult.xml.return_msg[0];returnValue.status'102';res.end(JSON.stringify(returnValue));}});}})});5.wxConfig代码:
/*微信参数AppID和Secret*/varwxConfig{AppID:"wx****************",//小程序IDSecret:"********************************",//小程序SecretMch_id:"**********",//商户号Mch_key:"********************",//商户key//生成商户订单号getWxPayOrdrID:function(){varmyDatenewDate();varyearmyDate.getFullYear();varmouthmyDate.getMonth()+1;vardaymyDate.getDate();varhourmyDate.getHours();varminutemyDate.getMinutes();varsecondmyDate.getSeconds();varmsecondmyDate.getMilliseconds();//获取当前毫秒数(0-999)if(mouth10){/*月份小于10就在前面加个0*/mouthString(String(0)+String(mouth));}if(day10){/*日期小于10就在前面加个0*/dayString(String(0)+String(day));}if(hour10){/*时小于10就在前面加个0*/hourString(String(0)+String(hour));}if(minute10){/*分小于10就在前面加个0*/minuteString(String(0)+String(minute));}if(second10){/*秒小于10就在前面加个0*/secondString(String(0)+String(second));}if(msecond10){msecondString(String(00)+String(second));}elseif(msecond10msecond100){msecondString(String(0)+String(second));}varcurrentDateString(year)+String(mouth)+String(day)+String(hour)+String(minute)+String(second)+String(msecond);returncurrentDate;}};module.exportswxConfig;实例//支付按钮点击事件payTap:function(){varselfthis;wx.request({url:'https://www.hgdqdev.cn/api/wxpay/unifiedorder',data:{openid:self.data.openid//这里正常项目不会只有openid一个参数},success:function(res){if(res.data.status100){varpayModelres.data;wx.requestPayment({'timeStamp':payModel.timestamp,'nonceStr':payModel.nonceStr,'package':payModel.package,'signType':'MD5','paySign':payModel.paySign,'success':function(res){wx.showToast({title:'支付成功',icon:'success',duration:2000})},'fail':function(res){}})}},fail:function(){}})},
微信小程序开发五小程序支付-统一下单-怎么制作下单的小程序-商城小程序制作
浏览量:3098
时间:
来源:湖工电气
版权声明
即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。
最新资讯
-

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

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

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










