支付宝登录api

1.登录蚂蚁金服,创建应用,并且添加第三方授权,获取会员信息

添加应用后,需要设置密钥,按支付宝提供的工具生成 支付宝公钥和商家私钥。将支付宝公钥填入rsa2密钥中即可。

1.调用支付宝进行网站登录。

前提

登录按钮:

<a href="https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=你的appid&scope=auth_user&redirect_uri=你的验证成功后的回调地址" >支付宝登录</a>

2.登录成功回调服务(可以获得支付宝用户信息)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ page import="java.util.*"%>
<%@ page import="java.util.Map"%>
<%@ page import="com.alipay.api.*"%>
<%@ page import="com.alipay.api.request.*"%>
<%@ page import="com.alipay.api.response.*"%>
<%@ page import="com.sj.utils.AlipayConfig"%>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<%
    //获取支付宝GET过来反馈信息
    Map<String,String> params = new HashMap<String,String>();
    Map requestParams = request.getParameterMap();
    for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
        String name = (String) iter.next();
        String[] values = (String[]) requestParams.get(name);
        String valueStr = "";
        for (int i = 0; i < values.length; i++) {
            valueStr = (i == values.length - 1) ? valueStr + values[i]
                    : valueStr + values[i] + ",";
        }
        //乱码解决,这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化
        valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
        params.put(name, valueStr);
    }

    //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以下仅供参考)//
    //支付宝用户号
    String app_id = new String(request.getParameter("app_id").getBytes("ISO-8859-1"),"UTF-8");
    out.write(app_id + "\n");

    //获取用户信息授权
    String auth_user = new String(request.getParameter("scope").getBytes("ISO-8859-1"),"UTF-8");
    out.write(auth_user + "\n");

    //获的第三方登录用户授权auth_code
    String auth_code = new String(request.getParameter("auth_code").getBytes("ISO-8859-1"),"UTF-8");
    out.write(auth_code + "\n");


    String privateKey = "商家私钥";
    String publicKey = "支付宝公钥";
    String aapid= "你的appid";

    //使用auth_code换取接口access_token及用户userId
     //AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",aapid,privateKey,"json","UTF-8",publicKey,"RSA2");//正常环境下的网关
     AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",appid,privateKey,"json","UTF-8",publicKey,"RSA2");//沙箱下的网关


    //获取用户信息授权
       AlipaySystemOauthTokenRequest requestLogin2 = new AlipaySystemOauthTokenRequest();
       requestLogin2.setCode(auth_code);
       requestLogin2.setGrantType("authorization_code");
       try {
    AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(requestLogin2);
    out.write("<br/>AccessToken:"+oauthTokenResponse.getAccessToken() + "\n");

      //调用接口获取用户信息
    AlipayClient alipayClientUser = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",appid, privateKey, "json", "UTF-8", publicKey, "RSA2"); 
    AlipayUserInfoShareRequest requestUser = new AlipayUserInfoShareRequest();
    try {
        AlipayUserInfoShareResponse userinfoShareResponse = alipayClient.execute(requestUser, oauthTokenResponse.getAccessToken());
        out.write("<br/>UserId:" + userinfoShareResponse.getUserId() + "\n");//用户支付宝ID
  
        out.write("UserType:" + userinfoShareResponse.getUserType() + "\n");//用户类型
        out.write("UserStatus:" + userinfoShareResponse.getUserStatus() + "\n");//用户账户动态
        out.write("Email:" + userinfoShareResponse.getEmail() + "\n");//用户Email地址
        out.write("IsCertified:" + userinfoShareResponse.getIsCertified() + "\n");//用户是否进行身份认证
        out.write("IsStudentCertified:" + userinfoShareResponse.getIsStudentCertified() + "\n");//用户是否进行学生认证
        
        out.write("my:" + userinfoShareResponse.getNickName()+userinfoShareResponse.getAddress() +userinfoShareResponse.getArea() +userinfoShareResponse.getPersonPictures()+userinfoShareResponse.getBody()+"\n");
    } catch (AlipayApiException e) {
        //处理异常
        e.printStackTrace();
    }
    } catch (AlipayApiException e) {
        //处理异常
        e.printStackTrace();
    }
       
      
%>

</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_36472252/article/details/86541584
今日推荐