当前位置: 首页 > 后端技术 > PHP

PHP实现支付宝授权获取用户信息

时间:2023-03-30 01:25:29 PHP

最近,公司有个需求。如果用户使用支付宝接入系统,则需要获取用户的一些基本信息。由于之前没有接触过支付包的开发,所以实现起来还是有点麻烦。一:开发准备1:配置沙箱支付宝测试账号在开发过程中,我们可以使用支付宝提供的沙箱支付宝测试账号1):在浏览器上登录支付宝:https://open.alipay.com/platf。..,登录成功后进入我的开放平台2):进入个人开放平台后进入开发中心3):进入研发服务4):按要求填写相关信息2:下载支付宝SDK支付宝SDK地址:https://docs.open.alipay.com/...,下载支付宝SDK到本地,放到我们的项目中2:获取用户信息获取用户信息的流程图如下:php实现支付宝用户信息的获取1:授权:支付宝授权地址:https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=开发者应用的APPID&scope=接口权限值&redirect_uri=回调页面的链接为官方环境下的支付宝授权地址。如果使用沙盒测试号,将授权地址中的alipay改成alipaydev代码实现://appId$appId='2016101000654906';//回调地址(转义后的url链接,url必须以http或https开头),回调这里的地址是测试号中的授权回调地址$redirect_uri='http://x2xdn2.natappfree.cc/index.php?r=alipay/get-user';//urlescape$redirect_uri=urlencode($redirect_uri);//授权方式(目前只支持auth_userinfo和auth_base两个值)$scope='auth_userinfo';//授权地址$authUrl="https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=".$应用程序编号。”&scope=”。$范围。“&redirect_uri=”。$redirect_uri;retu$this->redirect($authUrl);2:授权回调,获取用户信息(在回调方法中)1):导入需要的支付宝SDK文件require_once'../components/alipay/aop/AopClient.php';require_once'../components/alipay/aop/request/AlipaySystemOauthTokenRequest.php';require_once'../components/alipay/aop/request/AlipayUserUserinfoShareRequest.php';2)://获取authorization返回的auth_code$request=Yii::$app->request;$code=$request->get('auth_code','');$aop=new\AopClient();//网关,正式环境需要将alipaydev改为alipay$aop->gatewayUrl='https://openapi.alipaydev.com/gateway.do';//appId$aop->appId='2016101000654906';//开发者私有key$aop->rsaPrivateKey='XXX';//支付宝公钥$aop->alipayrsaPublicKey='XXX';//签名算法类型$aop->signType='RSA2';$request=new\AlipaySystemOauthTokenRequest();$request->setGrantType("authorization_code");$request->setCode($code);$result=$aop->execute($request);$responseNode=str_replace(".","_",$request->getApiMethodName())。"_response";//获取access_token$accessToken=$result->$responsenode->access_token;if($accessToken){//获取用户信息$requestUser=new\AlipayUserUserinfoShareRequest();$info=$aop->execute($requestUser,$accessToken);//在这里传入获取的access_token$responseNodeName=str_replace(".","_",$requestUser->getApiMethodName()).“_回复”;//用户信息$userInfo=$info->$responseNodeName;var_dump($userInfo);}注意:根据上面的可以获取到用户信息,但是支付宝SDK有问题。执行以上代码后,会发现一个ClassSignDatanotfound错误原因:项目中没有引用SignData.php文件。建议的解决方案:AopClient。将require_once'SignData.php'添加到php文件;引用代码,此时可以获取到支付宝的用户信息