xhxu 5 лет назад
Родитель
Сommit
b7c5b7daac
4 измененных файлов: 48 добавлений и 21 удалений
  1. +26
    -0
      mallinkService/src/main/java/com/iformall/douyin/pay/DouYinPayHelper.java
  2. +1
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumTtOrderStatus.java
  3. +19
    -17
      mallinkService/src/main/java/com/iformall/service/tt/impl/TtOrderServiceImpl.java
  4. +2
    -3
      mallinkService/src/main/java/com/iformall/utils/sign/SignUtils.java

+ 26
- 0
mallinkService/src/main/java/com/iformall/douyin/pay/DouYinPayHelper.java Просмотреть файл

@@ -9,6 +9,7 @@ import java.security.NoSuchAlgorithmException;
import java.util.*;
import java.util.Map.Entry;

import com.iformall.utils.sign.SignUtils;
import org.apache.commons.lang3.StringUtils;

import com.alibaba.fastjson.JSON;
@@ -91,6 +92,31 @@ public class DouYinPayHelper {
return hexValue.toString();
}

public static String getTTBackSign(Map<String, Object> params, String signMethod) {
List<String> paramsArr = new ArrayList<>();
for (Map.Entry<String, Object> entry : params.entrySet()) {
String key = entry.getKey();
String value = entry.getValue().toString();

value = value.trim();
if (value.startsWith("\"") && value.endsWith("\"") && value.length() > 1) {
value = value.substring(1, value.length() - 1);
}
value = value.trim();
if (value.equals("") || value.equals("null")) {
continue;
}
paramsArr.add(value);
}
Collections.sort(paramsArr);
StringBuilder signStr = new StringBuilder();
String sep = "";
for (String s : paramsArr) {
signStr.append(sep).append(s);
}
return SignUtils.encrypt(signStr.toString(),signMethod);
}






+ 1
- 1
mallinkService/src/main/java/com/iformall/enums/EnumTtOrderStatus.java Просмотреть файл

