php 微信自動獲取手機號
阿新 • • 發佈:2021-01-05
/**
* 檢驗資料的真實性,並且獲取解密後的明文.
* @param $encryptedData string 加密的使用者資料
* @param $iv string 與使用者資料一同返回的初始向量
* @param $data string 解密後的原文
*
* @return int 成功0,失敗返回對應的錯誤碼
*
*/
public function decryptData($appid, $session_key, $encryptedData, $iv, &$data)
{
if (strlen($session_key ) != 24) {
return -41001;
}
$aesKey = base64_decode($session_key);
if (strlen($iv) != 24) {
return -41002;
}
$aesIV = base64_decode($iv);
$aesCipher = base64_decode($encryptedData);
$result = openssl_decrypt($aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
$dataObj = json_decode($result);
if ($dataObj == NULL) {
return -41003;
}
if ($dataObj->watermark->appid != $appid) {
return -41003;
}
$data = $result;
return 0;
}
/**
* 自動獲取手機號
*/
public function bind_mobile_auto()
{
$user_id = $this-> get_user_id();
$encryptedData = input("encryptedData");
$iv = input('iv');
if (!$encryptedData) {
ajaxReturn(['status' => -1, 'msg' => 'encryptedData 不能為空']);
} elseif (!$iv) {
ajaxReturn(['status' => -1, 'msg' => 'iv 不能為空']);
}
$appid = '';
$openid = '';
$sion_key = '';
$errCode = $this->decryptData($appid, $session_key, $encryptedData, $iv, $data);
if ($errCode == 0) {
$arr = json_decode($data, true);
$purePhoneNumber = $arr['purePhoneNumber']; //手機號碼
}
}