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);
}
}
}