全网整合营销服务商

营销型网站+SEO优化+关键词快排=一站式服务

免费咨询热线:15959292472

[广东专业seo外包公司]小程序开发中常见支付功能开发错误总结

  微信小程序 支付功能开发错误总结

  微信小程序支付终于踩完坑了,发现里面坑挺大的,现在发个贴,希望以后入坑的同学可以看一下 •■…▽:

 

  https□●■▼://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&●▽☆;index=2

 

  业务流程在这里大家看文档的时候可以看到。第一个坑,获取用户的openid,参数一定要拼在url连接上,否则会报{"○◆◇;errcode":40013,"errmsg":"-○☆☆;invalid appid, hints: [ req_id==: iil1ba0504ns86 ]"}错误

  

 onLoad: function () {
 var that = this
 wx.login({
 success: function (res) {
 if (res□●□.code) {
 //发起网络请求
 wx.request({
 url: '▽▷▼;https▪▷://api.weixin◆••.qq.com/sns/jscode2session?appid=wxaacf22345345cfc7162fe3&secret=83ebd41c3e6f34a49b3a34578063434548ff3f71&▽▪…;js_code='★…; + res▽•□▽.code + '▷▼•;&grant_type=authorization_code'-●,
 method▽□▼▷: "POST"□…-;,
 success▷-: function (res) {
 that.setData({
 openid: res◇☆•.data◆▼•△.openid
 })
 }
 })
 } else {
 console▷▲▽■.log('▲=◁;获取用户登录态失败!' + res◆■.errMsg)
 }
 }
 })◆●△;
 }

 

  第二个坑,支付统一下单接口,天长市小程序制作公司签名这个坑是比较多人遇到问题的这个是MD5加密经常和签名工具里面的加密签名不一样


 

  签名加密工具地址▲▲-▽:https◇★://pay★▽.weixin◇○=.qq.com/wiki/doc/api/jsapi.php?chapter=20_1

 

  签名加密的时候要转成utf-8■◆-,加密我用自己的接口进行加密的 digest=•.update(data▼△.getBytes("utf-8"))◁•••;

  

 // 统一下单接口获取sign(签名)
 paysignjsapi: function (appid◆△◆, attach, body•○☆=, mch_id, nonce_str▷▽★, notify_url, openid, out_trade_no○△▼, spbill_create_ip, total_fee◆◇▼, trade_type, key) {
 var self = this;
 //加密签名
 wx.request({
 url: 'http▲=://localhost:8080/XinXingWXApi/wxXcxApi/Md5Encrypt◇▷◆.do'▷★•▼;◇■,
 method: '▼▷;GET'△•▽;,
 data: {
 appid◇■★◇: appid,
 attach▼◁○: attach○•,
 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…□◇□: trade_type,
 key…▪●: key
 },
 //统一下单
 success: function (res) {
 var sign = res.data.strMd5
 var formData = "■▷;&•▪•▷;lt;xml>☆○;"
 formData += "•☆★;&lt◁◆▽■;appid>" + appid + "▲▲=;&▪◆☆□;lt▲▽;/appid>◆▽○•;"□▷••; //appid 
 formData += "<attach>" + attach + "</attach>▲△•;"□=●□; //附加数据 
 formData += "<body>" + body + "</body>" //标题
 formData += "●▽;&lt◆•;mch_id>•□●;"◆-★; + mch_id + "</mch_id>△▽-▲;" //商户号 
 formData += "&…==▽;lt;nonce_str>◁▲;" + nonce_str + "</nonce_str>" //随机字符串,不长于32位。 
 formData += "◇●●;<notify_url>" + notify_url + "○●◇▲;&▷▼•▽;lt;/notify_url>"●▲; //异步接收微信支付结果通知的回调地址
 formData += "<openid>" + openid + "■◆□;&□◇◁;lt◇…▪▪;/openid>•◁;" //用户Id
 formData += "<out_trade_no>▪◁•;" + out_trade_no + "&■○△△;lt;/out_trade_no>◁▲;" //商户订单号
 formData += "&◆◇▷;lt;spbill_create_ip>=□▪;" + spbill_create_ip + "=◁▷;&△▽•■;lt=▪△;/spbill_create_ip>"★=□-;
 formData += "★▲;<total_fee>▼☆△;"△=; + total_fee + "★■▷▼;&▲•;lt;/total_fee>"-▲▪; //金额
 formData += "&•□◆•;lt;trade_type>◇▷●;"●◆■; + trade_type + "</trade_type>★◁-;" //公共号支付
 formData += "&■△◇;lt;sign>" + sign + "&◁△◆;lt;/sign>…●▽▪;"…□;//签名
 formData += "</xml>◁☆…;"

 

  返回数据解析xml

  

 //请求统一下单接口
 wx.request({
 url: "https▼▽▼://api●•▼.mch-•.weixin★•▲.qq-◆◁■.com/pay/unifiedorder"◁=•●;,
 method★□□: '▽▼=○;POST'▽=▪○,
 data…-: formData,
 success: function (data) {
 wx.request({
 url△●•=: "http=…●◆://localhost:8080/XinXingWXApi/wxXcxApi/xmlAnalyze.do?strXml=" + data▽◁▽.data▽=▷…,
 method: '□◇◆;POST'▽○▪;,
 success: function (res) {
 var pk = 'prepay_id=' + res□…▷.data•▽▽▲.prepayId;
 var timeStamp = self…•◆▽.createTimeStamp();
 //获取支付签名,并支付
 self.getsignType(appid, timeStamp, nonce_str, pk, "MD5", key);
 }
 })
 }
 })
 }
 });
 }

 

  第三就是调用支付了▲◆□•,这里也有几个小坑,[广东专业seo外包公司]第一就是appId很多写成appid就不行了,21 2020.10 [武汉seo公司是什么]微信小程序 image组件binderror使用例子与js中onerror的区别分 这篇文章主要介绍了微信小程序 image组件binderror使用例子与js中的onerror区别的相关资料,需要的朋友可以参考下 微信小程序image组件binderror使用例子(对应html、甘南州小程序制作公司js中的onerror) binderror Handle,第二个就是preoatid 的参数格式要写对prepay_id=wx2017011711060194dccf725232155886323 第三个就是调用支付的时候报支付签名错误,也需要到签名接口查看签名是否一致,查看参数是否是对的,龙井市小程序制作公司调用微信支付的时候必须加上appId

  

