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-----