php 支付宝用户信息授权,支付宝 app应用 授权 php + APICloud
app应用授权 怎么处理
根据文档整理了 php 的代码 仅供参考
获取 授权数据信息
极简版授权请求参数和返回
apiname=com.alipay.account.auth&app_id=2016051801417322&app_name=mc&auth_type=AUTHACCOUNT&biz_type=openservice&method=alipay.open.auth.sdk.code.get&pid=2088221932028920&product_id=APP_FAST_LOGIN&scope=auth_user&sign_type=RSA&target_id=61ef37122e104d148c855d14e9bf90e2&sign=m6K7Dz4CxPAgLn2uwIjGSmgRcOBYtHcqaYqLc85/C6PCqoIu6tUHDmx5/hb0xy+dMCdQoFcQWKRGzBl040g/6avD/PhOUSUi9Cmtd2HxSzEEjk7LuFn9QrpAmcM7/tub+K/G/2rQp9ce8FY2RCbJ/sFDA09M5B+2gqzy9Qkc5fE=
/**
*获取授权数据
*/
public function get_auth_data(){
$appid = '1111'; // 商户账号appid
$sign_type = 'RSA2';
$targetId = mt_rand(000000,999999);//此处随机获取
$data = [
'apiname'=>'com.alipay.account.auth',
'method'=>'alipay.open.auth.sdk.code.get',
'app_id'=>$appid,//支付宝分配给开发者的应用ID
'app_name'=>'mc',
'biz_type'=>'openservice',
'pid'=>'11111',//签约的支付宝账号对应的支付宝唯一用户号,以2088开头的16位纯数字组成 登录你的支付宝 用户信息中 可以找到
'product_id'=>'APP_FAST_LOGIN', //标识授权类型,取值范围:AUTHACCOUNT代表授权;LOGIN代表登录
'scope'=>'kuaijie',
'target_id'=>$targetId, //商户标识该次用户授权请求的ID,该值在商户端应保持唯一
'auth_type'=>'AUTHACCOUNT',//授权类型 AUTHACCOUNT:授权 LOGIN:登录
'sign_type'=>$sign_type,//签名算法类型
];
//读取配置信息
$aop = new \AopClient;
$aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
$aop->appId = '1111111';//支付宝分配给开发者的应用ID
$aop->rsaPrivateKey = '1111111';//支付宝私钥
$aop->format = "json";
$aop->charset = "UTF-8";
$aop->signType = "RSA2";
$aop->alipayrsaPublicKey = '1111111';//支付宝公钥
$sign = $aop->generateSign($data,$sign_type);//生成sing 此处用的 支付宝 demo封装好的
$sign = urlencode($sign);
ksort($data);
$str='';
foreach($data as $k=>$v) {
$str.=$k.'='.$v.'&';
}
$str.= 'sign='.$sign;
/* var_dump($str);
exit;*/
$str.= 'sign='.$sign;
/* var_dump($str);
exit;*/
return $str;//返给前端 去做授权处理哦!
}
如果前端 不用上面那种 提供第二种方案
/**
*获取授权数据
*
*/
public function get_data(){
$targetId = mt_rand(000000,999999);
$data = [
'appId'=>'1111', // 商户账号appid
'targetId'=>$targetId , //商户标识
'partner'=>'1111',//支付宝唯一用户号
'rsaPriKey'=>'1111',//商户私钥
'authType'=>'AUTHACCOUNT',//AUTHACCOUNT:授权 LOGIN:登录
'rsa2'=>true, 签名方式
];
return $data;
}
前端 授权成功 会获取到 这样一个回调 数据
返回结果样例
resultStatus=9000
memo="处理成功"
result="success=true&auth_code=d9d1b5acc26e461dbfcb6974c8ff5E64&result_code=200 &user_id=2088003646494707"
然后就 是 调用
alipay.system.oauth.token
function auth_user($uid,$authorization_code=''){
$config = $config->toArray()[0];
$aop = new \AopClient ();
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
$aop->appId = '111111';//支付宝分配给开发者的应用ID
$aop->rsaPrivateKey = '11111'; //支付宝私钥
$aop->alipayrsaPublicKey= '11111'; //支付宝公钥
$aop->apiVersion = '1.0';
$aop->signType = 'RSA2';
$aop->postCharset='UTF-8';
$aop->format='json';
$request = new \AlipaySystemOauthTokenRequest();
$request->setGrantType("authorization_code");// 值为authorization_code时,代表用code换取;值为refresh_token时,代表用refresh_token换取
$request->setCode($authorization_code);//前端返回数据 包含的 授权码,用户对应用授权后得到。
// $request->setRefreshToken("12121212121");//刷刷新令牌,上次换取访问令牌时得到。见出参的refresh_token字段 与code验证 二选一
$result = $aop->execute($request);
$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
$resultCode = $result->$responseNode->code;
if(!empty($resultCode)&&$resultCode == 10000){
$alipay_user_id = $result['user_id'];//获取用户唯一支付宝标识
return self::memeber_update($uid,$alipay_user_id);//保存到你的数据里
} else {
return false;
}
}
然后其他的就是你自由发挥了
追加一下 研究了一下网页版的 只不h5 授权页只能在支付宝客户端里使用,否则会报错
同样 可以获取 auth_code
/*
*获取授权数据
*
*/
public function get_auth_url(){
$appid = '11111' // 开发者应用的app_id
$redirect_uri = 'http://www.baidu.com/api/authnotify';//回调页面,是 经过转义 的url链接(url必须以http或者https开头),比如:http%3A%2F%2Fexample.com
在请求之前,开发者需要先到开发者中心对应应用内,配置授权回调地址。
$redirect_uri = UrlEncode($redirect_uri);
$application_type = 'MOBILEAPP';//
$url ="https://openauth.alipay.com/oauth2/appToAppBatchAuth.htm?app_id={$appid}&application_type={$application_type}&redirect_uri={$redirect_uri}";
return $url;
}
在回调地址页面 获取下面的 结果
{
"alipay_system_oauth_token_response": {
"access_token": "111",
"user_id": "111",
"alipay_user_id": "1111",
"expires_in": 300,
"re_expires_in": 300,
"refresh_token": "11"
},
"sign": "1111"
}
php 支付宝用户信息授权,支付宝 app应用 授权 php + APICloud相关推荐
- 微信小程序如何实现同时授权用户信息和手机号码不重复授权问题
相信很多小伙伴都有遇到了在点击一个按钮时想要实现同时获取到用户信息及手机号码并且授权过后不重复授权的操作,分享一下我的方法~ <!--index.wxml--> <!--showPo ...
- php 支付宝用户信息授权,h5端支付宝第三方用户信息接口demo
1 准备:去阿里开放平台注册申请成为开发者,然后添加一个web或者移动端应用并选择免费会员信息接口 具体流程参考支付宝开放平台开发文档即可. 2 在index.php中配置好申请的$APPID和$EN ...
- java获取支付宝用户信息
准备工作 1.在蚂蚁金服开发平台申请成为开发者 https://openhome.alipay.com/platform/home.htm 2.进入开发者中心创建应用 3.进入应用设置相应配置 生成密 ...
- 微信小程序授权登录以及用户信息相关接口调整导致授权框不弹出问题解决办法
4月8号升级了小程序业务后提交了版本并上线.突然一个同事说体验版的点击"登录"按钮无效.当时觉得应该不会呀,这几天一直用手机调试,每天也在不停的登录授权,弹框一直有的呀.然后为了验 ...
- 微信小程序获取用户信息接口突然不弹授权框了,用户名‘微信用户’,头像空白(<button open-type=“getUserInfo“/>已弃用)
最近突然遇到了很奇怪的问题,昨天一切正常,今天小程序体验版就获取用户信息不弹框了,直接就拿到了用户信息,但是是匿名的,用户名是"微信用户",头像是空白的,关键这部分代码复用的前一个 ...
- php 支付宝用户信息授权
大家好 这是我的第一篇文章 我是一名非常菜鸟的PHP程序员 今天做了一下支付宝的授权接口分享一下 希望能帮助大家 首先进入支付宝沙箱环境应用页 https://openhome.alipay.c ...
- 蚂蚁开放平台—获取支付宝用户信息
2019-07-08 新增 官方有个链接可以直接查看,直接支付宝APP扫码即可查看自己的userid: 开发流程:https://docs.open.alipay.com/284/106001/ (官 ...
- 监听服务器app登录用户信息,监控服务器状态app
监控服务器状态app 内容精选 换一换 AOM可与消息通知服务.分布式消息服务.云审计等服务配合使用.例如,通过消息通知服务您可将AOM的阈值规则状态变更信息通过短信或电子邮件的方式发送给相关人员.同 ...
- 微信小程序开发之——用户登录-获取用户信息(5),意外收获字节跳动内部资料
{{userInfo.nickName}} {{userInfo.city}} {{userInfo.gender0?"未知":userInfo.gender1?"男&q ...
最新文章
- DWR小结DWRUtil篇
- SQL Server中的char,nchar,varchar和nvarchar有什么区别?
- 数据结构之排序算法(C语言)
- 《Effective C++》读书笔记(第一部分)
- mysql 数据库导入导出方法总结
- 《c语言从入门到精通》看书笔记——第14章 文件
- ThinkPHP--栏目增删改查ADSF
- [Spring5]IOC容器_Bean管理XML方式_创建对象_set注入属性and有参构造注入属性
- 漫画:大厂总提SaaS化部署,到底什么是IaaS、PaaS和SaaS?
- linux防火墙为空文件夹,如何记录Linux IPTables防火墙丢弃的数据包到日志文件-linux防火墙设置...
- Spring 之autowired
- android 名称解释
- mysql where 中能否使用update_mysql – 可以在WHERE中执行UPDATE子句吗?
- ASP.NET网络版进销存管理系统源码【源码免费分享】
- 再问运费查询的具体实现问题
- Vue在线客服系统【开源项目】
- zookeeper压缩包下载地址
- 使用pandoc 生成带中文的pdf
- 电脑蓝牙无法搜索到其它蓝牙设备
- html设置弹性盒子分配自适应比例,移动端弹性布局flex,CSS3自适应