合并微信小程序和支付宝小程序登录入口
This commit is contained in:
@@ -0,0 +1,92 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.alipayUtil;
|
||||||
|
|
||||||
|
import com.alipay.api.AlipayApiException;
|
||||||
|
import com.alipay.api.AlipayClient;
|
||||||
|
import com.alipay.api.AlipayConfig;
|
||||||
|
import com.alipay.api.DefaultAlipayClient;
|
||||||
|
import com.alipay.api.request.AlipaySystemOauthTokenRequest;
|
||||||
|
import com.alipay.api.response.AlipaySystemOauthTokenResponse;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付宝通用SDK工具类
|
||||||
|
*
|
||||||
|
* @author tankaikai
|
||||||
|
* @since 2024-09-23 16:15
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
public class AlipayUtil {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 网关地址 线上:https://openapi.alipay.com/gateway.do 沙箱:https://openapi.alipaydev.com/gateway.do
|
||||||
|
*/
|
||||||
|
@Value("${alipay.sdk.config.serverUrl}")
|
||||||
|
private String serverUrl;
|
||||||
|
/**
|
||||||
|
* 应用ID
|
||||||
|
*/
|
||||||
|
@Value("${alipay.sdk.config.appId}")
|
||||||
|
private String appId;
|
||||||
|
/**
|
||||||
|
* 应用私钥
|
||||||
|
*/
|
||||||
|
@Value("${alipay.sdk.config.privateKey}")
|
||||||
|
private String privateKey;
|
||||||
|
/**
|
||||||
|
* 支付宝公钥
|
||||||
|
*/
|
||||||
|
@Value("${alipay.sdk.config.alipayPublicKey}")
|
||||||
|
private String alipayPublicKey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建支付宝客户端
|
||||||
|
* @return AlipayClient
|
||||||
|
*/
|
||||||
|
@SneakyThrows
|
||||||
|
public AlipayClient createClient() {
|
||||||
|
AlipayConfig alipayConfig = new AlipayConfig();
|
||||||
|
//设置网关地址
|
||||||
|
alipayConfig.setServerUrl(serverUrl);
|
||||||
|
//设置应用ID
|
||||||
|
alipayConfig.setAppId(appId);
|
||||||
|
//设置应用私钥
|
||||||
|
alipayConfig.setPrivateKey(privateKey);
|
||||||
|
//设置支付宝公钥
|
||||||
|
alipayConfig.setAlipayPublicKey(alipayPublicKey);
|
||||||
|
return new DefaultAlipayClient(alipayConfig);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取支付宝用户的openId
|
||||||
|
* @param code 用户信息授权码
|
||||||
|
* @return openId
|
||||||
|
*/
|
||||||
|
public String getOpenId(String code) throws AlipayApiException{
|
||||||
|
AlipaySystemOauthTokenRequest req = new AlipaySystemOauthTokenRequest();
|
||||||
|
//SDK已经封装掉了公共参数,这里只需要传入业务参数
|
||||||
|
req.setCode(code);
|
||||||
|
req.setGrantType("authorization_code");
|
||||||
|
//此次只是参数展示,未进行字符串转义,实际情况下请转义
|
||||||
|
//req.setBizContent(" {" + " \"primary_industry_name\":\"IT科技/IT软件与服务\"," + " \"primary_industry_code\":\"10001/20102\"," + " \"secondary_industry_code\":\"10001/20102\"," + " \"secondary_industry_name\":\"IT科技/IT软件与服务\"" + " }");
|
||||||
|
AlipaySystemOauthTokenResponse response;
|
||||||
|
try {
|
||||||
|
response = createClient().execute(req);
|
||||||
|
}catch (AlipayApiException e){
|
||||||
|
log.error("获取支付宝用户信息失败,错误码:{},错误信息:{}", e.getErrCode(), e.getErrMsg());
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
//调用失败
|
||||||
|
if (!response.isSuccess()) {
|
||||||
|
log.error("获取支付宝用户信息失败,错误码:{},错误信息:{}", response.getSubCode(), response.getSubMsg());
|
||||||
|
throw new AlipayApiException(response.getSubCode(), response.getSubMsg());
|
||||||
|
}
|
||||||
|
//调用成功,则处理业务逻辑
|
||||||
|
return response.getOpenId();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package com.chaozhanggui.system.cashierservice.auth;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 三方登录认证来源
|
||||||
|
* @author tankaikai
|
||||||
|
* @since 2024-09-23 17:51
|
||||||
|
*/
|
||||||
|
public enum AuthSource {
|
||||||
|
WECHAT("微信", "wechat"),
|
||||||
|
ALIPAY("支付宝", "alipay");
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
private String value;
|
||||||
|
|
||||||
|
AuthSource(String name, String value) {
|
||||||
|
this.name = name;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValue(String value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user