微信小程序获取微信绑定的手机号ThinkPhp3.2代码实例

微信小程序获取微信绑定的手机号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' => '参数缺失'));
     }
  }
希望对大家有帮助,有不好的地方可以留言,谢谢

猜你喜欢

转载自blog.csdn.net/weixin_37616043/article/details/80828347
今日推荐