Просмотр исходного кода

更新微信支付bug

release_toaliyun_real
xiaohanzi 6 лет назад
Родитель
Сommit
8e8f360880
2 измененных файлов: 93 добавлений и 83 удалений
  1. +58
    -52
      mallinkCallback/src/main/java/com/iformall/controller/callback/WxPayController.java
  2. +35
    -31
      mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java

+ 58
- 52
mallinkCallback/src/main/java/com/iformall/controller/callback/WxPayController.java Просмотреть файл

@@ -55,58 +55,64 @@ public class WxPayController extends BaseController {
@ResponseBody
public String _payNotify(HttpServletRequest request) throws IOException, JDOMException {
logger.info("[" +getIpAddr() + "]微信支付回调");
InputStream inStream = request.getInputStream();
ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inStream.read(buffer)) != -1) {
outSteam.write(buffer, 0, len);
}
String resultxml = new String(outSteam.toByteArray(), Charset.forName("UTF-8"));
logger.info(resultxml);

outSteam.close();
inStream.close();

Map<String, String> paramMap = null;

try {
paramMap = WxPayment.xmlToMap(resultxml);
logger.info("微信支付回调, notify, param: " + paramMap.toString() );
String response = wxPayOrderService.notify(paramMap, EnumPayWay.PAY_WAY_WEAPP);
logger.info("微信支付回调, notify success, req : " + resultxml);
return response;
} catch (BizMessageException e) {
if (paramMap == null) {
logger.error("微信支付回调, order create error, e: " + e.getMessage());
} else {
logger.error("微信支付回调, order create error, req: " + resultxml + ", e: " + e.getMessage());
}
SortedMap resultMap = new TreeMap<>();
resultMap.put("return_code", "FAIL");
resultMap.put("return_msg", e.getMessage());
return XmlUtil.getRequestXml(resultMap);
} catch (MallinkException e) {
if (paramMap == null) {
logger.error("微信支付回调, order create error, e: " + e.getMessage());
} else {
logger.error("微信支付回调, order create error, req: " + resultxml + ", e: " + e.getMessage());
}
SortedMap resultMap = new TreeMap<>();
resultMap.put("return_code", "FAIL");
resultMap.put("return_msg", e.getMessage());
return XmlUtil.getRequestXml(resultMap);
} catch (Exception e) {
if (paramMap == null) {
logger.error("微信支付回调, order create error, e: " + e.getMessage());
} else {
logger.error("微信支付回调, order create error, req: " + resultxml + ", e: " + e.getMessage());
}
SortedMap resultMap = new TreeMap();
resultMap.put("return_code", "FAIL");
resultMap.put("return_msg", e.getMessage());
return XmlUtil.getRequestXml(resultMap);
}
SortedMap resultMap = new TreeMap();
resultMap.put("return_code", "SUCCESS");
resultMap.put("return_msg", "OK");
return XmlUtil.getRequestXml(resultMap);
// InputStream inStream = request.getInputStream();
// ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
// byte[] buffer = new byte[1024];
// int len = 0;
// while ((len = inStream.read(buffer)) != -1) {
// outSteam.write(buffer, 0, len);
// }
// String resultxml = new String(outSteam.toByteArray(), Charset.forName("UTF-8"));
// logger.info(resultxml);
//
// outSteam.close();
// inStream.close();
//
// Map<String, String> paramMap = null;
//
// try {
// paramMap = WxPayment.xmlToMap(resultxml);
// logger.info("微信支付回调, notify, param: " + paramMap.toString() );
// String response = wxPayOrderService.notify(paramMap, EnumPayWay.PAY_WAY_WEAPP);
// logger.info("微信支付回调, notify success, req : " + resultxml);
// return response;
// } catch (BizMessageException e) {
// if (paramMap == null) {
// logger.error("微信支付回调, order create error, e: " + e.getMessage());
// } else {
// logger.error("微信支付回调, order create error, req: " + resultxml + ", e: " + e.getMessage());
// }
// SortedMap resultMap = new TreeMap<>();
// resultMap.put("return_code", "FAIL");
// resultMap.put("return_msg", e.getMessage());
// return XmlUtil.getRequestXml(resultMap);
// } catch (MallinkException e) {
// if (paramMap == null) {
// logger.error("微信支付回调, order create error, e: " + e.getMessage());
// } else {
// logger.error("微信支付回调, order create error, req: " + resultxml + ", e: " + e.getMessage());
// }
// SortedMap resultMap = new TreeMap<>();
// resultMap.put("return_code", "FAIL");
// resultMap.put("return_msg", e.getMessage());
// return XmlUtil.getRequestXml(resultMap);
// } catch (Exception e) {
// if (paramMap == null) {
// logger.error("微信支付回调, order create error, e: " + e.getMessage());
// } else {
// logger.error("微信支付回调, order create error, req: " + resultxml + ", e: " + e.getMessage());
// }
// SortedMap resultMap = new TreeMap();
// resultMap.put("return_code", "FAIL");
// resultMap.put("return_msg", e.getMessage());
// return XmlUtil.getRequestXml(resultMap);
// }
}




