Helius
2021-09-27 b05f3c36b4ec6edf570e83c5b6c638799823a856
add alipay
7 files added
6 files modified
286 ■■■■■ changed files
pom.xml 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/configure/AliPayConfigure.java 43 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java 31 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/model/AliPayPassbackModel.java 15 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/properties/AliPayProperties.java 24 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/service/IPayService.java 12 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java 62 ●●●●● patch | view | raw | blame | history
src/main/resources/application-dev.yml 12 ●●●●● patch | view | raw | blame | history
src/main/resources/application-prod.yml 12 ●●●●● patch | view | raw | blame | history
src/main/resources/application-test.yml 12 ●●●●● patch | view | raw | blame | history
src/test/java/cc/mrbird/febs/PayTest.java 33 ●●●●● patch | view | raw | blame | history
pom.xml
@@ -23,6 +23,7 @@
        <tomcat.version>9.0.31</tomcat.version>
        <hutool.version>5.3.1</hutool.version>
        <aliyun-oss.version>3.8.0</aliyun-oss.version>
        <ijapy.version>2.7.8</ijapy.version>
        <mapstruct.version>1.3.1.Final</mapstruct.version>
    </properties>
@@ -274,6 +275,12 @@
        </dependency>
        <dependency>
            <groupId>com.github.javen205</groupId>
            <artifactId>IJPay-AliPay</artifactId>
            <version>${ijapy.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java
@@ -21,5 +21,6 @@
        registration.excludePathPatterns("/api/common/**");
        registration.excludePathPatterns("/api/category/**");
        registration.excludePathPatterns("/api/goods/**");
        registration.excludePathPatterns("/api/pay/**");
    }
}
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -20,6 +20,7 @@
import cc.mrbird.febs.mall.vo.OrderDetailVo;
import cc.mrbird.febs.mall.vo.OrderListVo;
import cc.mrbird.febs.mall.vo.OrderRefundVo;
import cc.mrbird.febs.pay.service.IPayService;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUnit;
@@ -61,6 +62,7 @@
    private final RedisUtils redisUtils;
    private final AgentProducer agentProducer;
    private final IPayService payService;
    @Override
    @Transactional(rollbackFor = Exception.class)
@@ -164,20 +166,21 @@
            throw new FebsException("订单状态不能支付");
        }
        String orderNo = "";
        String payResultStr = "";
        switch (payOrderDto.getType()) {
            case "1":
                orderInfo.setPayOrderNo(payOrderDto.getPayOrderNo());
                orderInfo.setPayImage(payOrderDto.getPayImage());
//                orderInfo.setPayOrderNo(payOrderDto.getPayOrderNo());
//                orderInfo.setPayImage(payOrderDto.getPayImage());
                orderInfo.setPayMethod("微信支付");
                break;
            case "2":
                orderInfo.setPayOrderNo(payOrderDto.getPayOrderNo());
                orderInfo.setPayImage(payOrderDto.getPayImage());
                payResultStr = payService.aliPay(orderInfo);
                orderInfo.setPayOrderNo(payResultStr);
                orderInfo.setPayMethod("支付宝支付");
                break;
            case "3":
                orderNo = balancePay(orderInfo, payOrderDto.getTradePwd());
                payResultStr = balancePay(orderInfo, payOrderDto.getTradePwd());
                orderInfo.setPayOrderNo(orderInfo.getOrderNo());
                orderInfo.setPayMethod("积分支付");
@@ -193,11 +196,12 @@
        memberService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), null, null, null, null);
        Map<String, Object> map = new HashMap<>();
        map.put("orderNo", orderNo);
        map.put("orderInfo", payResultStr);
        map.put("orderNo", orderInfo.getOrderNo());
        map.put("orderId", orderInfo.getId());
        agentProducer.sendAutoLevelUpMsg(member.getId());
        agentProducer.sendReturnMoneyMsg(orderInfo.getId());
//        agentProducer.sendAutoLevelUpMsg(member.getId());
//        agentProducer.sendReturnMoneyMsg(orderInfo.getId());
        return map;
    }
