1.获取用户openidjavascript
wx.login({ //调用登陆接口 success: function (res) { if (res.code) { //成功后会有一个code字段 //发起网络请求 var code = res.code; //获得code字段用以获取openid wx.request({ url:'https://api.weixin.qq.com/sns/jscode2session?appid=“此处是你的appid”&secret="此处是小程序的密钥"&js_code='+code+'&grant_type=authorization_code', success: function (res) { if(res){ console.log(res.data); //将openid存储在全局数据中,你能够选择存储在你要存储的地方 that.globalData.openid = res.data.openid; } } }) } else { console.log('获取用户登陆态失败!' + res.errMsg) } } });
2.统一下单 获取prepay_id前端
首先,你采用什么语言选择对应的sdk,记住:微信sdk默认签名是HMACSHA256,由于小程序只支持MD5,故你这里即便获取了prepay_id,在小程序发起支付也会提示“支付签名验证错误”,因此必定要将签名改成MD5,两次签名同样均为MD5方可正常付款。java
3.小程序发起支付小程序
var time = (Date.parse(new Date()) / 1000).toString(); //时间戳 //appid需参与签名,是appId不要写成appid哦 //MD5签名方式,这里我为了演示在前端使用md5,为了安全必定要在后端作好签名再传递到前端 var paySign = MD5Util.MD5("appId=wx22******d5&nonceStr=kc8BmYbdXmdWiQnP&package=prepay_id=wx20171008094057273436b12233229424&signType=MD5&timeStamp="+time+"&key=7b85F**********8D275BF33C").toUpperCase(); console.log(time + ":" + paySign); wx.requestPayment({ 'appId':'wx22******d5', //需传递appid参数 'nonceStr': 'kc8BmYbdXmdWiQnP', 'package': 'prepay_id=wx20171008094057273436b1250400723503', 'signType': 'MD5', 'timeStamp': time, 'paySign': paySign, 'success': function (res) { console.log(res); }, 'fail': function (res) { console.log(res); } })