+ 35
- 31
mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java Просмотреть файл

@@ -116,9 +116,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
"\"XML_FORMAT_ERROR\":{\"detail\":\"XML格式错误\t\",\"reason\":\"XML格式错误\",\"reason\":\"请检查XML参数格式是否正确\"}}");

private void handleSuccessOrder(WxPayOrder oldRecord,WxOrder order,Map<String, String> retMap) {
//更新wxPayOrder
Date curDate = new Date();
if (oldRecord.getPayOrderStatus() != EnumPayStatus.PAY_STATUS_SUCCESS.getCode()) {
//更新wxPayOrder
oldRecord.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode());
String timEndStr = retMap.get("time_end");
Date timeEnd = null;
@@ -134,37 +134,41 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
oldRecord.setTransactionId(transactionId);
oldRecord.setUpdateTime(curDate);
wxPayOrderMapper.updateById(oldRecord);
//处理其他信息
WxCoupon wxCoupon = wxCouponMapper.selectById(order.getProductId());
if(wxCoupon != null) {
if (isOrderGroupCoupon(oldRecord, wxCoupon)) {
// 如果是Coupon是拼团, 创建拼团信息, 不创建COUPON_ORDER
try {
wxOrderGroupService.createOrderGroup(order, wxCoupon);
} catch (Exception e) {
logger.error("参团失败" + e.getMessage());
order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_FAILD.getCode());
order.setUpdateDate(new Date());
wxOrderMapper.updateById(order);
throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD);
}
} else {
// 普通券, 修改订单状态
try {
wxOrderService.couponOrderSuccess(order);
} catch (Exception e) {
logger.error(e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "订单更新");
}
// 下订单完成,发送内部消息
try {
wxOrderService.sendOrderSuccessActionMsg(order);
} catch (Exception e) {
logger.error("内部消息发送失败: " + e.getMessage());
throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR);
}
}
}

}
WxCoupon wxCoupon = wxCouponMapper.selectById(order.getProductId());
if(wxCoupon != null) {
if (isOrderGroupCoupon(oldRecord, wxCoupon)) {
// 如果是Coupon是拼团, 创建拼团信息, 不创建COUPON_ORDER
try {
wxOrderGroupService.createOrderGroup(order, wxCoupon);
} catch (Exception e) {
logger.error("参团失败" + e.getMessage());
order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_FAILD.getCode());
order.setUpdateDate(new Date());
wxOrderMapper.updateById(order);
throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD);
}
} else {
// 普通券, 修改订单状态
try {
wxOrderService.couponOrderSuccess(order);
} catch (Exception e) {
logger.error(e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "订单更新");
}
// 下订单完成,发送内部消息
try {
wxOrderService.sendOrderSuccessActionMsg(order);
} catch (Exception e) {
logger.error("内部消息发送失败: " + e.getMessage());
throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR);
}
}
}
}
@Override


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