zoukankan      html  css  js  c++  java
  • SpringBoot整合支付宝(AliPay)的SDK

    SpringBoot整合支付宝(AliPay)的SDK,随着项目不断的增大需要对接的系统比较多,下面主要介绍对接支付宝(alipay),主要介绍是最简单的使用方法,具体的功能实现需要不同的业务逻辑处理,这里就不做过多的解释了。

    1、需要引入alipay-sdk-java.jar

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

    下面由我简单的介绍几个关键词:URL、appId 、privateKey 、aliPayPublicKey

    URL: 表示访问支付宝(AliPay)的请求地址:https://openapi.alipay.com/gateway.do(正式环境),也可以是沙箱环境的测试地址

    appId :表示小程序的APPID,支付宝分配给开发者的应用ID

    privateKey :配置小程序时需要加密后的私有KEY

    aliPayPublicKey:配置小程序时根据私有KEY生成的支付宝共有KEY

    以上的几个关键词在支付宝对接官网上都有详细的步骤,这里就不进行展示了。官网地址:https://opendocs.alipay.com/open/

    2、配置文件application.yml以及AliPayConfig配置文件

    application.yml

    pay:
      alipay:
        appId: ******
        privateKey:  ******
        aliPayPublicKey:  ******
    

    AliPayConfig 配置文件

    @Component
    public class AliPayConfig {
    
        private String url = "https://openapi.alipay.com/gateway.do";
    
        @Value("${pay.alipay.appId}")
        private String appId;
        @Value("${pay.alipay.privateKey}")
        private String privateKey;
        @Value("${pay.alipay.aliPayPublicKey}")
        private String aliPayPublicKey;
    
        private String format = "json";
    
        private String charset ="UTF-8";
    
        private String signType ="RSA2";
    
    
        @Bean
        public AlipayClient alipayClient() {
            return new DefaultAlipayClient(url, appId, privateKey, format, charset, 
                      aliPayPublicKey, signType);
        }
    
    }
    

    3、下面介绍一下怎样的使用,只介绍一种比较简单的请求:换取授权访问令牌(alipay.system.oauth.token)

    openAPI地址:https://opendocs.alipay.com/apis/api_9/alipay.system.oauth.token

    public interface AliPayService {
    
        /**
         * alipay.system.oauth.token(换取授权访问令牌)
         * 
         * @param authCode 用户授权码
         * @return
         */
        AlipaySystemOauthTokenResponse getAccessToken(String authCode);
    }
    
    @Service
    public class AliPayServiceImpl implements AliPayService{
        @Autowired
        private AlipayClient alipayClient;
    
    
        @Override
        public AlipaySystemOauthTokenResponse getAccessToken(String authCode) {
            AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
            request.setGrantType("authorization_code");
            request.setCode(authCode);
            try {
                AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
                if(response.isSuccess()){
                    // 调用成功
                    log.info("请求支付宝接口失败");
                }else{
                    // 调用失败
                    log.info("请求支付宝接口失败");
                }
                return response;
            } catch (AlipayApiException e) {
                log.info("请求支付宝接口失败:{}", e);
                e.printStackTrace();
            }
            return null;
        }
    }
    

      

    希望能帮到你们!谢谢!若有不对的地方,请多指正!多谢!

  • 相关阅读:
    在线整数序列百科全书
    非常完整的线性DP及记忆化搜索讲义
    洛谷P2858 奶牛零食 题解 区间DP入门题
    HDU3394 Railway 题解(边双连通分量)
    POJ1144 Network 题解 点双连通分量(求割点数量)
    LibreOJ6279. 数列分块入门 3 题解
    LibreOJ 6278. 数列分块入门 2 题解
    LibreOJ 6277. 数列分块入门 1 题解
    洛谷P1020 导弹拦截 题解 LIS扩展题 Dilworth定理
    CF1272E. Nearest Opposite Parity 题解 广度优先搜索
  • 原文地址:https://www.cnblogs.com/kbody/p/15405687.html
Copyright © 2011-2022 走看看