src/main/java/cc/mrbird/febs/pay/configure/AliPayConfigure.java
New file
@@ -0,0 +1,43 @@
package cc.mrbird.febs.pay.configure;
import cc.mrbird.febs.pay.properties.AliPayProperties;
import com.ijpay.alipay.AliPayApiConfig;
import com.ijpay.alipay.AliPayApiConfigKit;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @author wzy
 * @date 2021-09-27
 **/
@Slf4j
@Configuration
public class AliPayConfigure {
    @Autowired
    private AliPayProperties aliPayProperties;
    @Bean
    public AliPayApiConfig aliPayConfig() {
        log.info("====================");
        AliPayApiConfig aliPayApiConfig;
        try {
            aliPayApiConfig = AliPayApiConfigKit.getApiConfig(aliPayProperties.getAppId());
        } catch (Exception e) {
            aliPayApiConfig = AliPayApiConfig.builder()
                    .setAppId(aliPayProperties.getAppId())
                    .setAliPayPublicKey(aliPayProperties.getPublicKey())
                    .setCharset("UTF-8")
                    .setPrivateKey(aliPayProperties.getPrivateKey())
                    .setServiceUrl("https://openapi.alipaydev.com/gateway.do")
                    .setSignType("RSA2")
                    // 普通公钥方式
                    .build();
        }
        AliPayApiConfigKit.setThreadLocalAliPayApiConfig(aliPayApiConfig);
        return aliPayApiConfig;
    }
}
src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java
New file
@@ -0,0 +1,31 @@
package cc.mrbird.febs.pay.controller;
import cc.mrbird.febs.common.entity.FebsResponse;
import com.ijpay.alipay.AliPayApi;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;
/**
 * @author wzy
 * @date 2021-09-27
 **/
@Slf4j
@RestController
@RequestMapping(value = "/api/pay")
public class PayCallBackController {
    @GetMapping("/aliCallBack")
    public FebsResponse aliPayCallBack(HttpServletRequest request) {
        Map<String, String> params = AliPayApi.toMap(request);
        for (Map.Entry<String, String> entry : params.entrySet()) {
            log.info("支付宝回调:{}===={}", entry.getKey(), entry.getValue());
        }
        return new FebsResponse().success();
    }
}
src/main/java/cc/mrbird/febs/pay/model/AliPayPassbackModel.java
New file
@@ -0,0 +1,15 @@
package cc.mrbird.febs.pay.model;
import lombok.Data;
/**
 * @author wzy
 * @date 2021-09-27
 **/
@Data
public class AliPayPassbackModel {
    private Long orderId;
    private Long memberId;
}
src/main/java/cc/mrbird/febs/pay/properties/AliPayProperties.java
New file
@@ -0,0 +1,24 @@
package cc.mrbird.febs.pay.properties;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
 * @author wzy
 * @date 2021-09-27
 **/
@Data
@Configuration
@ConfigurationProperties(prefix = "pay.ali")
public class AliPayProperties {
    private String appId;
    private String publicKey;
    private String privateKey;
    private String noticeUrl;
}
src/main/java/cc/mrbird/febs/pay/service/IPayService.java
New file
@@ -0,0 +1,12 @@
package cc.mrbird.febs.pay.service;
import cc.mrbird.febs.mall.entity.MallOrderInfo;
/**
 * @author wzy
 * @date 2021-09-27
 **/
public interface IPayService {
    String aliPay(MallOrderInfo orderInfo);
}
src/main/java/cc/mrbird/febs/pay/service/impl/PayServiceImpl.java
New file
@@ -0,0 +1,62 @@
package cc.mrbird.febs.pay.service.impl;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.mall.entity.MallOrderInfo;
import cc.mrbird.febs.pay.model.AliPayPassbackModel;
import cc.mrbird.febs.pay.properties.AliPayProperties;
import cc.mrbird.febs.pay.service.IPayService;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.domain.AlipayTradeAppPayModel;
import com.alipay.api.response.AlipayTradeAppPayResponse;
import com.ijpay.alipay.AliPayApi;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
 * @author wzy
 * @date 2021-09-27
 **/
