zoujiajian 8 сар өмнө
parent
commit
8822af89dc

+ 5 - 0
netflix-common/src/main/java/com/cyksj/common/constant/Constant.java

@@ -750,4 +750,9 @@ public interface Constant {
 	 * gpt车队id
 	 */
 	String GPT_CARD_ID = "P288";
+
+	/**
+	 * 三川gpt代充api包含字符
+	 */
+	String SC_OW_DOMAIN_STR = "api.ow";
 }

+ 16 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/GptTokenRechargeAccountDto.java

@@ -0,0 +1,16 @@
+package com.cyksj.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: GptTokenRechargeAccountDto
+ * 创建者: JavaZou
+ * 创建时间:2025/11/26 16:02
+ */
+@Getter
+@Setter
+public class GptTokenRechargeAccountDto {
+	private String id;
+}

+ 18 - 0
netflix-dao/src/main/java/com/cyksj/model/response/OwRechargeApiResp.java

@@ -0,0 +1,18 @@
+package com.cyksj.model.response;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: OwRechargeApiResp
+ * 创建者: JavaZou
+ * 创建时间:2025/11/26 15:45
+ */
+@Getter
+@Setter
+public class OwRechargeApiResp {
+	private Integer code;
+
+	private String messaage;
+}

+ 32 - 0
netflix-dao/src/main/java/com/cyksj/model/response/OwSubmitTaskRechargeResp.java

@@ -0,0 +1,32 @@
+package com.cyksj.model.response;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: OwSubmitTaskRechargeResp
+ * 创建者: JavaZou
+ * 创建时间:2025/11/26 16:04
+ */
+@Getter
+@Setter
+public class OwSubmitTaskRechargeResp {
+	private int code;
+
+	private String message;
+
+	private Data data;
+
+	private long timestamp;
+
+	private boolean error;
+
+	private boolean success;
+
+	@Getter
+	@Setter
+	public static class Data {
+		private Long usageId;
+	}
+}

+ 42 - 0
netflix-dao/src/main/java/com/cyksj/model/response/OwTaskRechargeStatusResp.java

@@ -0,0 +1,42 @@
+package com.cyksj.model.response;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: OwTaskRechargeStatusResp
+ * 创建者: JavaZou
+ * 创建时间:2025/11/26 16:14
+ */
+
+@Getter
+@Setter
+public class OwTaskRechargeStatusResp {
+
+	private int code;
+
+	private String message;
+
+	private Data data;
+
+	private long timestamp;
+
+	private boolean error;
+
+	private boolean success;
+
+	@Getter
+	@Setter
+	public static class Data {
+		/**
+		 * 0进行中 2.成功
+		 */
+		private Integer status;
+
+		/**
+		 * 失败时会返回
+		 */
+		private String errorMessage;
+	}
+}

+ 2 - 2
netflix-service/src/main/java/com/cyksj/server/recharge/GptProxyRechargeService.java

