diff --git a/pom.xml b/pom.xml
index e2a8d0f6..8ec5336d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,19 @@
4.0.0
1.1.1
1.6.2
+ 2.20.43
+
+
+
+ software.amazon.awssdk
+ bom
+ ${aws.java.sdk.version}
+ pom
+ import
+
+
+
org.springframework.boot
@@ -239,6 +251,28 @@
25.0.0
+
+
+
+ software.amazon.awssdk
+ s3
+
+
+ software.amazon.awssdk
+ s3-transfer-manager
+ 2.17.103-PREVIEW
+
+
+ software.amazon.awssdk
+ kms
+
+
+ software.amazon.awssdk
+ s3control
+
+
+
+
diff --git a/src/main/java/com/ai/da/common/constant/CommonConstant.java b/src/main/java/com/ai/da/common/constant/CommonConstant.java
index ac139e98..252350c5 100644
--- a/src/main/java/com/ai/da/common/constant/CommonConstant.java
+++ b/src/main/java/com/ai/da/common/constant/CommonConstant.java
@@ -11,4 +11,10 @@ public class CommonConstant {
// 单位 秒 一天过期 in redis
public static final Long GENERATE_RESULT_EXPIRE_TIME = 24 * 60 * 60L;
+ public static class Numbers{
+ public static final Integer NUMBER_10 = 10;
+ public static final Integer NUMBER_1000 = 1000;
+ public static final Integer NUMBER_10080 = 10080;
+ }
+
}
diff --git a/src/main/java/com/ai/da/common/enums/CreditsEventsEnum.java b/src/main/java/com/ai/da/common/enums/CreditsEventsEnum.java
index 8a63d880..0b00fa84 100644
--- a/src/main/java/com/ai/da/common/enums/CreditsEventsEnum.java
+++ b/src/main/java/com/ai/da/common/enums/CreditsEventsEnum.java
@@ -7,9 +7,11 @@ import lombok.Getter;
@Getter
public enum CreditsEventsEnum {
- PRICE("price","6"),
+// PRICE("price","6"),
+ PRICE("price","0.1"),
- BUY_CREDITS("Buy Credits","600"),
+// BUY_CREDITS("Buy Credits","600"),
+ BUY_CREDITS("Buy Credits","10"),
INIT("init", "500"),
diff --git a/src/main/java/com/ai/da/common/utils/AlipayHKEncryptionUtil.java b/src/main/java/com/ai/da/common/utils/AlipayHKEncryptionUtil.java
index 5e8662a3..a26d60a0 100644
--- a/src/main/java/com/ai/da/common/utils/AlipayHKEncryptionUtil.java
+++ b/src/main/java/com/ai/da/common/utils/AlipayHKEncryptionUtil.java
@@ -96,6 +96,7 @@ public class AlipayHKEncryptionUtil {
// Serialize message body
Gson gson = new GsonBuilder().disableHtmlEscaping().create();
String content = gson.toJson(requestMessage);
+ log.info("alipay-hk request 加密前:{}", content);
// Secure random iv 获取随机种子
SecureRandom secureRandom = new SecureRandom();
@@ -153,7 +154,7 @@ public class AlipayHKEncryptionUtil {
// Encode to json
String jsonEncoded = JSONObject.toJSONString(alipayHKRequestDTO);
- log.info(jsonEncoded);
+ log.info("alipay-hk request 加密加签后:{}",jsonEncoded);
// String info = AlipayHKRequestUtil.createOrder(alipayHKRequestDTO);
// log.info(info);
diff --git a/src/main/java/com/ai/da/common/utils/AlipayHKRequestUtil.java b/src/main/java/com/ai/da/common/utils/AlipayHKRequestUtil.java
index a980e477..3bfcf9a4 100644
--- a/src/main/java/com/ai/da/common/utils/AlipayHKRequestUtil.java
+++ b/src/main/java/com/ai/da/common/utils/AlipayHKRequestUtil.java
@@ -17,7 +17,7 @@ import org.springframework.stereotype.Component;
@Component
public class AlipayHKRequestUtil {
- public String createOrder(AlipayHKRequestDTO alipayHKRequestDTO) throws IOException {
+ public String requestAlipayHK(AlipayHKRequestDTO alipayHKRequestDTO) throws IOException {
OkHttpClient client = new OkHttpClient().newBuilder()
.connectTimeout(30, TimeUnit.SECONDS)
.pingInterval(5, TimeUnit.SECONDS)//websocket轮训间隔(单位:秒)
diff --git a/src/main/java/com/ai/da/controller/AlipayHKController.java b/src/main/java/com/ai/da/controller/AlipayHKController.java
index 38f2da9b..602096a6 100644
--- a/src/main/java/com/ai/da/controller/AlipayHKController.java
+++ b/src/main/java/com/ai/da/controller/AlipayHKController.java
@@ -21,8 +21,8 @@ public class AlipayHKController {
private AlipayHKService alipayHKService;
@ApiOperation(value = "创建订单")
- @PostMapping(value = "/createOrder")
- public Response createOrder(@RequestParam Integer amount, @RequestParam String wallet) {
+ @PostMapping(value = "/createOrder/{wallet}/{amount}")
+ public Response createOrder(@PathVariable Integer amount, @PathVariable String wallet) {
String order = alipayHKService.createOrder(amount, wallet);
return Response.success(order);
}
@@ -33,7 +33,12 @@ public class AlipayHKController {
return alipayHKService.callback(params);
}
-
+ @ApiOperation("订单查询")
+ @PostMapping("/trade/query/{orderRef}")
+ public Response queryOrder(@PathVariable String orderRef){
+ String s = alipayHKService.queryDetail(orderRef);
+ return Response.success(s);
+ }
diff --git a/src/main/java/com/ai/da/service/AlipayHKService.java b/src/main/java/com/ai/da/service/AlipayHKService.java
index 47f06d2b..e0aad9c4 100644
--- a/src/main/java/com/ai/da/service/AlipayHKService.java
+++ b/src/main/java/com/ai/da/service/AlipayHKService.java
@@ -11,4 +11,6 @@ public interface AlipayHKService {
String callback(Map params);
void processOrder(AlipayHKCallbackDTO alipayHKCallbackDTO);
+
+ String queryDetail(String orderRef);
}
diff --git a/src/main/java/com/ai/da/service/impl/AlipayHKServiceImpl.java b/src/main/java/com/ai/da/service/impl/AlipayHKServiceImpl.java
index 53c58d5d..038168ec 100644
--- a/src/main/java/com/ai/da/service/impl/AlipayHKServiceImpl.java
+++ b/src/main/java/com/ai/da/service/impl/AlipayHKServiceImpl.java
@@ -11,7 +11,6 @@ import com.ai.da.model.dto.AlipayHKCallbackDTO;
import com.ai.da.model.dto.AlipayHKRequestDTO;
import com.ai.da.service.*;
-import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
@@ -19,11 +18,8 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSocketFactory;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@@ -80,10 +76,10 @@ public class AlipayHKServiceImpl implements AlipayHKService {
// 生成订单
log.info("创建订单");
OrderInfo orderInfo = orderInfoService.createOrderByProductId(amount, PayTypeEnum.ALIPAY_HK.getType());
- // 加密
+ /*// 加密
AlipayHKRequestDTO alipayHKRequestDTO = alipayHKEncryptionUtil.AESCBCWithRSA(param, AlipayHKConstant.CREATE_ORDER);
// 请求Alipay服务端
- String response = alipayHKRequestUtil.createOrder(alipayHKRequestDTO);
+ String response = alipayHKRequestUtil.requestAlipayHK(alipayHKRequestDTO);
// 获取response中的加密数据
JSONObject responseObj = JSONObject.parseObject(response);
JSONObject resultObj = JSONObject.parseObject(responseObj.get("result").toString());
@@ -91,18 +87,36 @@ public class AlipayHKServiceImpl implements AlipayHKService {
String message = resultObj.get("message").toString();
// 解密
String s = alipayHKEncryptionUtil.decryptAES(message, nonce);
+ JSONObject jsonObject = JSONObject.parseObject(s);*/
+ String s = enAndDecryption(param, AlipayHKConstant.CREATE_ORDER);
JSONObject jsonObject = JSONObject.parseObject(s);
-
String orderId = jsonObject.get("out_trade_no").toString();
orderInfoService.updateOrderNoById(orderInfo.getId(), orderId);
-
-
log.info("create_order 接口返回信息 :{}", s);
return s;
+ }catch (Exception e){
+ log.error("订单创建失败 : {}", e.getMessage());
+ // todo 或者抛异常
+ return null;
+ }
+ }
+ private String enAndDecryption(HashMap param, String serviceName){
+ try{
+ // 加密
+ AlipayHKRequestDTO alipayHKRequestDTO = alipayHKEncryptionUtil.AESCBCWithRSA(param, serviceName);
+ // 请求Alipay服务端
+ String response = alipayHKRequestUtil.requestAlipayHK(alipayHKRequestDTO);
+ // 获取response中的加密数据
+ JSONObject responseObj = JSONObject.parseObject(response);
+ JSONObject resultObj = JSONObject.parseObject(responseObj.get("result").toString());
+ String nonce = resultObj.get("nonce").toString();
+ String message = resultObj.get("message").toString();
+ // 解密
+ return alipayHKEncryptionUtil.decryptAES(message, nonce);
}catch (Exception e){
log.error("订单创建失败 : {}", e.getMessage());
// todo 或者抛异常
@@ -234,59 +248,15 @@ public class AlipayHKServiceImpl implements AlipayHKService {
}
}
+ // 查询订单详情
+ public String queryDetail(String orderRef){
+ HashMap param = new HashMap<>();
+ param.put("order_ref", orderRef);
+ String s = enAndDecryption(param, AlipayHKConstant.ORDER_DETAILS);
+ JSONObject jsonObject = JSONObject.parseObject(s);
+ log.info("订单:{},状态为:{}", orderRef, jsonObject.get("status"));
-
-
-
-
-
-
-
-
-
-
-
-
-
- public static String decrypt(String message){
- String text = "{\"success\":true,\"reference_id\":\"d4f55a35-8725-40f3-8279-37ea95837741\",\"result\":{\"nonce\":\"tUsbfFrNWcZZYrN3dWQHNQ==\",\"message\":\"6wCHtIMRXXgj0TOV7jtvCzbKc+gWEnqbgAD5pMx4sIvliL65EF+btKRheJI/0gssOj0PdwUPYLlgjTdSWQZraQLU4F05FGSYJ7lNxFZ1tXLvhUv4ukiCz0xyPJIQ5vvNH/SmQ5iIQvMO/fTg6ZiZj2I+Oahzy5h2/cXmrXBEedNFZSGIVFKMuipul3QcFEO+qQQcOHOiRDAXrhF1+qoq4GROBpcKhu5WMHxUGDHj0l/tY2Rp004FNwfArbOeR5TusgMMgm7aE8IqpFJ6w4zES1lS903fHJzFWcqKMwB9tYoxnegoHSNmOVeokgBCvLOI2uVJCWN4ZqVq1mmhoib4zVxjex+pgoMtHPvV+Gjy+IB2PA5YCid0vH9WymkBkYZIioW1KH587G3lTTEWrzTc+JWWd+yIxD1nofZxAi0t+EFOgyab2HRawdpWpkwKH5XqoZ05yj0Vl0u7nWcF4GLytC5wTWyPOU3Ua/ePlniU/z5BWZkUQGWXWSKhyEmt53mx3UUXbC6/zfk1jcbyEGHonCimmf88Xl9yE3ae02xoRsDO8bcnzCRD88UWUi3UySWNmxdYDTdWj0wCU27nmLMLjkXvesRl2CfuZbkbDxDQHHKkT1DX4XoSU+vmUmSpH7IBCHXoq+SYHfRmfDsAYv7WmiJOQeo7i3RogLnBej0bFimY5JHhWBT69FVPc0aRi19eTz9L7grjLKz92+hbb4Qj7yvb08RvMUabv1juy4YHGulE73EVoLS6+FRBdEY8ZmIFq5lQcwMKb63/v+V/63AHP+oCDMzZZ7wKmQ5+UkgKcXgxToTOzulesQXD8urGcjGUwLnJviilIQywH1XFdcnDNWv95DdOB3nQ3HorqTFC+0kZMdTCO1L7zRbZQxWoExB41wQW3CNLvEkJlpaUv5TWKkep1wcT2PKFbuSVPnFnVnxZ7qNdlVLmBzEs9nX15C61+a28gFij4wj6ed8LIJwT4KapfZAFWwl2V2KmonqiXKk60/StBK9/dWHGfZ4ysPvXBB+fxJj3hR36Vu4HceNVYg+9tf5zEJ79J664iiyEFdyKzORlXnsJF33oPKC0+cuH1qhBzyf/o6t86F4DbpMBb2xhFRt1mDgFrV40JhT+2+iLCIqUmATBYsAYZZ9XIyi3vyaRGhgdd1ND/bhddALm/GKD4AJUo8FKtdkerYSbk/TpPLhvbrEFSDpkCT+JoOLiF4EzqRwZOrQklaXBOS67aaATRBzDxKJuFSGuFAWAIdLHhXcj/wDmnh1fqj03D4NmNmVSw7wKmt1OjI9arh6Ua1Mp7+1g+NT4BEdRnPYQX3CeiyRa0RUNyWxFDYZPGGpjSVNLf0vrzRh3hLEGBUlHXCza0SWuARkGmS6YdsvJr3gt+RlxXtrnI0LC0lgi9/Vw5zM5dGYX24tUOqCEA/9/FVvVZddfimYhmP44+ST1xTDgDw0rtVZQrcQjEg4UCcFq\"}}\n";
-
- String str = "6wCHtIMRXXgj0TOV7jtvCzbKc+gWEnqbgAD5pMx4sIvliL65EF+btKRheJI/0gssOj0PdwUPYLlgjTdSWQZraQLU4F05FGSYJ7lNxFZ1tXLvhUv4ukiCz0xyPJIQ5vvNH/SmQ5iIQvMO/fTg6ZiZj2I+Oahzy5h2/cXmrXBEedNFZSGIVFKMuipul3QcFEO+qQQcOHOiRDAXrhF1+qoq4GROBpcKhu5WMHxUGDHj0l/tY2Rp004FNwfArbOeR5TusgMMgm7aE8IqpFJ6w4zES1lS903fHJzFWcqKMwB9tYoxnegoHSNmOVeokgBCvLOI2uVJCWN4ZqVq1mmhoib4zVxjex+pgoMtHPvV+Gjy+IB2PA5YCid0vH9WymkBkYZIioW1KH587G3lTTEWrzTc+JWWd+yIxD1nofZxAi0t+EFOgyab2HRawdpWpkwKH5XqoZ05yj0Vl0u7nWcF4GLytC5wTWyPOU3Ua/ePlniU/z5BWZkUQGWXWSKhyEmt53mx3UUXbC6/zfk1jcbyEGHonCimmf88Xl9yE3ae02xoRsDO8bcnzCRD88UWUi3UySWNmxdYDTdWj0wCU27nmLMLjkXvesRl2CfuZbkbDxDQHHKkT1DX4XoSU+vmUmSpH7IBCHXoq+SYHfRmfDsAYv7WmiJOQeo7i3RogLnBej0bFimY5JHhWBT69FVPc0aRi19eTz9L7grjLKz92+hbb4Qj7yvb08RvMUabv1juy4YHGulE73EVoLS6+FRBdEY8ZmIFq5lQcwMKb63/v+V/63AHP+oCDMzZZ7wKmQ5+UkgKcXgxToTOzulesQXD8urGcjGUwLnJviilIQywH1XFdcnDNWv95DdOB3nQ3HorqTFC+0kZMdTCO1L7zRbZQxWoExB41wQW3CNLvEkJlpaUv5TWKkep1wcT2PKFbuSVPnFnVnxZ7qNdlVLmBzEs9nX15C61+a28gFij4wj6ed8LIJwT4KapfZAFWwl2V2KmonqiXKk60/StBK9/dWHGfZ4ysPvXBB+fxJj3hR36Vu4HceNVYg+9tf5zEJ79J664iiyEFdyKzORlXnsJF33oPKC0+cuH1qhBzyf/o6t86F4DbpMBb2xhFRt1mDgFrV40JhT+2+iLCIqUmATBYsAYZZ9XIyi3vyaRGhgdd1ND/bhddALm/GKD4AJUo8FKtdkerYSbk/TpPLhvbrEFSDpkCT+JoOLiF4EzqRwZOrQklaXBOS67aaATRBzDxKJuFSGuFAWAIdLHhXcj/wDmnh1fqj03D4NmNmVSw7wKmt1OjI9arh6Ua1Mp7+1g+NT4BEdRnPYQX3CeiyRa0RUNyWxFDYZPGGpjSVNLf0vrzRh3hLEGBUlHXCza0SWuARkGmS6YdsvJr3gt+RlxXtrnI0LC0lgi9/Vw5zM5dGYX24tUOqCEA/9/FVvVZddfimYhmP44+ST1xTDgDw0rtVZQrcQjEg4UCcFq";
- try {
-// String s = decryptAES(str, "tUsbfFrNWcZZYrN3dWQHNQ==");
-// log.info(s);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- return null;
-
- }
-
-
-
-
-// public static void main(String[] args) throws Exception {
-//// test();
-//// AESCBCWithRSA();
-//// decrypt();
-// }
-
- public static void main(String[] args) {
- System.out.println("Supported TLS versions:");
- String[] tlsVersions = getSupportedTLSVersions();
- Arrays.stream(tlsVersions).forEach(System.out::println);
- }
-
- public static String[] getSupportedTLSVersions() {
- try {
- SSLContext context = SSLContext.getDefault();
- SSLSocketFactory factory = context.getSocketFactory();
- String[] supportedProtocols = factory.getDefaultCipherSuites();
- return supportedProtocols;
- } catch (Exception e) {
- e.printStackTrace();
- return new String[0];
- }
+ return s;
}