Administrator
2025-04-25 5af707003f4c7b26f09a554a4d3c75c1c6769ab2
后台管理页面完成
4个文件已修改
54 ■■■■■ 已修改文件
src/main/java/com/taoke/autopay/exception/UserCreditExchangeException.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/manager/UserCreditExchangeManager.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/utils/AlipayUtil.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/alipay/appCertPublicKey_2021004141681244.crt 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/taoke/autopay/exception/UserCreditExchangeException.java
@@ -14,6 +14,8 @@
    public final static int CODE_EXCHANGE_FREQUENCY_LIMIT =20;
    // 没有绑定支付宝
    public final static int CODE_NOT_BIND_ALIPAY_ACCOUNT =30;
    //支付宝转账失败
    public final static int CODE_ALIPAY_TRANSFER_FAILED =40;
    private int code;
src/main/java/com/taoke/autopay/manager/UserCreditExchangeManager.java
@@ -1,10 +1,12 @@
package com.taoke.autopay.manager;
import com.alipay.api.AlipayApiException;
import com.taoke.autopay.dao.credit.CreditExchangeRecordMapper;
import com.taoke.autopay.dao.credit.ExchangeRateMapper;
import com.taoke.autopay.entity.credit.*;
import com.taoke.autopay.exception.UserCreditExchangeException;
import com.taoke.autopay.service.credit.*;
import com.taoke.autopay.utils.AlipayUtil;
import com.taoke.autopay.utils.TimeUtil;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@@ -123,7 +125,13 @@
        // 如果是红包兑换,调用通过兑换逻辑(TODO)
        if (exchangeRecord.getExchangeType() == CreditExchangeRecord.ExchangeType.FUND_EXCHANGE) {
            // TODO: 调用通过兑换逻辑
            try {
                AlipayUtil.transfer("credit_exchange_"+exchangeRecordId, exchangeRecord.getExchangeInfo2(), exchangeRecord.getExchangeInfo1(), exchangeRecord.getExchangeValue(), "红包兑换", "红包兑换");
            } catch (AlipayApiException e) {
                throw new UserCreditExchangeException(UserCreditExchangeException.CODE_ALIPAY_TRANSFER_FAILED, e.getErrCode()+ ":"+ e.getErrMsg());
            } catch (AlipayUtil.AlipayTransferException e) {
                throw new UserCreditExchangeException(UserCreditExchangeException.CODE_ALIPAY_TRANSFER_FAILED, e.getMessage());
            }
        }
        // 改变兑换记录状态
