|
@@ -1,8 +1,12 @@
|
|
|
package com.qs.mp.web.controller.api.callback;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.google.common.collect.Maps;
|
|
|
+import com.qs.mp.common.constant.Constants;
|
|
|
import com.qs.mp.common.enums.PayOrderStatusEnum;
|
|
|
import com.qs.mp.common.exception.ServiceException;
|
|
|
+import com.qs.mp.common.utils.DateUtils;
|
|
|
import com.qs.mp.common.utils.LogUtil;
|
|
|
import com.qs.mp.common.utils.StringUtils;
|
|
|
import com.qs.mp.common.utils.WebhookService;
|
|
@@ -10,6 +14,9 @@ import com.qs.mp.pay.domain.PayOrder;
|
|
|
import com.qs.mp.pay.service.IPayOrderService;
|
|
|
import com.qs.mp.pay.service.IWalletService;
|
|
|
import java.io.IOException;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import org.slf4j.Logger;
|
|
@@ -17,6 +24,7 @@ import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
+import org.springframework.web.bind.annotation.ResponseBody;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
/**
|
|
@@ -105,6 +113,76 @@ public class PayCallBackController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+ @RequestMapping(value = "dg/orderCallback")
|
|
|
+ @ResponseBody
|
|
|
+ public void orderCallback(HttpServletResponse response, HttpServletRequest request) {
|
|
|
+ response.setHeader("Access-Control-Allow-Origin", "*");
|
|
|
+ Map<String, Object> params = Maps.newHashMap();
|
|
|
+ logger.info("web--orderCallback-->1::");
|
|
|
+
|
|
|
+ logger.info("斗拱 - 微信支付 回调请求参数::{},{}", response, request);
|
|
|
+ String respCode = request.getParameter("resp_code");
|
|
|
+ String respData = request.getParameter("resp_data");
|
|
|
+// String transStat = request.getParameter("trans_stat");
|
|
|
+ String transAmt0 = org.apache.commons.lang3.StringUtils.isNotEmpty(request.getParameter("trans_amt")) ? request.getParameter("trans_amt") : "0";
|
|
|
+ logger.info("orderCallback::respCode::{},respData::{},transAmt::{}", respCode, respData,transAmt0);
|
|
|
+// double transAmt = Double.parseDouble(transAmt0);
|
|
|
+
|
|
|
+ logger.info("dougong callback params decoding---->{}", respData);
|
|
|
+ JSONObject respDataInfoJson = JSONObject.parseObject(respData);
|
|
|
+ String huifuPayId = respDataInfoJson.getString("req_seq_id");
|
|
|
+ String huifuId = respDataInfoJson.getString("huifu_id");
|
|
|
+ String sysId = respDataInfoJson.getString("sys_id");
|
|
|
+ String transStat = respDataInfoJson.getString("trans_stat");
|
|
|
+ logger.info("dougong--callback--pasing--huifuPayId::{},huifuId::{},sysId::{},transStat::{}", huifuPayId,huifuId,sysId,transStat);
|
|
|
+ String tradesId = huifuPayId.contains("D") ? huifuPayId.split("D")[0] : huifuPayId;
|
|
|
+ params.put("tradesId", tradesId);
|
|
|
+ if (Objects.isNull(params.get("tradesId"))) {
|
|
|
+ logger.info("tradesId不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (org.apache.commons.lang3.StringUtils.isNotEmpty(respCode)) {
|
|
|
+ if (!Constants.DOUGONG_ORDER_SUCCESS_CODE.equals(respCode) && (!Constants.DOUGONG_PAY_SUCCESS_CODE.equals(respCode))) {
|
|
|
+ logger.info("斗拱回调状态:{},失败,订单号:{}", respCode, params.get("tradesId").toString());
|
|
|
+ logger.info("斗拱回调状态:[" + respCode + "],失败");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(Constants.DOUGONG_PAY_SUCCESS_CODE.equals(respCode) && Constants.DOUGONG_PAY_TRANS_S.equals(transStat)){
|
|
|
+ logger.info("orderCallback--->{}", params.get("tradesId").toString());
|
|
|
+
|
|
|
+ try {
|
|
|
+ logger.info("orderCallback----------------->1");
|
|
|
+
|
|
|
+ PayOrder payOrder = payOrderService.getById(tradesId);
|
|
|
+ payOrder.setOrderNo(huifuPayId);
|
|
|
+ payOrder.setCompleteDate(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,new Date()));
|
|
|
+ payOrder.setChannelNo(huifuPayId);
|
|
|
+ payOrder.setOrderStatus("1");
|
|
|
+ boolean ret = payOrderService.saveOrUpdate(payOrder);
|
|
|
+ if (!ret) {
|
|
|
+ throw new ServiceException("支付订单更新失败,orderId:");
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("斗拱线下扫码订单回调失败:{}", e.getMessage());
|
|
|
+ e.printStackTrace();
|
|
|
+ logger.error("斗拱线下扫码订单回调失败:" + e.getMessage());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ logger.info("斗拱线下扫码订单回调失败.订单:" + huifuPayId);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
private void responseWrite(HttpServletResponse response,String echostr){
|
|
|
try {
|
|
|
response.getWriter().write(echostr);
|