@Slf4j
@Service
public class PayServiceImpl implements IPayService {
    @Resource
    private AliPayProperties aliPayProperties;
    @Value("${spring.profiles.active}")
    private String active;
    @Override
    public String aliPay(MallOrderInfo orderInfo) {
        AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
        model.setSubject("全民商城商品支付");
        model.setBody(orderInfo.getName());
        model.setOutTradeNo(orderInfo.getOrderNo());
        model.setTimeoutExpress("15m");
        if ("dev".equals(active) || "test".equals(active)) {
            model.setTotalAmount("0.01");
        } else {
            model.setTotalAmount(orderInfo.getAmount().toString());
        }
        AliPayPassbackModel passbackModel = new AliPayPassbackModel();
        passbackModel.setOrderId(orderInfo.getId());
        passbackModel.setMemberId(orderInfo.getMemberId());
        model.setPassbackParams(JSONObject.toJSONString(passbackModel));
        model.setProductCode("QUICK_MSECURITY_PAY");
        AlipayTradeAppPayResponse resp = null;
        try {
            resp = AliPayApi.appPayToResponse(model, aliPayProperties.getNoticeUrl());
        } catch (AlipayApiException e) {
            log.error("支付宝支付异常", e);
            throw new FebsException("支付宝支付异常");
        }
        return resp.getBody();
    }
}
src/main/resources/application-dev.yml
@@ -46,4 +46,14 @@
    port: 5672
    username: ct_rabbit
    password: 123456
    publisher-confirm-type: correlated
    publisher-confirm-type: correlated
pay:
  ali:
    appId: 2021002182686737
    # 支付宝公钥
    publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1WQMo5SqNK644piwb1iK83RUwNyw6bEr/+diP/+FUx2HBuidRJwGmwRE4PVzX2NXT/HsXIZdVFXYl8JbZA2uphXILmKr039CSTKpB+5v2hzKtnrBFNtLn+pKI5cchhDdk5IFo5esNV7yWbFlZKF4sztn1/s0uwn7DHyaNRdr7480kVxVUHqwl+t2G8SqifyvUMhT0Fq9a72yft7vgC7PYh2TF21vrH8pV4xbTcZ54evMl0wyDj6W1xsW+hYsdWy/gEogpvZ+qtQyL6LbjUhpSHeNJcGP004ilFB4ksfQqUrEcxROYV9bhTb+1QY+rmmuv4PCSesdHDNqFRj1ReeNzwIDAQAB
    # 支付宝私钥
    privateKey: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDOhu+hD2kuMh5s7IQuKjexeC4DmXxrAr/bu10rNB304NaIRUNAkGPI9tep7ZRBZqa/Tjrfom8LeeBnbA1n+SgxROSREEXDA1E3/XJY+vYivehVTD2TuA2GEnEtLXUgxQJVfz/CNIOa3rCc1nj9n4/kv03Sx/yqiKnLd6h9dRvdaY9k7DwnWPu1FT5T3bpTiU+oKaUODkcfUPpMH8aQaolzKY07M0cqZFn75Z0KFAoM6p/TDoF7JKpwdzGO5xuJe8YT4xx2OcLY++d/dzSoQvvsKh8r1yE37Z5B9FxHSHe1GuR2wOQxhgXUyaj7gden/pAVspzbjZTDdQppjzNavnzdAgMBAAECggEAKAJL+c+aeLCM5F0NXkQfdenqQBhD2hc2Q8MQUYZPJ1lHNi700FUof44SSYEU73aLZxQoo5o8GOULa/2quzGxb5oBDXkxio3h9g7LUCGN/Tz8/Uk/xJYrSIXaFv5vamHACgAUwfKabC4n2LpTxg5bOd01nlfPwtmmyxvrMCK3uzSWzxDLag0jVh9DGA97D00UOkL9QpEJ26dpBuF7pf9Nt0BtfyJMFrCbJXY2F3j65VNN4f2rOG7/DTGm434Sektj9Bc31ept9MfPw9VyRbV7EMvG5be9iDqBvLbRGhQVtBjv3N/E7p3uUI5HyxM8GOjQhSwSOJQ0gQS8vNdNN90qoQKBgQDqxoTFOsPM3+LoQj1r7CjoXhooEfpikyHpK2l8mzM4+La9ajzUJzTWT8nc0k2Qha8AvBZzJ2+kSKAjtwc/VNTu0IeEn480V9zVyBFkcC294d3A1keN5ch9wP1it5fWsVh+62T9xGXlQQIpuYeQm1BXj7kltd7vE8t6fLrmnhVkpwKBgQDhMqgZoRQGmcgrVc8F//lBO7g6ku/+GfNJnve64sRi5ZifwSiNSULVqDWmdHJiVWyYXoTvt1o3bqQorawe0c+wEzknn8ZipNDnN9tybxhKqD6pzCbRv6yWmU+9X9ZhSxYJeumn3sqxyZB7rnqJQ7/vpsoNZRvp0LS85iJVJFXO2wKBgB7O3i1jgL4pwwTnbFf1LYkQkC4h7dFxrUmDwNvxIc+gE5rXjhPo8S4OWlb34eXNJSHbjLafvi64uQr2waS15RtRkfb9WTVtMjV7g4zCi74XHZpohAtC1ARshtOlc+9gZlSBX0dNtnFXDombJwb62pgi7BDexNpqppD0PTJ2HCiRAoGAREmZIdRvfyToxwNJOLeLPNXAIrrl3Xa/CGcVFe2nwZl/s4neIyHBC4rrYeNTwC/JM1cOFqbRy5dYXiFz3RCgWvMpVLOlc8oossSEXeoEQrdL8S8/4kCuNCifPnyuRGiBcTR9X/M2Ib1Oe8LH05HgxOodwPwU/8zS0akzZgATqRsCgYA5TDAX996ThMjHr+qjLh5gdIJ+85jxP0+tqVk5Vwl3niS3qJGoLIofIgHYee9U6c1wLJU+lUTaxYpuaJPwQFbdMGGGB8i3c2XczVBShCUEedelTghl7Izwh/DILmlAQCvYsC+wWMcFdU3LhYvFGXmTx9ToRBLdtd6v45+7MXcHQw==
    # 回调地址
    noticeUrl:
