PHP code example of muchiiu / alipaytool
1. Go to this page and download the library: Download muchiiu/alipaytool library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
muchiiu / alipaytool example snippets
php artisan vendor:publish --tag=alipaytool
## 小程序端调用(官方示例)
my.getAuthCode({
scopes: 'auth_user', // 主动授权(弹框):auth_user,静默授权(不弹框):auth_base
success: (res) => {
if (res.authCode) {
// 认证成功
// 调用自己的服务端接口,让服务端进行后端的授权认证,并且种session,需要解决跨域问题
my.httpRequest({
url: 'http://xxx.com/auth', // 该url是自己的服务地址,实现的功能是服务端拿到authcode去开放平台进行token验证
data: {
authcode: res.authCode
},
success: () => {
// 授权成功并且服务器端登录成功
},
fail: () => {
// 根据自己的业务场景来进行错误处理
},
});
}
},
});
## 后端示例
/**
* 支付宝授权登录尝试
* code值反馈
* 40002 => authCode(授权码code)无效
* 40006 => ISV权限不足,建议在开发者中心检查对应功能是否已经添加
* 10000 => 请求成功
*/
public function auth(Request $request)
{
$data = $request->all();
$authtoken = $data['authCode'];
$app = new Alipaytool();
$alipay_system_oauth_token_response = $app::getAccessToken($authtoken);
if (isset($alipay_system_oauth_token_response['code']) && $alipay_system_oauth_token_response['code'] == 40002) {
exit('授权码code无效');
}
// echo $alipay_system_oauth_token_response['access_token'];
/**
* 执行成功后 $alipay_system_oauth_token_response => 可以得到如下
* "access_token" => "访问令牌。通过该令牌调用需要授权类接口"
* "alipay_user_id" => "暂时不懂是啥 官方也没有给出"
* "expires_in" => 访问令牌的有效时间,单位是秒。
* "re_expires_in" => 刷新令牌的有效时间,单位是秒。
* "refresh_token" => "刷新令牌。通过该令牌可以刷新access_token"
* "user_id" => "支付宝用户的唯一userId"
*/
$alipay_user_info_share_response = $app::getUserInfoByAccessToken($alipay_system_oauth_token_response['access_token']);
if (isset($alipay_user_info_share_response['code']) && $alipay_user_info_share_response['code'] == 40006) {
exit('ISV权限不足,建议在开发者中心检查对应功能是否已经添加');
}
dd(alipay_user_info_share_response);
/**
* 执行成功后 $alipay_user_info_share_response => 可以得到如下(按照需要存入数据库中)
* "code" => "10000"
* "msg" => "Success"
* "avatar" => "用户头像地址"
* "city" => "市名称。"
* "gender" => "只有is_certified为T的时候才有意义,否则不保证准确性.
性别(F:女性;M:男性)。"
* "is_certified" => "是否通过实名认证。T是通过 F是没有实名认证。"
* "is_student_certified" => "是否是学生"
* "nick_name" => "用户昵称"
* "province" => "省份名称"
* "user_id" => "支付宝用户的userId"
* "user_status" => "用户状态(Q/T/B/W)。 Q代表快速注册用户 T代表已认证用户 B代表被冻结账户 W代表已注册,未激活的账户"
* "user_type" => "用户类型(1/2) 1代表公司账户2代表个人账户"
*/
}