阿里云号码认证服务服务端PHP版

9 篇文章 0 订阅

TP5.1写的api

官方接入说明:https://github.com/aliyun/openapi-sdk-php/blob/master/README-zh-CN.md?spm=a2c4g.11186623.2.13.267a16e4QkHp9N&file=README-zh-CN.md
客户端对接好之后,发送请求到服务端

  1. composer下载PHP版sdk
    composer require alibabacloud/sdk
    
    下载的内容:
    在这里插入图片描述
  2. 将安卓端传过来的内容用sdk换算成手机号码返回
//引入sdk
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;

class User extends Comment
{

    /*
     * 注册/登录
     */
    public function login()
    {
        // 获取手机token
        $token = input('get.token');
        $token = trim($token);
        // 判断登录token是否有效
        if (!$token) {
            //如果token为空就返回
            $res = [
                'state' => 100,
                'msg' => 'token不能为空,请重试'
            ];
            return json_encode($res);
        } else {
            //调用getPhone方法并且将token传给getPhone
            $res = $this->getPhone($token);
            //如果返回的状态为1说明是注册过的用户
            if ($res['state'] == 1) {
                $phone = $res['phone'];
                //传入手机号码调用hasUser方法
                $data = $this->hasUser($phone);
                //返回给安卓端登录状态
                return json_encode($data);
            } else {
                //如果没有注册过就返回注册状态
                return json_encode($res);
            }
        }

    }

    /*
     * 根据token换取手机号码
     */
    public function getPhone($token)
    {
        AlibabaCloud::accessKeyClient(Config::get('xianqi.phone_access_key'), Config::get('xianqi.phone_access_secret'))
            ->regionId('cn-hangzhou')
            ->asDefaultClient();
        try {
            $result = AlibabaCloud::rpc()
                ->product('Dypnsapi')
                ->scheme('https')// https | http
                ->version('2017-05-25')
                ->action('GetMobile')
                ->method('POST')
                ->host('dypnsapi.aliyuncs.com')
                ->options([
                    'query' => [
                        'RegionId' => "cn-hangzhou",
                        'AccessToken' => $token
                    ],
                ])
                ->request();

            // 将返回的结果转化为数组
            $result = $result->toArray();
            //判断当前数组不为空
            if (isset($result['GetMobileResultDTO']['Mobile'])) {
                // token不为空返回手机号码
                $phone = $result['GetMobileResultDTO']['Mobile'];
                $res = [
                    'state' => 1,
                    'phone' => $phone
                ];
                return $res;
            } else {
                //如果token为空
                $res = [
                    'state' => 0,
                    'msg' => 'token无效'
                ];
                return $res;
            }

        } catch (ClientException $e) {//有异常就抛出异常
            // 客户端错误
            $res = [
                'state' => 101,
                'msg' => '注册失败'
            ];
            return $res;
        } catch (ServerException $e) {
            // 服务端错误
            $res = [
                'state' => 101,
                'msg' => '注册失败'
            ];
            return $res;
        }
    }

    /*
     * 查询数据库中是否有该用户,存在则登录,不存在则注册
     */
    public function hasUser($phone)
    {

        $data = Db::table('sh_member')->where('phone', $phone)->select();
        // 判断该用户是注册用户还是登录用户
        if (empty($data)) {
            //如果当前用是注册用户就将内容存进数据库
            Db::table('sh_member')->data(['phone' => $phone])->insert();

            // 返回注册信息
            $res = [
                'state' => 1,
                'msg' => '注册成功',
                'data' => [
                    'phone' => $phone,
                    'register' => true
                ]

            ];
            return $res;
        } else {
            // 如果是登录用户则将返回查询结果
            $phone = $data[0]['phone'];
            $isbuy = $data[0]['isbuy'];

            // 返回登录信息
            $res = [
                'state' => 1,
                'msg' => '登录成功',
                'data' => [
                    'phone' => $phone,
                    'register' => false
                ]
            ];
            return $res;
        }
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值