微信小程序获取微信绑定的手机号ThinkPhp3.2代码实例
在现在小程序流行中,获取用户的手机号是很多小程序项目必须的功能,有很多小程序是让用户填写手机号,发送验证码,来绑定手机。但是小程序有获取手机号的API。我自己看微信文档写了接口。目前项目正在使用,很稳定,这里需要用session_key
,app_id
进行解密获取手机号。session_key
有效期,需要注意的。
PHP代码段:
/** * 检验数据的真实性,并且获取解密后的明文. * @param $encryptedData string 加密的用户数据 * @param $iv string 与用户数据一同返回的初始向量 * @param $data string 解密后的原文 * * @return int 成功0,失败返回对应的错误码 */
public function decryptData( $encryptedData, $iv, &$data,$sessionKey,$appid ) { if (strlen($sessionKey) != 24) { return "1000"; } $aesKey=base64_decode($sessionKey); if (strlen($iv) != 24) { return "error2"; } $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 "aes 解密失败1"; } if( $dataObj->watermark->appid != $appid ) { return "aes 解密失败2"; } $data = $result; return "OK"; } //手机绑定传session_key public function get_session_key(){ $encryptedData=I('post.encryptedData'); $iv=I('post.iv'); $openid=I('post.openid'); $info=M('wx_config')->field("appid")->where('id=1')->find(); $appid=$info['appid']; if($openid&&$appid&&$iv&&$encryptedData){ $user_info=M('user')->field('session_key')->where(array('openid'=>$openid))->find(); $sessionKey=urldecode($user_info['session_key']); $errCode = $this->decryptData($encryptedData, $iv, $data,$sessionKey,$appid); if ($errCode == "OK") { //获取用户绑定的手机号成功 print($data . "\n"); } else { print($errCode . "\n"); } }else{ $this->ajaxReturn(array('code' => 300, 'msg' => '参数缺失')); } }
希望对大家有帮助,有不好的地方可以留言,谢谢