APP支付宝登录--PHP处理代码

1.首先需要参数:

aucth_code  udid re_id极光推送id

2.https://open.alipay.com/platform/keyManage.htm

配置公钥私钥

3.需要sdk

采用tp5框架 引入

require  $_SERVER['DOCUMENT_ROOT']. '/vendor/alipay/aop/AopClient.php';
require $_SERVER['DOCUMENT_ROOT'].'/vendor/alipay/aop/request/AlipayTradeAppPayRequest.php';
require $_SERVER['DOCUMENT_ROOT'].'/vendor/alipay/aop/request/AlipayTradeRefundRequest.php';
require $_SERVER['DOCUMENT_ROOT'].'/vendor/alipay/aop/request/AlipayFundTransToaccountTransferRequest.php';
require $_SERVER['DOCUMENT_ROOT'].'/vendor/alipay/aop/request/AlipaySystemOauthTokenRequest.php';
require $_SERVER['DOCUMENT_ROOT'].'/vendor/alipay/aop/request/AlipayUserInfoAuthRequest.php';
require $_SERVER['DOCUMENT_ROOT'].'/vendor/alipay/aop/request/AlipayUserTradeSearchRequest.php';
require $_SERVER['DOCUMENT_ROOT'].'/vendor/alipay/aop/request/AlipayUserInfoShareRequest.php';
require $_SERVER['DOCUMENT_ROOT'].'/vendor/alipay/aop/SignData.php';


 /*
     * @param 第三方支付宝登录
     */
    public function alipay_login(MemberModel $member){

        $code = input('post.');
        if (empty($code["auth_code"])) {
            return_msg('100','缺少必填参数');
        }
        $aop = new \AopClient ();
        $aop->gatewayUrl          = 'https://openapi.alipay.com/gateway.do';
        $aop->appId               = config('alipay_app_id');
        $aop->rsaPrivateKey       = config('alipay_private_key');//私钥
        $aop->alipayrsaPublicKey  = config('alipay_public_key');//支付宝公钥
        $aop->apiVersion          = '1.0';
        $aop->signType            = 'RSA2';
        $aop->format              = 'json';

        $request = new \AlipaySystemOauthTokenRequest();
        $request->setGrantType("authorization_code");
        $request->setCode($code["auth_code"]);
        $result = $aop->execute($request);

        $resultData = (array) $result->alipay_system_oauth_token_response;
        if (empty($resultData['access_token'])) {
            return_msg('100',"获取access_token失败");
        }
        $request = new \AlipayUserInfoShareRequest ();
        $result = $aop->execute ( $request , $resultData['access_token'] );
        $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
        $resultCode = $result->$responseNode->avatar;
        $userData = (array) $result->alipay_user_info_share_response;
        if (empty($userData['code']) || $userData['code'] != 10000) {
            return_msg("获取用户信息失败");
        }
        $chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        $username = "";
        for ( $i = 0; $i < 6; $i++ )
        {
            $username .= $chars[mt_rand(0, strlen($chars))];
        }

        $sj_uname = strtoupper(base_convert(time() - 1420070400, 10, 36)).$username ;
        $datas["userid"] = $result->$responseNode->user_id;   //用户唯一id
        $datas["headimgurl"]  = !empty($result->$responseNode->avatar)?$result->$responseNode->avatar:"http://tapi.zuozuobang.com/public/images/moren/head.png";   //用户头像
        $datas["nick_name"] = !empty($result->$responseNode->nick_name)?$result->$responseNode->nick_name:$sj_uname;    //用户昵称
        //验证数据库中是否有对应的数据
        //首先通过openid查询数据库是否有对应的数据
        $dp["openid"] = $code["openid"];
        $dp["re_id"] = $code["re_id"];
        $dp["avatar_path"] = $datas["headimgurl"];
        $dp["nickname"] = $datas["nick_name"];
        $list  = $member->vf_login($dp);
        if($list){
             
          

            $opty["uid"] = $list['uid'];
            $opty["token"] = $list["token"];
            $opty["nickname"] = $list["nickname"];
            $opty["avatar_path"] = $list["avatar_path"];
            return_msg('200',"登录成功",$opty);
        }else{
            return_msg('100','登录失败');
        }

    }

  

 /**
     * 第三方登录处理
     */
    public function vf_login($data){
        $info  = self::where(['openid'=>$data['openid']])->field('id,lasttime,birthday,money,sex,jifen,flag,face,nickname,icon')->find();
        $data['token']    = generate_token($data['openid']);
        $data['lasttime'] = time();
        $data["addtime"] = time();
         
        $data["icon"] = $data["avatar_path"];
        $data["re_id"] = $data["re_id"];
        unset($data["avatar_path"]);
        if(empty($info)){
            //如果为空 则直接写入
            $info['id'] = self::allowField(true)->insertGetId($data);
            $list['nickname'] = $data['nickname'];
            $list['avatar_path']     = $data['icon'];

        }else{
            $list['nickname'] = $info['nickname'];
            $list['avatar_path']     = !empty($info['icon'])?$info['icon']:"http://tapi.zuozuobang.com/public/images/moren/head.png";
            self::allowField(true)->where(['id'=>$info['id']])->update($data);
        }
        $list['uid']       = $info['id'];
        $list['token']    = $data['token'];
        $list['password']    = md5(md5($data["password"]));
        return $list;
    }

  

猜你喜欢

转载自www.cnblogs.com/yuancr/p/9927600.html