在上一篇笔记中,波波贴了php开发抖音小程序时对接的相关接口代码。参见:《PHP抖音小程序下单支付及订单推送DEMO》。
今天补充一个抖音小程序获取用户手机号的接口对接,由于我是基于前面的代码写的,因此代码中code2session的方法属于直接调用。以免阅读本篇笔记的朋友产生误解。
代码片段:
- /**
- * 解密手机号
- * @param $code
- * @param $iv
- * @param $encrypt
- * @return array
- * @throws \think\db\exception\DbException
- */
- public static function getPhone($code,$iv,$encrypt){
- $phone = '';
- $result = $this->code2Session($code);
- if ($result['error'] == 0){
- $key = $result['session_key'];
- //$openid = $result['openid'];
- //解密数据
- $phone = openssl_decrypt(base64_decode($encrypt,true), 'AES-128-CBC', base64_decode($key), OPENSSL_RAW_DATA, base64_decode($iv));
- if (!$phone){
- return ['code'=>404,'msg'=>'手机号解密失败','data'=>[]];
- }else{
- $phone = json_decode($phone,true)['phoneNumber'];
- return ['code'=>200,'msg'=>'手机号解密成功','data'=>['phone'=>$phone]];
- }
- }else{
- return ['code'=>500,'msg'=>'网络异常,请稍后再试','data'=>[]];
- }
- }
需要注意的细节:
1、解密手机号时不止需要前端传回加密数据encryptData和IV加密向量,同时也需要传值静默获取的code,以便后端获取session_key。
2、前端获取code需要在获取加密数据之前,而不能在获取加密之后获取code,否则会导致解密失败。
3、code有效期5分钟。