@@ -12,7 +12,7 @@ public interface GptProxyRechargeService {
     /**
      * 验证卡密
      */
-    CardKeyValidationResult validateCardKey(String cardKey);
+    Boolean validateCardKey(String cardKey);
     
     /**
      * 验证凭证
@@ -22,7 +22,7 @@ public interface GptProxyRechargeService {
     /**
      * 提交任务
      */
-    TaskSubmitResult submitTask(String cardKey, String accessToken, String idp);
+    TaskSubmitResult submitTask(String cardKey, String accountEmail, String fullToken, String accessToken, String idp);
     
     /**
      * 获取任务结果

+ 20 - 0
netflix-service/src/main/java/com/cyksj/server/recharge/dto/OwCardKeyValidationResult.java

@@ -0,0 +1,20 @@
+package com.cyksj.server.recharge.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: OwCardKeyValidationResult
+ * 创建者: JavaZou
+ * 创建时间:2025/11/26 15:46
+ */
+@Getter
+@Setter
+public class OwCardKeyValidationResult {
+	private Boolean success;
+
+	private String message;
+
+	private Integer errorCode;
+}

+ 87 - 72
netflix-service/src/main/java/com/cyksj/server/recharge/impl/GptProxyRechargeServiceImpl.java

@@ -24,6 +24,7 @@ import com.cyksj.server.recharge.dto.TaskSubmitResult;
 import com.cyksj.server.recharge.dto.TokenParseResult;
 import com.cyksj.service.chatgpt.GptUserRechargeRecordService;
 import com.cyksj.service.recharge.GptRechargeCardKeyChannelService;
+import com.cyksj.service.recharge.OwGptRechargeService;
 import com.cyksj.service.user.UserBindRelationService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -61,6 +62,8 @@ public class GptProxyRechargeServiceImpl implements GptProxyRechargeService {
 
 	private final GptRechargeCardKeyChannelService gptRechargeCardKeyChannelService;
 
+	private final OwGptRechargeService owGptRechargeService;
+
 	private static final GlobalThreadPoolTaskExecutor TASK_EXECUTOR = GlobalThreadPoolTaskExecutor.getInstance();
 
 	private HttpRequest createBaseRequest(String url) {
@@ -72,10 +75,13 @@ public class GptProxyRechargeServiceImpl implements GptProxyRechargeService {
                 .header("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36");
     }
 
-    public CardKeyValidationResult validateCardKey(String cardKey) {
+    public Boolean validateCardKey(String cardKey) {
         log.info("开始验证卡密: {}", cardKey);
         try {
 	        String BASE_URL = gptRechargeCardKeyChannelService.getCardKeyDomain(cardKey);
+	        if (BASE_URL.contains(Constant.SC_OW_DOMAIN_STR)) {
+				return owGptRechargeService.validateCardKey(BASE_URL, cardKey);
+			}
 	        HttpResponse response = createBaseRequest(BASE_URL + "/card-keys/" + cardKey)
 			        .execute();
             String body = response.body();
@@ -87,7 +93,7 @@ public class GptProxyRechargeServiceImpl implements GptProxyRechargeService {
             );
             //{"available":false,"error":"卡密已被使用"}
             log.info("卡密验证结果: {}", result);
-            return result;
+            return result.getAvailable();
         } catch (Exception e) {
             log.error("验证卡密失败: {}", e.getMessage(), e);
             throw new RuntimeException("验证卡密失败: " + e.getMessage(), e);
@@ -127,76 +133,85 @@ public class GptProxyRechargeServiceImpl implements GptProxyRechargeService {
         }
     }
 
-    public TaskSubmitResult submitTask(String cardKey, String accessToken, String idp) {
-        log.info("开始提交任务 - 卡密: {}, idp: {}", cardKey, idp);
-        try {
-	        String BASE_URL = gptRechargeCardKeyChannelService.getCardKeyDomain(cardKey);
-	        String url = BASE_URL + "/tasks";
-            JSONObject requestBody = new JSONObject();
-            requestBody.put("card_key", cardKey);
-            requestBody.put("access_token", accessToken);
-            requestBody.put("idp", idp);
-            
-            HttpResponse response = HttpRequest.post(url)
-		            .setConnectionTimeout(60000)
-		            .header("accept", "application/json, text/plain, */*")
-                    .header("accept-language", "zh-CN,zh;q=0.9,en;q=0.8")
-                    .header("content-type", "application/json")
-                    .header("origin", "https://www.ow520.com")
-                    .header("referer", "https://www.ow520.com/")
-                    .header("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36")
-                    .body(requestBody.toString())
-                    .execute();
-            String body = response.body();
-            log.info("任务提交响应: {}", body);
-            
-            JSONObject jsonResponse = JSONUtil.parseObj(body);
-            TaskSubmitResult result = new TaskSubmitResult(
-                jsonResponse.getStr("task_id"),
-                jsonResponse.getBool("success")
-            );
-            log.info("任务提交结果: {}", result);
-            return result;
-        } catch (Exception e) {
-            log.error("提交任务失败: {}", e.getMessage(), e);
-            throw new RuntimeException("提交任务失败: " + e.getMessage(), e);
-        }
-    }
+	public TaskSubmitResult submitTask(String cardKey, String accountEmail, String fullToken, String accessToken, String idp) {
+		log.info("开始提交任务 - 卡密: {}, idp: {}", cardKey, idp);
+		try {
+			String BASE_URL = gptRechargeCardKeyChannelService.getCardKeyDomain(cardKey);
+			if (BASE_URL.contains(Constant.SC_OW_DOMAIN_STR)) {
+				return owGptRechargeService.submitTask(BASE_URL, cardKey, accountEmail, fullToken, accessToken);
+			}
+			String url = BASE_URL + "/tasks";
+			JSONObject requestBody = new JSONObject();
+			requestBody.put("card_key", cardKey);
+			requestBody.put("access_token", accessToken);
+			requestBody.put("idp", idp);
 
-    public TaskResult getTaskResult(String taskId) {
-        log.info("开始查询任务结果: {}", taskId);
-        try {
-	        GroupsRelation relation = relationMapper.selectOne(Wrappers.lambdaQuery(GroupsRelation.class)
-			        .eq(GroupsRelation::getGptTaskId, taskId)
-			        .last("limit 1"));
-	        if (relation == null) {
-		        return null;
-	        }
-	        String cardKey = relation.getCardKey();
-	        String BASE_URL = gptRechargeCardKeyChannelService.getCardKeyDomain(cardKey);
-	        String url = BASE_URL + "/tasks/" + taskId;
-            HttpResponse response = createBaseRequest(url)
-                    .execute();
-            String body = response.body();
-            log.info("任务查询响应: {}", body);
+			HttpResponse response = HttpRequest.post(url)
+					.setConnectionTimeout(60000)
+					.header("accept", "application/json, text/plain, */*")
+					.header("accept-language", "zh-CN,zh;q=0.9,en;q=0.8")
+					.header("content-type", "application/json")
+					.header("origin", "https://www.ow520.com")
+					.header("referer", "https://www.ow520.com/")
+					.header("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36")
+					.body(requestBody.toString())
+					.execute();
+			String body = response.body();
+			log.info("任务提交响应: {}", body);
 
-            JSONObject jsonResponse = JSONUtil.parseObj(body);
-            TaskResult result = new TaskResult(
-                jsonResponse.getStr("status"),
-                jsonResponse.getStr("result"),
-                jsonResponse.getStr("error")
-            );
-            log.info("任务查询结果: {}", result);
-	        String status = result.getStatus();
-	        String resultResult = Optional.ofNullable(result.getError()).orElse(result.getResult());
+			JSONObject jsonResponse = JSONUtil.parseObj(body);
+			TaskSubmitResult result = new TaskSubmitResult(
+					jsonResponse.getStr("task_id"),
+					jsonResponse.getBool("success")
+			);
+			log.info("任务提交结果: {}", result);
+			return result;
+		} catch (Exception e) {
+			log.error("提交任务失败: {}", e.getMessage(), e);
+			throw new RuntimeException("提交任务失败: " + e.getMessage(), e);
+		}
+	}
+
+	public TaskResult getTaskResult(String taskId) {
+		log.info("开始查询任务结果: {}", taskId);
+		try {
+			GroupsRelation relation = relationMapper.selectOne(Wrappers.lambdaQuery(GroupsRelation.class)
+					.eq(GroupsRelation::getGptTaskId, taskId)
+					.last("limit 1"));
+			if (relation == null) {
+				return null;
+			}
+			String cardKey = relation.getCardKey();
+			String BASE_URL = gptRechargeCardKeyChannelService.getCardKeyDomain(cardKey);
+			TaskResult result;
+			String resultResult;
+			if (BASE_URL.contains(Constant.SC_OW_DOMAIN_STR)) {
+				result = owGptRechargeService.getTaskResult(BASE_URL, taskId);
+				log.info("ow代充任务查询结果: {}", result);
+			} else {
+				String url = BASE_URL + "/tasks/" + taskId;
+				HttpResponse response = createBaseRequest(url)
+						.execute();
+				String body = response.body();
+				log.info("任务查询响应: {}", body);
+
+				JSONObject jsonResponse = JSONUtil.parseObj(body);
+				result = new TaskResult(
+						jsonResponse.getStr("status"),
+						jsonResponse.getStr("result"),
+						jsonResponse.getStr("error")
+				);
+				log.info("任务查询结果: {}", result);
+			}
+			resultResult = Optional.ofNullable(result.getError()).orElse(result.getResult());
 			//更新代充状态
-			resetGroupsRelationRechargeStatus(relation, status, resultResult);
-	        return result;
-        } catch (Exception e) {
-            log.error("获取任务结果失败: {}", e.getMessage(), e);
-            throw new RuntimeException("获取任务结果失败: " + e.getMessage(), e);
-        }
-    }
+			resetGroupsRelationRechargeStatus(relation, result.getStatus(), resultResult);
+			return result;
+		} catch (Exception e) {
+			log.error("获取任务结果失败: {}", e.getMessage(), e);
+			throw new RuntimeException("获取任务结果失败: " + e.getMessage(), e);
+		}
+	}
 
 	@Override
 	@Transactional(rollbackFor = Throwable.class)
@@ -308,13 +323,13 @@ public class GptProxyRechargeServiceImpl implements GptProxyRechargeService {
 			}
 			String gptCardKey = gptRechargeCardKey.getCardKey();
 			//校验卡密是否可用
-			CardKeyValidationResult cardKeyValidationResult = validateCardKey(gptCardKey);
-			if (!cardKeyValidationResult.getAvailable()) {
+			Boolean isAvailable = validateCardKey(gptCardKey);
+			if (!isAvailable) {
 				setRechargeRelationStatusAutoError(relation);
 				throw BusinessRuntimeException.getInstance("充值失败,请联系客服开通");
 			}
 			//提交任务
-			TaskSubmitResult result = submitTask(gptCardKey, accessToken, "auth0");
+			TaskSubmitResult result = submitTask(gptCardKey, rechargeAccount, saveTokenJson, accessToken, "auth0");
 			if (!result.getSuccess()) {
 				setRechargeRelationStatusAutoError(relation);
 				throw BusinessRuntimeException.getInstance("充值失败,请联系客服开通");

+ 37 - 22
netflix-service/src/main/java/com/cyksj/service/mange/gpt/impl/GptRechargeServiceImpl.java

@@ -26,6 +26,7 @@ import com.cyksj.server.recharge.dto.TokenParseResult;
 import com.cyksj.service.chatgpt.GptUserRechargeRecordService;
 import com.cyksj.service.mange.gpt.GptRechargeService;
 import com.cyksj.service.recharge.GptRechargeCardKeyChannelService;
+import com.cyksj.service.recharge.OwGptRechargeService;
 import com.cyksj.service.user.UserBindRelationService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -69,6 +70,8 @@ public class GptRechargeServiceImpl implements GptRechargeService {
 
 	private final GptRechargeCardKeyChannelService gptRechargeCardKeyChannelService;
 
+	private final OwGptRechargeService owGptRechargeService;
+
 	private static final GlobalThreadPoolTaskExecutor TASK_EXECUTOR = GlobalThreadPoolTaskExecutor.getInstance();
 
 
@@ -212,12 +215,12 @@ public class GptRechargeServiceImpl implements GptRechargeService {
 			}
 			String gptCardKey = gptRechargeCardKey.getCardKey();
 			//校验卡密是否可用
-			CardKeyValidationResult cardKeyValidationResult = validateCardKey(gptCardKey);
-			if (!cardKeyValidationResult.getAvailable()) {
+			Boolean isAvailable = validateCardKey(gptCardKey);
+			if (!isAvailable) {
 				throw BusinessRuntimeException.getInstance("卡密:{0}已被使用", gptCardKey);
 			}
 			//提交任务
-			TaskSubmitResult result = submitTask(gptCardKey, accessToken, "auth0");
+			TaskSubmitResult result = submitTask(gptCardKey, rechargeAccount, saveTokenJson, accessToken, "auth0");
 			if (!result.getSuccess()) {
 				setRechargeRelationStatusAutoError(relation);
 				throw BusinessRuntimeException.getInstance("自动充值错误");
@@ -254,23 +257,29 @@ public class GptRechargeServiceImpl implements GptRechargeService {
 				return null;
 			}
 			String BASE_URL = gptRechargeCardKeyChannelService.getCardKeyDomain(relation.getCardKey());
-			String url = BASE_URL + "/tasks/" + taskId;
-			HttpResponse response = createBaseRequest(url)
-					.execute();
-			String body = response.body();
-			log.info("任务查询响应: {}", body);
-
-			JSONObject jsonResponse = JSONUtil.parseObj(body);
-			TaskResult result = new TaskResult(
-					jsonResponse.getStr("status"),
-					jsonResponse.getStr("result"),
-					jsonResponse.getStr("error")
-			);
-			log.info("任务查询结果: {}", result);
-			String status = result.getStatus();
-			String resultResult = Optional.ofNullable(result.getError()).orElse(result.getResult());
+			TaskResult result;
+			String resultResult;
+			if (BASE_URL.contains(Constant.SC_OW_DOMAIN_STR)) {
+				result = owGptRechargeService.getTaskResult(BASE_URL, taskId);
+				log.info("ow代充任务查询结果: {}", result);
+			} else {
+				String url = BASE_URL + "/tasks/" + taskId;
+				HttpResponse response = createBaseRequest(url)
+						.execute();
+				String body = response.body();
+				log.info("任务查询响应: {}", body);
+
+				JSONObject jsonResponse = JSONUtil.parseObj(body);
+				result = new TaskResult(
+						jsonResponse.getStr("status"),
+						jsonResponse.getStr("result"),
+						jsonResponse.getStr("error")
+				);
+				log.info("任务查询结果: {}", result);
+			}
+			resultResult = Optional.ofNullable(result.getError()).orElse(result.getResult());
 			//更新代充状态
-			resetGroupsRelationRechargeStatus(relation, status, resultResult);
+			resetGroupsRelationRechargeStatus(relation, result.getStatus(), resultResult);
 			return result;
 		} catch (Exception e) {
 			log.error("获取任务结果失败: {}", e.getMessage(), e);
@@ -352,10 +361,13 @@ public class GptRechargeServiceImpl implements GptRechargeService {
 		return relation;
 	}
 
-	public CardKeyValidationResult validateCardKey(String cardKey) {
+	public Boolean validateCardKey(String cardKey) {
 		log.info("开始验证卡密: {}", cardKey);
 		try {
 			String BASE_URL = gptRechargeCardKeyChannelService.getCardKeyDomain(cardKey);
+			if (BASE_URL.contains(Constant.SC_OW_DOMAIN_STR)) {
+				return owGptRechargeService.validateCardKey(BASE_URL, cardKey);
+			}
 			HttpResponse response = createBaseRequest(BASE_URL + "/card-keys/" + cardKey)
 					.execute();
 			String body = response.body();
@@ -367,17 +379,20 @@ public class GptRechargeServiceImpl implements GptRechargeService {
 			);
 			//{"available":false,"error":"卡密已被使用"}
 			log.info("卡密验证结果: {}", result);
-			return result;
+			return result.getAvailable();
 		} catch (Exception e) {
 			log.error("验证卡密失败: {}", e.getMessage(), e);
 			throw new RuntimeException("验证卡密失败: " + e.getMessage(), e);
 		}
 	}
 
-	public TaskSubmitResult submitTask(String cardKey, String accessToken, String idp) {
+	public TaskSubmitResult submitTask(String cardKey, String accountEmail, String fullToken, String accessToken, String idp) {
 		log.info("开始提交任务 - 卡密: {}, idp: {}", cardKey, idp);
 		try {
 			String BASE_URL = gptRechargeCardKeyChannelService.getCardKeyDomain(cardKey);
+			if (BASE_URL.contains(Constant.SC_OW_DOMAIN_STR)) {
+				return owGptRechargeService.submitTask(BASE_URL, cardKey, accountEmail, fullToken, accessToken);
+			}
 			String url = BASE_URL + "/tasks";
 			JSONObject requestBody = new JSONObject();
 			requestBody.put("card_key", cardKey);

+ 18 - 0
netflix-service/src/main/java/com/cyksj/service/recharge/OwGptRechargeService.java

@@ -0,0 +1,18 @@
+package com.cyksj.service.recharge;
+
+import com.cyksj.server.recharge.dto.TaskResult;
+import com.cyksj.server.recharge.dto.TaskSubmitResult;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: OwGptRechargeService
+ * 创建者: JavaZou
+ * 创建时间:2025/11/26 15:40
+ */
+public interface OwGptRechargeService {
+	Boolean validateCardKey(String baseUrl, String cardKey);
+
+	TaskSubmitResult submitTask(String baseUrl, String cardKey, String accountEmail, String fullToken, String accessToken) throws Exception;
+
+	TaskResult getTaskResult(String url, String taskId) throws Exception;
+}

+ 107 - 0
netflix-service/src/main/java/com/cyksj/service/recharge/impl/OwGptRechargeServiceImpl.java

@@ -0,0 +1,107 @@
+package com.cyksj.service.recharge.impl;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.cyksj.common.util.Jsons;
+import com.cyksj.model.dto.GptTokenRechargeAccountDto;
+import com.cyksj.model.response.OwSubmitTaskRechargeResp;
+import com.cyksj.model.response.OwTaskRechargeStatusResp;
+import com.cyksj.server.recharge.dto.OwCardKeyValidationResult;
+import com.cyksj.server.recharge.dto.TaskResult;
+import com.cyksj.server.recharge.dto.TaskSubmitResult;
+import com.cyksj.service.recharge.OwGptRechargeService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * 项目名: yhlxj11111111
+ * 文件名: OwGptRechargeServiceImpl
+ * 创建者: JavaZou
+ * 创建时间:2025/11/26 15:40
+ */
+@Service
+@RequiredArgsConstructor
+@Slf4j
+public class OwGptRechargeServiceImpl implements OwGptRechargeService {
+
+	private HttpRequest createBaseRequest(String url) {
+		return HttpRequest.get(url)
+				.header("accept", "application/json, text/plain, */*")
+				.header("accept-language", "zh-CN,zh;q=0.9,en;q=0.8")
+				.header("origin", "https://ow800.com")
+				.header("referer", "https://ow800.com/")
+				.header("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36");
+	}
+
+	@Override
+	public Boolean validateCardKey(String baseUrl, String cardKey) {
+		String url = baseUrl + "/api/cards/verify";
+		HttpResponse response = createBaseRequest(url)
+				.execute();
+		String body = response.body();
+		JSONObject jsonResponse = JSONUtil.parseObj(body);
+		OwCardKeyValidationResult result = Jsons.parseObject(jsonResponse.get("data"), OwCardKeyValidationResult.class);
+		return result.getSuccess();
+	}
+
+	@Override
+	public TaskSubmitResult submitTask(String baseUrl, String cardKey, String accountEmail, String fullToken, String accessToken) throws Exception {
+		String url = baseUrl + "/api/recharge/perform";
+		JSONObject requestBody = new JSONObject();
+		requestBody.putOpt("cardInfo", cardKey);
+		requestBody.putOpt("accessToken", accessToken);
+		requestBody.putOpt("fullToken", fullToken);
+		requestBody.putOpt("userEmail", accountEmail);
+		requestBody.putOpt("confirmed", true);
+		JSONObject fullTokenObj = Jsons.parseObject(fullToken, JSONObject.class);
+		GptTokenRechargeAccountDto account = Jsons.parseObject(fullTokenObj.get("account"), GptTokenRechargeAccountDto.class);
+		requestBody.putOpt("account", account);
+		log.info("ow任务提交请求body: {}", requestBody);
+		HttpResponse response = HttpRequest.post(url)
+				.setConnectionTimeout(60000)
+				.header("accept", "application/json, text/plain, */*")
+				.header("accept-language", "zh-CN,zh;q=0.9,en;q=0.8")
+				.header("origin", "https://ow800.com")
+				.header("referer", "https://ow800.com/")
+				.header("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36")
+				.body(requestBody.toString())
+				.execute();
+		String body = response.body();
+		log.info("ow任务提交返回结果: {}", body);
+		OwSubmitTaskRechargeResp submitResp = Jsons.parseObject(body, OwSubmitTaskRechargeResp.class);
+		TaskSubmitResult result = new TaskSubmitResult();
+		result.setSuccess(submitResp.isSuccess());
+		result.setTaskId(submitResp.getData().getUsageId().toString());
+		return result;
+	}
+
+	@Override
+	public TaskResult getTaskResult(String baseUrl, String taskId) throws Exception {
+		String url = baseUrl + String.format("/api/recharge/status?usageId=%s", taskId);
+		HttpResponse response = createBaseRequest(url)
+				.execute();
+		String body = response.body();
+		log.info("ow任务查询响应: {}", body);
+
+		OwTaskRechargeStatusResp statusResp = Jsons.parseObject(body, OwTaskRechargeStatusResp.class);
+		TaskResult taskResult = new TaskResult();
+		//进行中
+		String status = "progressing";
+		Integer respStatusCode = statusResp.getData().getStatus();
+		if (respStatusCode == 2) {
+			status = "completed";
+		}
+		String errorMessage = statusResp.getData().getErrorMessage();
+		//有错误时 返回失败
+		if (StrUtil.isNotBlank(errorMessage)) {
+			status = "failed";
+			taskResult.setError(errorMessage);
+		}
+		taskResult.setStatus(status);
+		return taskResult;
+	}
+}