记得上下班打卡 | git大法好,push需谨慎

Commit c99b0a96 authored by jiangxiulong's avatar jiangxiulong

payAgain

parent 06cbe3fd
...@@ -3,6 +3,7 @@ package com.liquidnet.service.order.service.impl; ...@@ -3,6 +3,7 @@ package com.liquidnet.service.order.service.impl;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.ObjectNode;
import com.liquidnet.commons.lang.util.*; import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.UserPathDto; import com.liquidnet.service.base.UserPathDto;
...@@ -25,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -25,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
...@@ -506,75 +508,73 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService { ...@@ -506,75 +508,73 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
return ResponseDto.failure("暂不支持此接口"); return ResponseDto.failure("暂不支持此接口");
/*String uid = CurrentUtil.getCurrentUid(); /*String uid = CurrentUtil.getCurrentUid();
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
//检查订单时间 是否关闭 GoblinNftOrderVo nftOrder = nftOrderUtils.getNftOrder(param.getOrderId());
GoblinStoreOrderVo storeOrderVo = goblinRedisUtils.getGoblinOrder(param.getOrderId()); // 检查订单时间
if (nftOrder == null) {
if (storeOrderVo == null) {
return ResponseDto.failure("订单不存在"); return ResponseDto.failure("订单不存在");
} }
if (!nftOrder.getUserId().equals(uid)) {
if (!storeOrderVo.getUserId().equals(uid)) {
return ResponseDto.failure(ErrorMapping.get("20003")); return ResponseDto.failure(ErrorMapping.get("20003"));
} }
if (nftOrder.getStatus() != GoblinStatusConst.Status.ORDER_STATUS_0.getValue()) {
if (storeOrderVo.getStatus() != GoblinStatusConst.Status.ORDER_STATUS_0.getValue()) { return ResponseDto.failure("当前订单状态不支持支付");
return ResponseDto.failure("订单无法支付");//订单
} }
MultiValueMap<String, String> header = CollectionUtil.linkedMultiValueMapStringString(); MultiValueMap<String, String> header = CollectionUtil.linkedMultiValueMapStringString();
header.add("Accept", "application/json;charset=UTF-8"); header.add("Accept", "application/json;charset=UTF-8");
String returnCheckData = HttpUtil.get(checkUrl + "?code=" + storeOrderVo.getPayCode(), null, header); String returnCheckData = HttpUtil.get(checkUrl + "?code=" + nftOrder.getPayCode(), null, header);
ResponseDto<GoblinPayInnerResultVo> checkVo = JsonUtils.fromJson(returnCheckData, new TypeReference<ResponseDto<GoblinPayInnerResultVo>>() { ResponseDto<GoblinPayInnerResultVo> checkVo = JsonUtils.fromJson(returnCheckData, new TypeReference<ResponseDto<GoblinPayInnerResultVo>>() {
}); });
if (checkVo.getData().getStatus() == 1) { if (checkVo.getData().getStatus() == 1) {
return ResponseDto.failure("订单已支付"); return ResponseDto.failure("订单已支付");
} }
BigDecimal price = BigDecimal.ZERO; // 获取支付参数
String[] orderIds = goblinRedisUtils.getMasterCode(storeOrderVo.getMasterOrderCode());
for (String orderId : orderIds) {
GoblinStoreOrderVo orderVo = goblinRedisUtils.getGoblinOrder(orderId);
price = price.add(orderVo.getPriceActual());
}
GoblinNftPayResultVo NftPayResultVo = GoblinNftPayResultVo.getNew(); GoblinNftPayResultVo NftPayResultVo = GoblinNftPayResultVo.getNew();
if (!storeOrderVo.getPayType().equals("FREE")) { if (!nftOrder.getPayType().equals("FREE")) {
// 调用支付 // 调用支付
LinkedMultiValueMap<String, String> httpData = CollectionUtil.linkedMultiValueMapStringString(); LinkedMultiValueMap<String, String> httpData = CollectionUtil.linkedMultiValueMapStringString();
httpData.add("type", "PRODUCT"); httpData.add("type", "NFT");
httpData.add("price", price.toString()); httpData.add("price", nftOrder.getPriceActual().toString());
httpData.add("name", goblinRedisUtils.getStoreInfoVo(storeOrderVo.getStoreId()).getStoreName()); httpData.add("name", nftOrder.getStoreName());
httpData.add("detail", "查找最初订单"); httpData.add("detail", nftOrder.getSkuTitle());
httpData.add("orderCode", storeOrderVo.getMasterOrderCode()); httpData.add("orderCode", nftOrder.getOrderCode());
httpData.add("clientIp", storeOrderVo.getIpAddress()); httpData.add("clientIp", nftOrder.getIpAddress());
httpData.add("notifyUrl", synUrl); httpData.add("notifyUrl", synUrl);
httpData.add("createDate", storeOrderVo.getCreatedAt()); httpData.add("createDate", nftOrder.getCreatedAt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
httpData.add("expireTime", storeOrderVo.getPayCountdownMinute().toString()); httpData.add("expireTime", nftOrder.getPayCountdownMinute().toString());
httpData.add("payType", param.getPayType()); httpData.add("payType", param.getPayType());
httpData.add("deviceFrom", param.getDeviceFrom()); httpData.add("deviceFrom", param.getDeviceFrom());
if (param.getDeviceFrom().equals("js") || param.getDeviceFrom().equals("applet")) { if (param.getDeviceFrom().equals("js") || param.getDeviceFrom().equals("applet")) {
httpData.add("openId", param.getOpenId()); httpData.add("openId", param.getOpenId());
} }
httpData.add("showUrl", param.getShowUrl() + storeOrderVo.getMasterOrderCode()); String showUrl = param.getShowUrl().concat(nftOrder.getOrderCode());
httpData.add("returnUrl", param.getReturnUrl() + storeOrderVo.getMasterOrderCode()); String returnUrl = param.getReturnUrl().concat(nftOrder.getOrderCode());
httpData.add("showUrl", showUrl);
httpData.add("returnUrl", returnUrl);
String returnData = HttpUtil.post(payUrl, httpData); String returnData = HttpUtil.post(payUrl, httpData);
log.debug("调用 DRAGON 结果 = " + returnData); log.info("调用 DRAGON 结果 = " + returnData);
ResponseDto<GoblinPayInnerResultVo> dto = JsonUtils.fromJson(returnData, new TypeReference<ResponseDto<GoblinPayInnerResultVo>>() { ResponseDto<GoblinPayInnerResultVo> dto = JsonUtils.fromJson(returnData, new TypeReference<ResponseDto<GoblinPayInnerResultVo>>() {
}); });
NftPayResultVo.setCode(dto.getData().getCode()); GoblinPayInnerResultVo dtoData = dto.getData();
NftPayResultVo.setOrderCode(storeOrderVo.getMasterOrderCode());
String payCode = dtoData.getCode();
NftPayResultVo.setCode(payCode);
NftPayResultVo.setOrderCode(nftOrder.getOrderCode());
NftPayResultVo.setPayData(dto.getData().getPayData()); NftPayResultVo.setPayData(dto.getData().getPayData());
NftPayResultVo.setOrderId(storeOrderVo.getMasterOrderCode()); NftPayResultVo.setOrderId(nftOrder.getOrderId());
NftPayResultVo.setPayType(param.getPayType()); NftPayResultVo.setPayData(dtoData.getPayData());
NftPayResultVo.setPrice(price); NftPayResultVo.setPayType(nftOrder.getPayType());
NftPayResultVo.setShowUrl(param.getShowUrl() + storeOrderVo.getMasterOrderCode()); NftPayResultVo.setPrice(nftOrder.getPriceActual());
NftPayResultVo.setReturnUrl(param.getReturnUrl() + storeOrderVo.getMasterOrderCode()); NftPayResultVo.setShowUrl(showUrl);
//redis NftPayResultVo.setReturnUrl(returnUrl);
storeOrderVo.setPayType(param.getPayType()); // redis
storeOrderVo.setDeviceFrom(param.getDeviceFrom()); nftOrder.setPayType(param.getPayType());
storeOrderVo.setPayCode(NftPayResultVo.getCode()); nftOrder.setDeviceFrom(param.getDeviceFrom());
goblinRedisUtils.setGoblinOrder(storeOrderVo.getOrderId(), storeOrderVo); nftOrder.setPayCode(NftPayResultVo.getCode());
//mongo nftOrderUtils.setNftOrder(nftOrder);
goblinMongoUtils.updateGoblinStoreOrderVo(storeOrderVo.getOrderId(), storeOrderVo); // mongo
//mysql goblinOrderUtils.setMongoList(GoblinNftOrderVo.class.getSimpleName(), "orderId", nftOrder.getOrderId(), GoblinRedisConst.REDIS_GOBLIN_NFT_ORDER_INFO, 2);
// mysql
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_ORDER_AGAIN.getKey(), queueUtils.sendMsgByRedis(MQConst.GoblinQueue.GOBLIN_ORDER_AGAIN.getKey(),
SqlMapping.get("goblin_order.pay.again", param.getPayType(), param.getDeviceFrom(), NftPayResultVo.getCode(), param.getOrderId(), now, now)); SqlMapping.get("goblin_order.pay.again", param.getPayType(), param.getDeviceFrom(), NftPayResultVo.getCode(), param.getOrderId(), now, now));
log.info(UserPathDto.setData("再次支付[新支付方式]", param, NftPayResultVo)); log.info(UserPathDto.setData("再次支付[新支付方式]", param, NftPayResultVo));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment