将alipay文件夹放在extend目录下
打开支付宝开发者中心
创建一个应用,点击密钥管理,设置接口加签方式:打开支付宝RSA2安装,安装完成后直接生成密钥,将生成密钥所对应的公钥复制到内容配置里,然后保存,支付宝会自动返回一个支付宝公钥
使用:
use alipay\aop\AopClient;
use alipay\aop\request\AlipaySystemOauthTokenRequest;
/**
* 支付宝获取user_id
*/
public function Alipays(){
$auth_code = input('auth_code');
//appId
$appId = '2021001108623781';
if (!$auth_code){
//回调地址(经过转义 的url链接,url必须以http或者https开头),这里的回调地址就是测试号中的授权回调地址
$redirect_uri = 'http://qr.cnzhuoyue.cn/index/fubapay/Alipays';
//url转义
$redirect_uri = urlencode($redirect_uri);
//授权方式(目前只支持auth_userinfo和auth_base两个值)
$scope = 'auth_base';
//授权地址
$authUrl = "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=". $appId ."&scope=". $scope ."&redirect_uri=". $redirect_uri;
return $this->redirect($authUrl);
}else{
//获取授权返回的auth_code
$aop = new AopClient();
//网关,正式环境需要将alipaydev改成alipay
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
//应用私钥
$aop->rsaPrivateKey = '私钥 由软件生成';
//支付宝公钥
$aop->alipayrsaPublicKey = '公钥';
//签名算法类型
$aop->signType = 'RSA2';
$request = new AlipaySystemOauthTokenRequest();
$request->setGrantType("authorization_code");
$request->setCode($auth_code);
$result = $aop->execute($request);
$responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
//获取access_token
$openId = $result->$responseNode->user_id;
$this->redirect('http://qr.cnzhuoyue.cn/index/fubapay/alipay?openId='.$openId);
}
}
注意:具体配置请到支付宝开发中进行配置,这些都是实际项目所使用,不是沙盒环境