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;
}

  

APP支付宝登录--PHP处理代码的更多相关文章

  1. APP支付宝登录第三方授权如何签约入口在哪里

    最近,公司项目要接入支付宝授权登录,第三方SDK接入过不少,一顿按照流程操作.到签约的步骤的时候就把我难住了,入口一直找不到.然后在文档中心搜索“支付宝登录签约”,找到一个申请地址.心想终于找到你了, ...

  2. App支付宝登录授权

    一.在支付宝开放平台申请App应用,并且配置后台信息 https://openhome.alipay.com/platform/appManage.htm#/apps 填写自己的申请信息 添加应用功能 ...

  3. App支付宝支付--PHP处理代码

    /* *生成APP支付订单信息 * @param number uid 用户id * @param string token 用户token * @param number oid 订单id * @p ...

  4. APP微信登录 服务器处理代码

    采用框架THINKPHP5 需要客户端传的参数有  udid openid nickname avatar_path /* * @param 第三方微信登录 * @param openid udid ...

  5. 客户端app支付宝登录接口

    如下内容: $url = 'apiname=com.alipay.account.auth&app_id=APP内容&app_name=mc&auth_type=AUTHACC ...

  6. app支付宝快速入门

    最近在做个车辆认证app,需要用到支付宝付款.前端使用H5,框架是react,后台是java.app支付与普通网页支付差别还是很大,我这里主要对于app支付做说明 1.让财务开通支付宝账号(需要企业税 ...

  7. 使用PHP实现手机端APP支付宝的支付功能

    最近应业务需求,做了支付宝支付和微信支付,今天分享一下手机端app支付宝支付对接流程,实际开发过程是前后端分离,前端调用后端API接口,实现功能返回数据,我所用的跨挤啊为TP5,大致可以分为四步: 1 ...

  8. iOS高仿app源码:纯代码打造高仿优质《内涵段子》

    iOS高仿app源码:纯代码打造高仿优质<内涵段子>收藏下来 字数1950 阅读4999 评论173 喜欢133 Github 地址 https://github.com/Charlesy ...

  9. ThinkPHP5.0 实现 app支付宝支付功能

    前几天做项目,要求要用到支付宝接口,第一次做,弄了好几天 各种坑啊,简单写一下我做支付宝支付的过程,希望对也是第一次做支付宝支付的童鞋有帮助, 不懂的可以先去支付平台看一下支付宝支付的文档,我是下的d ...

随机推荐

  1. win7 vs2010 opengl配置教程

    一.安装GL库文件 1. opengl和glu的安装(不用安装) win7安装完成之后已经默认安装了opengl32.dll和glu32.dll,并且其对应的lib文件也已经安装

  2. bootstrap基础学习【导航条、分页导航】(五)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. React native 禁止手势触摸 pointerEvents

    碰到一个需求是做个轮播图带自动播放的,UED那边给轮播的底部加了阴影渐变,如下红色区域. 这样会导致一个问题,手触摸在红色区域会被这层View挡住,导致不能手动滑动切换. 原先采取过的方法是在对应的触 ...

  4. uwp,c#,全屏播放保持屏幕响应

    在开发视频app的时候,全屏播放一段时间内没有电脑操作,电脑会自动进入睡眠模式,这时就要多写些代码来保持响应了. (这里使用的是MediaElement播放控件,MediaElement需要手动添加代 ...

  5. [转帖]Linux中awk工具的使用

    Linux中awk工具的使用 2018年10月09日 17:26:20 谢公子 阅读数 2170更多 分类专栏: linux系统安全   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权 ...

  6. K8S从入门到放弃系列-(7)kubernetes集群之kube-scheduler部署

    摘要: 1.Kube-scheduler作为组件运行在master节点,主要任务是把从kube-apiserver中获取的未被调度的pod通过一系列调度算法找到最适合的node,最终通过向kube-a ...

  7. 剑指offer57:二叉树的下一个结点

    1 题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 2 思路和方法 中序遍历,下一个结点有两种情况 a ...

  8. 1255: 打怪升级(Java)

    WUSTOJ 1255: 打怪升级 Description 对于多数RPG游戏来说,除了剧情就是打怪升级.本题的任务是用最短的时间取得所有战斗的胜利.这些战斗必须按照特定的顺序进行,每打赢一场,都可能 ...

  9. DMA—直接存储器访问

    DMA 简介 DMA(Direct Memory Access)—直接存储器存取,是单片机的一个外设,它的主要功能是用来搬数据,但是不需要占用 CPU,即在传输数据的时候,CPU 可以干其他的事情,好 ...

  10. MongoDB journal 与 oplog,究竟谁先写入?--转载

    MongoDB journal 与 oplog,谁先写入?最近经常被人问到,本文主要科普一下 MongoDB 里 oplog 以及 journal 这两个概念. journal journal 是 M ...