src/main/resources/application-prod.yml
@@ -52,4 +52,14 @@
    port: 5672
    username: ct_rabbit
    password: 123456
    publisher-confirm-type: correlated
    publisher-confirm-type: correlated
pay:
  ali:
    appId: 2021002182686737
    # 支付宝公钥
    publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1WQMo5SqNK644piwb1iK83RUwNyw6bEr/+diP/+FUx2HBuidRJwGmwRE4PVzX2NXT/HsXIZdVFXYl8JbZA2uphXILmKr039CSTKpB+5v2hzKtnrBFNtLn+pKI5cchhDdk5IFo5esNV7yWbFlZKF4sztn1/s0uwn7DHyaNRdr7480kVxVUHqwl+t2G8SqifyvUMhT0Fq9a72yft7vgC7PYh2TF21vrH8pV4xbTcZ54evMl0wyDj6W1xsW+hYsdWy/gEogpvZ+qtQyL6LbjUhpSHeNJcGP004ilFB4ksfQqUrEcxROYV9bhTb+1QY+rmmuv4PCSesdHDNqFRj1ReeNzwIDAQAB
    # 支付宝私钥
    privateKey: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDOhu+hD2kuMh5s7IQuKjexeC4DmXxrAr/bu10rNB304NaIRUNAkGPI9tep7ZRBZqa/Tjrfom8LeeBnbA1n+SgxROSREEXDA1E3/XJY+vYivehVTD2TuA2GEnEtLXUgxQJVfz/CNIOa3rCc1nj9n4/kv03Sx/yqiKnLd6h9dRvdaY9k7DwnWPu1FT5T3bpTiU+oKaUODkcfUPpMH8aQaolzKY07M0cqZFn75Z0KFAoM6p/TDoF7JKpwdzGO5xuJe8YT4xx2OcLY++d/dzSoQvvsKh8r1yE37Z5B9FxHSHe1GuR2wOQxhgXUyaj7gden/pAVspzbjZTDdQppjzNavnzdAgMBAAECggEAKAJL+c+aeLCM5F0NXkQfdenqQBhD2hc2Q8MQUYZPJ1lHNi700FUof44SSYEU73aLZxQoo5o8GOULa/2quzGxb5oBDXkxio3h9g7LUCGN/Tz8/Uk/xJYrSIXaFv5vamHACgAUwfKabC4n2LpTxg5bOd01nlfPwtmmyxvrMCK3uzSWzxDLag0jVh9DGA97D00UOkL9QpEJ26dpBuF7pf9Nt0BtfyJMFrCbJXY2F3j65VNN4f2rOG7/DTGm434Sektj9Bc31ept9MfPw9VyRbV7EMvG5be9iDqBvLbRGhQVtBjv3N/E7p3uUI5HyxM8GOjQhSwSOJQ0gQS8vNdNN90qoQKBgQDqxoTFOsPM3+LoQj1r7CjoXhooEfpikyHpK2l8mzM4+La9ajzUJzTWT8nc0k2Qha8AvBZzJ2+kSKAjtwc/VNTu0IeEn480V9zVyBFkcC294d3A1keN5ch9wP1it5fWsVh+62T9xGXlQQIpuYeQm1BXj7kltd7vE8t6fLrmnhVkpwKBgQDhMqgZoRQGmcgrVc8F//lBO7g6ku/+GfNJnve64sRi5ZifwSiNSULVqDWmdHJiVWyYXoTvt1o3bqQorawe0c+wEzknn8ZipNDnN9tybxhKqD6pzCbRv6yWmU+9X9ZhSxYJeumn3sqxyZB7rnqJQ7/vpsoNZRvp0LS85iJVJFXO2wKBgB7O3i1jgL4pwwTnbFf1LYkQkC4h7dFxrUmDwNvxIc+gE5rXjhPo8S4OWlb34eXNJSHbjLafvi64uQr2waS15RtRkfb9WTVtMjV7g4zCi74XHZpohAtC1ARshtOlc+9gZlSBX0dNtnFXDombJwb62pgi7BDexNpqppD0PTJ2HCiRAoGAREmZIdRvfyToxwNJOLeLPNXAIrrl3Xa/CGcVFe2nwZl/s4neIyHBC4rrYeNTwC/JM1cOFqbRy5dYXiFz3RCgWvMpVLOlc8oossSEXeoEQrdL8S8/4kCuNCifPnyuRGiBcTR9X/M2Ib1Oe8LH05HgxOodwPwU/8zS0akzZgATqRsCgYA5TDAX996ThMjHr+qjLh5gdIJ+85jxP0+tqVk5Vwl3niS3qJGoLIofIgHYee9U6c1wLJU+lUTaxYpuaJPwQFbdMGGGB8i3c2XczVBShCUEedelTghl7Izwh/DILmlAQCvYsC+wWMcFdU3LhYvFGXmTx9ToRBLdtd6v45+7MXcHQw==
    # 回调地址
    noticeUrl:
