SpringBoot 集成第三方登录(微信、支付宝)

微信

不了解微信登录过程的可以看一下微信官方文档

1. 登录微信开发平台

1.在微信开发平台里面获取我们需要的AppID、AppSecret 。

微信开发平台
在这里插入图片描述

2.创建配置类


/**
 * @Author ddz
 * @ClassName WxAppConfig
 * @Description
 * @Date 2021/8/12 14:50
 * @Version 1.0
 **/
public class WxAppConfig {
    /**
     * appID
     */
    public static String appID = "AppID";

    /**
     * AppSecret
     */
    public static String appSecret = "AppSecret";

}

3. 开始自己的业务模块

1. 方便测试

支付宝

1. 登录支付宝开发平台

1.在支付宝开发平台里,进入控制台查看自己创建的应用。

支付宝开发平台
获取appid和设置授权回调地址

授权回调地址必须和我们打包时设置的一样,这里我们用测试的链接来测试,在测试的链接后面有个拼接的参数 redirect_uri 必须和设置的一样,不然授权后回调访问不到。
在这里插入图片描述

2. 获取公钥、私钥或者证书模式下获取所需的三个证书

这些获取方法在支付宝支付里面有讲到,不知道的可以去看一下获取的流程。

2. 导入依赖

<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
<dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-sdk-java</artifactId>
    <version>4.15.12.ALL</version>
</dependency>

3. 创建配置类

package com.communist.common.config;


/***
 * 支付宝配置
 * @author Lenovo
 */
public class AlipayConfig {

    /**
     * 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
     */
    public static String APP_ID = "APPID";

    /**
     * AES 密钥
     */
    public static String ENCRYPT_KEY = "AES加密密钥";

    /**
     * 商户私钥,您的PKCS8格式RSA2私钥,这些就是我们刚才设置的
     */
    public static String MERCHANT_PRIVATE_KEY = "应用私钥";

    /**
     * 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。,这些就是我们刚才设置的
     */
    public static String ALIPAY_PUBLIC_KEY = "支付宝公钥";

    /**
     * 异步通知,再这里我们设计自己的后台代码
     */
    public static String notify_url = "异步回调";

    /**
     * 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
     */
    public static String return_url = "";

    /**
     * 支付宝网关
     */
    public static String GATEWAYURL = "https://openapi.alipay.com/gateway.do";

    /**
     * 签名方式 固定
     */
    public static String SIGN_TYPE = "RSA2";

    /**
     * 字符编码格式 固定
     */
    public static String CHARSET = "utf-8";  
}

4.业务模块

1.创建业务接口


    /**
     * 支付宝登录
     *
     *
     * @param authCode @return
     */
    Result aliLogin(String authCode) ;

2. 创建接口实现类


    /**
     * 支付宝登录
     *
     * @param authCode @return
     */
    @Override
    public Result aliLogin(String authCode) {
        // 获取AuthCode 等,具体可以获取哪些数据参考支付宝官方接口文档,这里只需要使用auth_code
        Assert.isTrue(StrUtil.isNotEmpty(authCode), "auth_code is null");
        // 构建client
        DefaultAlipayClient alipayClient = new DefaultAlipayClient(
                AlipayConfig.GATEWAYURL, AlipayConfig.APP_ID, AlipayConfig.MERCHANT_PRIVATE_KEY, "json", AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.SIGN_TYPE);

        // 通过authCode获取accessToken
        AlipaySystemOauthTokenRequest oauthTokenRequest = new AlipaySystemOauthTokenRequest();
        oauthTokenRequest.setCode(authCode);
        oauthTokenRequest.setGrantType("authorization_code");

        AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.certificateExecute(oauthTokenRequest);
        String accessToken = oauthTokenResponse.getAccessToken();
        Assert.isTrue(StrUtil.isNotEmpty(accessToken), "接入支付宝登录认证出现错误,无法获取到accessToken");
        // 根据accessToken获取用户信息
        AlipayUserInfoShareResponse userInfoResponse = alipayClient.certificateExecute(new AlipayUserInfoShareRequest(), accessToken);
        Assert.isTrue(userInfoResponse.isSuccess(), "无法获取用户信息!");
        // userInfoResponse 中有哪些用户信息参考支付宝官方接口文档,这里演示如下几个
        // 下面判断是否授权过、写自己的业务逻辑
      
        return Result.ok();
    }


版权声明:本文为weixin_45626288原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。