思路一:
1. 在小程序端定義button
2. js中調獲取破解用戶手機號的接口(可以在接口裏直接破解之後存儲用戶手機號)
2.1 破解手機號,返回給小程序端
2.2 將手機號存到數據庫
//解密手機號碼
public function doPagegetPhoneNumber()
{
global $_GPC, $_W;
require_once dirname(__FILE__) . '/mail/WXBizDataCrypt.php';
$uniacid = $_W['uniacid'];
$appid = $_GPC['appid'];
$sessionKey = $_GPC['session_key'];
$encryptedData = $_GPC['encryptedData'];
$openid = $_GPC['openid'];
$iv = $_GPC['iv'];
// echo json_encode($_GPC);exit();
$pc = new WXBizDataCrypt($appid, $sessionKey);
$errCode = $pc->decryptData($encryptedData, $iv, $data);
// echo $errCode;exit();
if ($errCode == 0) {
$d = json_decode($data,true); //將json字符串轉化爲數組
$arr['user_tel'] = $d['phoneNumber'];
//根據openid查詢對應用戶信息
if($openid){
//如果存在openid,則查詢對應的數據
$info = pdo_fetchall("select id from " . tablename('yzpx_sun_user') . " where `uniacid`='$uniacid' and openid='$openid'");
if (empty($info)) {
//如果沒有該openid對應的數據則插入該條數據
$arr['time'] = time();
$res = pdo_insert('yzpx_sun_user', $arr);
} else {
////如果沒有該openid對應的數據則更新該條數據
$arr['time'] = time();
$res = pdo_update("yzpx_sun_user", $arr, array('openid' => $openid));
}
}
print($data . "\n"); //將數據返回給小程序端
} else {
print($errCode . "\n");
}
}
(這種辦法小程序端可以少掉一次存儲用戶信息的接口)
思路二:
1. 在小程序端定義button
2. js中調獲取破解用戶手機號的接口, 破解手機號,返回給小程序端
//解密手機號碼
public function doPagegetPhoneNumber()
{
global $_GPC, $_W;
require_once dirname(__FILE__) . '/mail/WXBizDataCrypt.php';
$appid = $_GPC['appid'];
$sessionKey = $_GPC['session_key'];
$encryptedData = $_GPC['encryptedData'];
$iv = $_GPC['iv'];
// echo json_encode($_GPC);exit();
$pc = new WXBizDataCrypt($appid, $sessionKey);
$errCode = $pc->decryptData($encryptedData, $iv, $data);
// echo $errCode;exit();
if ($errCode == 0) {
print($data . "\n");
} else {
print($errCode . "\n");
}
}
3.小程序端將返回的手機號傳回後端,調用存儲用戶信息的接口,存儲手機號