@@ -7,7 +7,7 @@ public enum EnumTtOrderStatus {


ORDER_STATUS_PENDING_PAYMENT(0, "待付款"),
ORDER_STATUS_PAYMENT_ING(1,"支付中"),
// ORDER_STATUS_PAYMENT_ING(1,"支付中"),
ORDER_STATUS_PAYMENT_SUCCESS(2, "已支付"),
ORDER_STATUS_OVERTIME_CANCEL(3, "已取消"),
ORDER_STATUS_PENDING_REFUND(4, "待退款"),


+ 19
- 17
mallinkService/src/main/java/com/iformall/service/tt/impl/TtOrderServiceImpl.java Просмотреть файл

@@ -71,7 +71,7 @@ public class TtOrderServiceImpl implements TtOrderService {
orderQ.setProductId(couponId);
List<Integer> statuss = new ArrayList<>();
statuss.add(EnumTtOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode());
statuss.add(EnumTtOrderStatus.ORDER_STATUS_PAYMENT_ING.getCode());
// statuss.add(EnumTtOrderStatus.ORDER_STATUS_PAYMENT_ING.getCode());
statuss.add(EnumTtOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode());
orderQ.setStatusS(statuss);
Integer listCount = ttOrderMapper.findListCount(orderQ);
@@ -216,8 +216,8 @@ public class TtOrderServiceImpl implements TtOrderService {
} else if (order.getOrderStatus() == EnumTtOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode()) {
logger.error("订单已取消: " + order.toString());
return new ResultData(ErrorCode.ORDER_HAD_CANCEL);
} else if(order.getOrderStatus() == EnumTtOrderStatus.ORDER_STATUS_PAYMENT_ING.getCode()){
logger.info("订单支付: " + order.toString());
} else if(order.getOrderStatus() == EnumTtOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()){
logger.info("订单支付: " + order.toString());
OrderQueryResult orderQueryResult = DouYinPayHelper.orderQuery(appInfo.getAppId(), appInfo.getSecret(), order.getId().toString(), null);
String trade_state = orderQueryResult.getOrderStatus();
if ("PROCESSING".equals(trade_state)) {//处理中
@@ -250,13 +250,13 @@ public class TtOrderServiceImpl implements TtOrderService {
// preOrder.setNotifyUrl();//回调地址

CreatePreOrderResult preOrderResult = DouYinPayHelper.createPreOrder(preOrder);
if(preOrderResult.isSuccess()){
TtOrder orderSuc = new TtOrder();
orderSuc.setId(order.getId());
orderSuc.setOrderStatus(EnumTtOrderStatus.ORDER_STATUS_PAYMENT_ING.getCode());
orderSuc.setUpdateDate(new Date());
ttOrderMapper.updateById(orderSuc);
}
// if(preOrderResult.isSuccess()){
// TtOrder orderSuc = new TtOrder();
// orderSuc.setId(order.getId());
// orderSuc.setOrderStatus(EnumTtOrderStatus.ORDER_STATUS_PAYMENT_ING.getCode());
// orderSuc.setUpdateDate(new Date());
// ttOrderMapper.updateById(orderSuc);
// }
return new ResultData(preOrderResult);
}

@@ -284,7 +284,7 @@ public class TtOrderServiceImpl implements TtOrderService {
if(appInfo == null) {
return new ResultData(ErrorCode.APP_ID_NOT_FOUND);
}
if(order.getOrderStatus() == EnumTtOrderStatus.ORDER_STATUS_PAYMENT_ING.getCode()){
if(order.getOrderStatus() == EnumTtOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()){
logger.info("订单支付中: " + order.toString());
OrderQueryResult orderQueryResult = DouYinPayHelper.orderQuery(appInfo.getAppId(), appInfo.getSecret(), order.getId().toString(), null);
String trade_state = orderQueryResult.getOrderStatus();
@@ -296,19 +296,21 @@ public class TtOrderServiceImpl implements TtOrderService {
orderSuc.setOrderStatus(EnumTtOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode());
orderSuc.setUpdateDate(new Date());
ttOrderMapper.updateById(orderSuc);
return new ResultData(ErrorCode.PAY_ORDER_EXIST,"该订单已经支付,请勿重复支付!");
// return new ResultData(ErrorCode.PAY_ORDER_EXIST,"该订单已经支付,请勿重复支付!");
}else if ("FAIL".equals(trade_state)) {//失败
TtOrder orderSuc = new TtOrder();
orderSuc.setId(order.getId());
orderSuc.setOrderStatus(EnumTtOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode());
orderSuc.setUpdateDate(new Date());
ttOrderMapper.updateById(orderSuc);
// TtOrder orderSuc = new TtOrder();
// orderSuc.setId(order.getId());
// orderSuc.setOrderStatus(EnumTtOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode());
// orderSuc.setUpdateDate(new Date());
// ttOrderMapper.updateById(orderSuc);
return new ResultData(ErrorCode.PAY_ORDER_ERROR);
}else if ("TIMEOUT".equals(trade_state)) {//超时
TtOrder orderSuc = new TtOrder();
orderSuc.setId(order.getId());
orderSuc.setOrderStatus(EnumTtOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode());
orderSuc.setUpdateDate(new Date());
ttOrderMapper.updateById(orderSuc);
return new ResultData(ErrorCode.PAY_ORDER_CLOSED);
}
}
return new ResultData();


+ 2
- 3
mallinkService/src/main/java/com/iformall/utils/sign/SignUtils.java Просмотреть файл

@@ -5,8 +5,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.security.MessageDigest;
import java.util.Arrays;
import java.util.Map;
import java.util.*;

public class SignUtils {

@@ -53,7 +52,7 @@ public class SignUtils {
return encrypt(str, "MD5");
}

private static String encrypt(String str, String algorithm) {
public static String encrypt(String str, String algorithm) {
try {
MessageDigest md = MessageDigest.getInstance(algorithm);
md.update(str.getBytes("UTF-8"));


Загрузка…
Отмена
Сохранить