src/main/resources/application-test.yml
@@ -46,4 +46,14 @@
    port: 5672
    username: ct_rabbit
    password: 123456
    publisher-confirm-type: correlated
    publisher-confirm-type: correlated
pay:
  ali:
    appId: 2021002182686737
    # 支付宝公钥
    publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1WQMo5SqNK644piwb1iK83RUwNyw6bEr/+diP/+FUx2HBuidRJwGmwRE4PVzX2NXT/HsXIZdVFXYl8JbZA2uphXILmKr039CSTKpB+5v2hzKtnrBFNtLn+pKI5cchhDdk5IFo5esNV7yWbFlZKF4sztn1/s0uwn7DHyaNRdr7480kVxVUHqwl+t2G8SqifyvUMhT0Fq9a72yft7vgC7PYh2TF21vrH8pV4xbTcZ54evMl0wyDj6W1xsW+hYsdWy/gEogpvZ+qtQyL6LbjUhpSHeNJcGP004ilFB4ksfQqUrEcxROYV9bhTb+1QY+rmmuv4PCSesdHDNqFRj1ReeNzwIDAQAB
    # 支付宝私钥
    privateKey: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDOhu+hD2kuMh5s7IQuKjexeC4DmXxrAr/bu10rNB304NaIRUNAkGPI9tep7ZRBZqa/Tjrfom8LeeBnbA1n+SgxROSREEXDA1E3/XJY+vYivehVTD2TuA2GEnEtLXUgxQJVfz/CNIOa3rCc1nj9n4/kv03Sx/yqiKnLd6h9dRvdaY9k7DwnWPu1FT5T3bpTiU+oKaUODkcfUPpMH8aQaolzKY07M0cqZFn75Z0KFAoM6p/TDoF7JKpwdzGO5xuJe8YT4xx2OcLY++d/dzSoQvvsKh8r1yE37Z5B9FxHSHe1GuR2wOQxhgXUyaj7gden/pAVspzbjZTDdQppjzNavnzdAgMBAAECggEAKAJL+c+aeLCM5F0NXkQfdenqQBhD2hc2Q8MQUYZPJ1lHNi700FUof44SSYEU73aLZxQoo5o8GOULa/2quzGxb5oBDXkxio3h9g7LUCGN/Tz8/Uk/xJYrSIXaFv5vamHACgAUwfKabC4n2LpTxg5bOd01nlfPwtmmyxvrMCK3uzSWzxDLag0jVh9DGA97D00UOkL9QpEJ26dpBuF7pf9Nt0BtfyJMFrCbJXY2F3j65VNN4f2rOG7/DTGm434Sektj9Bc31ept9MfPw9VyRbV7EMvG5be9iDqBvLbRGhQVtBjv3N/E7p3uUI5HyxM8GOjQhSwSOJQ0gQS8vNdNN90qoQKBgQDqxoTFOsPM3+LoQj1r7CjoXhooEfpikyHpK2l8mzM4+La9ajzUJzTWT8nc0k2Qha8AvBZzJ2+kSKAjtwc/VNTu0IeEn480V9zVyBFkcC294d3A1keN5ch9wP1it5fWsVh+62T9xGXlQQIpuYeQm1BXj7kltd7vE8t6fLrmnhVkpwKBgQDhMqgZoRQGmcgrVc8F//lBO7g6ku/+GfNJnve64sRi5ZifwSiNSULVqDWmdHJiVWyYXoTvt1o3bqQorawe0c+wEzknn8ZipNDnN9tybxhKqD6pzCbRv6yWmU+9X9ZhSxYJeumn3sqxyZB7rnqJQ7/vpsoNZRvp0LS85iJVJFXO2wKBgB7O3i1jgL4pwwTnbFf1LYkQkC4h7dFxrUmDwNvxIc+gE5rXjhPo8S4OWlb34eXNJSHbjLafvi64uQr2waS15RtRkfb9WTVtMjV7g4zCi74XHZpohAtC1ARshtOlc+9gZlSBX0dNtnFXDombJwb62pgi7BDexNpqppD0PTJ2HCiRAoGAREmZIdRvfyToxwNJOLeLPNXAIrrl3Xa/CGcVFe2nwZl/s4neIyHBC4rrYeNTwC/JM1cOFqbRy5dYXiFz3RCgWvMpVLOlc8oossSEXeoEQrdL8S8/4kCuNCifPnyuRGiBcTR9X/M2Ib1Oe8LH05HgxOodwPwU/8zS0akzZgATqRsCgYA5TDAX996ThMjHr+qjLh5gdIJ+85jxP0+tqVk5Vwl3niS3qJGoLIofIgHYee9U6c1wLJU+lUTaxYpuaJPwQFbdMGGGB8i3c2XczVBShCUEedelTghl7Izwh/DILmlAQCvYsC+wWMcFdU3LhYvFGXmTx9ToRBLdtd6v45+7MXcHQw==
    # 回调地址
    noticeUrl:
src/test/java/cc/mrbird/febs/PayTest.java
New file
@@ -0,0 +1,33 @@
package cc.mrbird.febs;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.domain.AlipayTradeAppPayModel;
import com.alipay.api.response.AlipayTradeAppPayResponse;
import com.ijpay.alipay.AliPayApi;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
/**
 * @author wzy
 * @date 2021-09-27
 **/
@Slf4j
@SpringBootTest
public class PayTest {
    @Test
    public void aliPay() throws AlipayApiException {
        AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
        model.setBody("这是测试用");
        model.setSubject("支付测试用的");
        model.setOutTradeNo("2021092712215802974");
        model.setTimeoutExpress("15m");
        model.setTotalAmount("0.01");
        model.setPassbackParams("callback params");
        model.setProductCode("QUICK_MSECURITY_PAY");
        AlipayTradeAppPayResponse resp = AliPayApi.appPayToResponse(model, "");
        log.info("=====>>>{}", JSONObject.toJSONString(resp));
    }
}