设计联盟

PHP:微信小程序微信支付服务端集成实例详解及源码下载

发布日期:2017-01-11 21:56:47   浏览量:


4. 小程序内调用登录接口,获取openid

向微信登录请求,拿到code,再将code提交换取openId

wx.login({
     success: function(res) {
      if (res.code) {
       //发起网络请求
       wx.request({
        url: 'https://api.weixin.qq.com/sns/jscode2session?appid=wx9114b997bd86f***&secret=d27551c7803cf16015e536b192******&js_code='+res.code+'&grant_type=authorization_code',
        data: {
         code: res.code
        },
        success: function (response) {
          console.log(response);
        }
       })
      } else {
       console.log('获取用户登录态失败!' + res.errMsg)
      }
     }
    });

从控制台看到已经成功拿到openid,剩下的事情就是将它传到服务端就好了,服务端那边$this->input->post('openId')等着收呢。

 

5. 小程序端向https://lendoo.leanapp.cn/index.php/WXPay发起请求,作统一下单

    //统一下单接口对接
          wx.request({
            url: 'https://lendoo.leanapp.cn/index.php/WXPay',
            data: {
              openId: openId
            },
            success: function (response) {
              console.log(response);

            },
                header: {
            'content-type': 'application/x-www-form-urlencoded'
        },
          });

得到如下结果

{
 "appid": "wx9114b997bd86f8ed",
 "mch_id": "1414142302",
 "nonce_str": "eEICgYFuGqxFRK6f",
 "prepay_id": "wx201701022235141fc713b8f80137935406",
 "result_code": "SUCCESS",
 "return_code": "SUCCESS",
 "return_msg": "OK",
 "sign": "63E60C8CD90394FB50E612D085F5362C",
 "trade_type": "JSAPI"
}

前提是https://lendoo.leanapp.cn已经在白名单。

 

6. 小程序端调起支付API

// 发起支付
var appId = response.data.appid;
var timeStamp = (Date.parse(new Date()) / 1000).toString();
var pkg = 'prepay_id=' + response.data.prepay_id;
var nonceStr = response.data.nonce_str;
var paySign = md5.hex_md5('appId='+appId+'&nonceStr='+nonceStr+'&package='+pkg+'&signType=MD5&timeStamp='+timeStamp+"&key=d27551c7803cf16***e536b192d5d03b").toUpperCase();
console.log(paySign);
console.log(appId);
wx.requestPayment({
  'timeStamp': timeStamp,
  'nonceStr': nonceStr,
  'package': pkg,
  'signType': 'MD5',
  'paySign': paySign,
  'success':function(res){
    console.log('success');
    console.log(res);
  }
});

模拟器测试,将弹出一个二维码供扫描……

继续阅读