apicloud访问php,支付宝 app应用 受权 php + APICloud

app应用受权 怎么处理 php

根据文档整理了 php 的代码 仅供参考 json

获取 受权数据信息  api

极简版受权请求参数和返回app

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=post

/**

*获取受权数据

*/

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;//返给前端 去作受权处理哦!

}

若是前端 不用上面那种 提供第二种方案ui

/**

*获取受权数据

*

*/

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;

}

前端 受权成功 会获取到 这样一个回调 数据url

返回结果样例code

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"

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值