src/main/java/com/taoke/autopay/utils/AlipayUtil.java
@@ -19,7 +19,7 @@
    private static DefaultAlipayClient alipayClient = null;
    static {
        String privateKey = "";
        String privateKey = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDhLhILE3YPWHOTJ9ndbdAQ+5DzrQ/+esTwAFnvo7YN+Bto8njOX9CI4/HE78bj7fFfTsPAJv0ga+b6iTCw0HhkI7oPZIJ1S4WH9w/EvzcsfoZvSEOJLHhnqOu8rkn8OVwzMZ5DtmRC0Sy2LZ+zIvdOqzJYAPlbJb+Q99ccVgr6nu+JouO6fHXMQ1xKvv5lSFgGy8EFiEU71UHcxdsA21Qn90ZNXAOSt8qHFydANVSE90pjAj3iLlpxleJGTCgLuAfGzN6pxyykjfR1m2YwWvEu7xcMgSlzO6/Hp0nWS8USehY2llRUAYW5QOq3+rhvZRE3rd9eESeDSpkkMWwQPY8RAgMBAAECggEAeL7BghrvZY8iejgWRPwLY+/hbCjSuLyQObmWgD+i8Z6m5AGQ8ejC44SHMfj5B2Oh2F9d6/18IhR6CMHj0AwZYmkd7f8RTWAvvBao5/E43q0B3U48mKO19K/JqKU0mwEPBYyHtvtoi8OqXA3e4qnPPunh1vq+uzdkn5GmUVV6EaSCES+BUBusxwYrBGvnZM//1Z7n3JqsmN+QZZ6c/uWeK0Gzl2zIONPCUnGJzp9gSeDPu6RxM1NLCMcxwrmfhmW+Jy5uhNAjUkfWC8Os6XCneVUTxoUGxZrEsFQbq7fRMUZM/DU5/1zOJpkAPzFEoFsBMp6cWl9ZwYawn9bF+kB4OQKBgQD+sdGPdK8vzZbRKrlPLk+k1JvN7SEDiJc5ZJ3AI5FzKsFL7DP9DLFV1Yev2sk8TrcjksDYHTJlxnNqPMdgJV31Wf+dvw2Wrsl7YucnbtvU6Odl1Vd3GtfIilsZ+oY+sdK3yHxDkg6q668VsSt8KcW47DArliRicQRYrfZnc0HrawKBgQDiVYavq3Ie07diAXpX7ILqbn/d6jbZH7X1qofOp7ZTf6qwFOWmS4slZ7V2M0e1PztgK4+dZbm4aJ+WZojbxbx0nc8mWQLPmAEqvGlECVO+vNrEO0e6v0w2ERpFoGPjaQF6pb21SUdNhvyewQLBHnobziMDzcix5D8J8GZdDpPqcwKBgAGN9El73NXd213LdPYWwkWvRoQrPlhXLRUcmBnkHa8mQ6fC+U5CFZMAiqN4ImJL2LJO4v5urzAP1gR/+neLwtcMhZLg56RTzMcEA4UqGA1knoTwmGgRsd93eLbf4JHhY/fbMWb4LT690YPAYROQ7bQDPQgHEpHHPs+LwEVBXtWhAoGAXaAPdP+w13uw8kO2PkTB6wQGtN+8DJkHhjYis6PA0k2PaANc9CtvxeterySLVzhu8VtTr0JzTwtIaMjFeFQVnw/grvZHKWSxpuIFkXViRRaOUHpNM70KY5sziPXOHDZFvFxvW1ySuElMmscwwn4++N2OsnYfvSazxQLC9V+gZG0CgYB7dHbzpBi4JgggeXo0nWVH82pBQTvCsPQVRvznY6MQxVBbkOPFvdy3bB1g6Br3iyS5heS25JX7/3AOX4rU1Sfiqvn7rLKVRbhxPimcfGULNQUyeKX/+FKKG9Yi3KTV8Mzy8LxDxwJPpPgmV88fdUKrjuVLZxmrluo10czBM5DLjw==";
        CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
        certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
        certAlipayRequest.setAppId("2021004141681244");
@@ -28,9 +28,9 @@
        certAlipayRequest.setCharset("GBK");
        certAlipayRequest.setSignType("RSA2");
        certAlipayRequest.setCertPath(
                AlipayUtil.class.getClassLoader().getResource("alipay/alipayCertPublicKey_RSA2.crt").getPath());
        certAlipayRequest.setAlipayPublicCertPath(
                AlipayUtil.class.getClassLoader().getResource("alipay/appCertPublicKey_2021004141681244.crt").getPath());
        certAlipayRequest.setAlipayPublicCertPath(
                AlipayUtil.class.getClassLoader().getResource("alipay/alipayCertPublicKey_RSA2.crt").getPath());
        certAlipayRequest.setRootCertPath(
                AlipayUtil.class.getClassLoader().getResource("alipay/alipayRootCert.crt").getPath());
        try {
@@ -95,11 +95,11 @@
    public static void main(String[] args) throws AlipayTransferException, AlipayApiException {
        AlipayUtil.transfer("test-test","18581318252","贺小辉",new BigDecimal("0.1"),"板栗快省提现","提现");
        AlipayUtil.transfer("test-1","18323283413@163.com","夏程培",new BigDecimal("0.1"),"积分兑换","积分兑换");
    }
    static class AlipayTransferException extends Exception {
   public static class AlipayTransferException extends Exception {
        public AlipayTransferException() {
        }
src/main/resources/alipay/appCertPublicKey_2021004141681244.crt
@@ -1,23 +1,23 @@
-----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE-----