thinkphpとWeChatウィジェットのライセンス登録の心得について、完全コードを追加します。

4992 ワード

1.アプレット端代
 
var app = getApp();
var url = 'http://shzujune.com/mianya/public/index/index/wxlogin';
var login = function (code, encryptedData, iv, signature, rawData) {
  var that = this
  //    dialog  
  wx.showToast({
    title: '    ...',
    icon: 'loading',
    duration: 5000
  });
  wx.request({
    url: url,
    method: 'get',
    data: {
      code: code,
      encryptedData: encryptedData,
      iv: iv,
      signature:signature,
      rawData:rawData
    },
    header: {
      'Content-Type': 'application/json'
    },
    success: function (res) {
      wx.hideToast()
      //console.log('     ' + res.data)
      app.globalData.userInfo = res.data
    },
    fail: function () {
      wx.showToast({
        title: '    !',
        duration: 2000
      })
    },
    complete: function () {
  
    }
  })
}
Page({
  data: {
    //      API,  ,  ,            。
    canIUse: wx.canIUse('button.open-type.getUserInfo')
  },
  onLoad: function () {
    var that = this
    wx.login({
      success: function (res) { //    
        //console.log(res)
        if (res.code) {
          var code = res.code
          wx.getUserInfo({ //getUserInfo  
            success: function (data) { //getUserInfo        
              //console.log(data)
              //encryptedData    ,iv    ,encodeURIComponent         URI   
              var encryptedData = encodeURIComponent(data.encryptedData);
              var iv = encodeURIComponent(data.iv);
              var signature = data.signature
              var rawData = data.rawData
              //        
              login(code, encryptedData, iv, signature, rawData);
              //       
              wx.switchTab({
                url: '../rec/rec',
              })
            }
          })
        } else {
          console.log('        !' + res.errMsg)
        }
      }
    });
  },
  bindGetUserInfo: function (e) {
    //console.log(e)
    if (e.detail.userInfo) {
      //           
      var that = this
      wx.login({
        success: function (res) {
          if (res.code) {
            var code = res.code
            wx.getUserInfo({
              success: function (data) {
                var encryptedData = encodeURIComponent(data.encryptedData);
                var iv = encodeURIComponent(data.iv);
                var signature = data.signature;
                var rawData = data.rawData;
                //        
                login(code, encryptedData, iv, signature, rawData);
              }
            })
          }
        }
      })
      //     ,         
      wx.switchTab({
        url: '../rec/rec'
      })
    } else {
      //        
      wx.showModal({
        title: '  ',
        content: '        ,        ,        !!!',
        showCancel: false,
        confirmText: '    ',
        success: function (res) {
          if (res.confirm) {
            console.log('     “    ”')
          }
        }
      })
    }
  },
})
2.phpエンドコード
httpGet($url),true);
	    $sessionKey = $res['session_key']; //  json     
	    $signature2 = sha1(htmlspecialchars_decode($rawData).$sessionKey);
	    
	    //     
	    if ($signature2 !== $signature){
	      echo json_encode("    ");
	    } 
	    //         
	    $pc = new \WXBizDataCrypt($appid, $sessionKey);
	    $errCode = $pc->decryptData($encryptedData, $iv, $data);
	    if ($errCode == 0) {
	      echo json_encode($data);
	    } else {
	      echo json_encode($errCode);
	    }
	}


	 
}