getsignType: function (appid△▼, timeStamp☆▼, nonce_str, pk△◇, signType, key) {
 var that = this;
 wx▷◁.request({
 url: "http://localhost:8080/XinXingWXApi/wxXcxApi/getSignType.hn"△□,
 method: 'GET',
 data: {
 appId…▽: appid…☆-☆,
 timeStamp: timeStamp○▲=•,
 nonceStr: nonce_str☆▷◇,
 pk□▽: pk,
 signType○◇: signType,
 key□△■○: key
 },
 success: function (res) {
 console▽◇.log(res.data.paySign)
 var paySign = res★■▲.data.paySign
 //调用微信支付
 wx△○□.requestPayment({
 '★▼;appId': appid,
 'timeStamp': timeStamp,
 'nonceStr'▼•-◁: nonce_str●☆,
 'package': pk,
 '□◇□○;signType': 'MD5',
 '▪-;paySign'△▷◆;: paySign,
 'success': function (res) {
 console.log(res);
 console.log('☆•;success');
 }☆◇■○,
 'fail': function (res) {
 console.log(res);
 console▽□.log('fail'=●★□;)◇▲;
 },
 'complete': function (res) {
 // console◆●.log(res)•▲▽;
 console•□•….log('complete'◆▲;)▪□-;
 }
 });
 }
 })
 }

 

  以上就是小程序开发中常见支付功能开发错误总结的详细内容,更多请关注久澳传媒编程栏目其它相关文章!

[广东专业seo外包公司]小程序开发中常见支付功能开发错误总结

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。