支付宝获取用户信息

我们项目通过扫码支付,HTML5与后台交互,先获取到用户的信息,在通过信息进行一些支付操作

首先:获取用户信息 

$appid=config('alipay_id');
            $redirect_uri = urlencode ('你的回调地址');
            $url ="https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id={$appid}&scope=auth_base&redirect_uri={$redirect_uri}";
            header("Location:".$url);//此处进行地址跳转

//app_id  支付宝分给商家的标示 
//scope   授权方式 auth_base 静默授权(不需要用户点击直接获取权限)auth_userinfo(需要用户手动授权) 
//redirect_uri  授权回调地址 

支付宝获取商家信息文档地址:https://docs.open.alipay.com/53/104114

支付宝回调地址在开发者配置里边设置 有一个授权回调地址 改为自己可以访问的服务器可以访问路径

/**
     * 授权回调地址 支付宝
     * @return [type] [description]
     */
public function backAlipayUrl()
    {
        //支付宝授权 获取用户信息
        $code = $_REQUEST['auth_code'];
        //APPID
        $appid = config('alipay_id');
        //私钥  文件名(rsa_private_key.pem)
        $rsaPrivateKey = config('private_key');
         
        //公钥  文件名 (rsa_public_key.pem)
        $alipayrsaPublicKey = config('public_key');
        //config[public_key]
         
        //初始化
        $aop = new AopClient ();
        $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
        $aop->appId = $appid;
        $aop->rsaPrivateKey = $rsaPrivateKey;
        $aop->alipayrsaPublicKey = $alipayrsaPublicKey;
        $aop->apiVersion = '1.0';
        $aop->signType = 'RSA2';
        $aop->postCharset='UTF-8';
        $aop->format='json';
        //获取access_token
        $request = new AlipaySystemOauthTokenRequest ();
        $request->setGrantType("authorization_code");
        $request->setCode($code);//这里传入 code
        $result = $aop->execute($request);
        $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
        // $access_token = $result->$responseNode->access_token;
        
        $result = json_decode(json_encode($result),true);
        $user_id = $result[$responseNode]['user_id'];//用户信息 userID
        
        Cache::set('alipayUserid',$user_id);
        return $this->redirect('Payback/pay');
    }

 

### Java集成支付宝API获取用户信息 #### 准备工作 为了通过Java程序调用支付宝API并获得用户的OpenID和其他相关信息,开发者需先完成一系列准备工作。这包括但不限于注册成为支付宝开放平台的开发者账号、创建应用以取得`app_id`以及其他必要的密钥材料[^1]。 #### 配置环境 确保已下载官方提供的最新版SDK,并将其正确引入至项目工程内;同时按照指引设置好相应的依赖项和服务端口等基本信息[^2]。 #### 编码实践 下面给出一段用于请求用户授权并通过授权码换取用户详情(含OpenID)的简化版本代码片段: ```java import com.alipay.api.AlipayApiException; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.request.*; import com.alipay.api.response.*; public class AlipayUserInfo { private static final String SERVER_URL = "https://openapi.alipay.com/gateway.do"; private static final String APP_ID = "your_app_id_here"; // 替换成自己的App ID private static final String PRIVATE_KEY = "your_private_key_here";// 私钥路径或内容 private static final String FORMAT = "json"; private static final String CHARSET = "UTF-8"; private static final String SIGN_TYPE = "RSA2"; /** * 使用默认客户端实例化方法构建DefaultAlipayClient对象, */ DefaultAlipayClient client = new DefaultAlipayClient(SERVER_URL, APP_ID, PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE); /** * 创建一个针对OAuth 2.0协议下的Token交换请求。 */ AlipaySystemOauthTokenRequest tokenReq = new AlipaySystemOauthTokenRequest(); tokenReq.setCode(authCode); // 授权码,在前端页面重定向回调时由URL参数传递而来 try { /** 执行Token交换操作 **/ AlipaySystemOauthTokenResponse oauthResp = client.execute(tokenReq); if (oauthResp.isSuccess()) { System.out.println("access_token:" + oauthResp.getAccessToken()); /** 利用刚刚得到的accessToken发起对用户资料读取的操作 **/ AlipayUserGetRequest userReq = new AlipayUserGetRequest(); AlipayUserGetResponse userResp = client.execute(userReq, oauthResp.getAccessToken()); if (userResp.isSuccess()){ System.out.println("userId(即OpenID):" + userResp.getUserId()); // 可继续处理其他返回的数据... } else{ System.err.println("Failed to get user info."); } }else{ System.err.println("Failed to exchange auth code for access token."); } } catch (AlipayApiException e){ e.printStackTrace(); } } ``` 此段代码展示了如何利用官方提供的SDK库函数来执行OAuth认证过程中的两个主要环节——首先是基于临时授权码向服务器申请长期有效的访问令牌(`access_token`);其次是凭借该令牌查询指定账户的具体属性值,其中就包含了独一无二的身份标识符OpenID。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饭饭咿呀呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值