php登录处理代码,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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值