|
|
|
@@ -391,6 +391,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { |
|
|
|
record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); |
|
|
|
List<WxPayOrder> list = wxPayOrderMapper.findList(record); |
|
|
|
String payOrderNo = ""; |
|
|
|
String orderNo = String.valueOf(order.getId()); |
|
|
|
if (list.size() <= 0) { |
|
|
|
// 3. 创建支付订单 |
|
|
|
Long id = idworker.nextId(); |
|
|
|
@@ -452,6 +453,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { |
|
|
|
logger.info("pay order, wechat micropay, " + wxPayOrderP.toString() + ", response: " + response.toString()); |
|
|
|
Map<String, String> returnMap = WxPayment.xmlToMap(response); |
|
|
|
returnMap.put("payOrderId", payOrderNo); |
|
|
|
returnMap.put("orderId", orderNo); |
|
|
|
String return_code = returnMap.get("return_code"); |
|
|
|
String result_code = returnMap.get("result_code"); |
|
|
|
if("SUCCESS".equalsIgnoreCase(return_code)) { |
|
|
|
@@ -534,6 +536,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { |
|
|
|
logger.info("pay order, wechat micropay, " + wxPayOrderSP.toString() + ", response: " + response.toString()); |
|
|
|
Map<String, String> returnMap = WxPayment.xmlToMap(response); |
|
|
|
returnMap.put("payOrderId", payOrderNo); |
|
|
|
returnMap.put("orderId", orderNo); |
|
|
|
String return_code = returnMap.get("return_code"); |
|
|
|
String result_code = returnMap.get("result_code"); |
|
|
|
if("SUCCESS".equalsIgnoreCase(return_code)) { |
|
|
|
@@ -689,28 +692,35 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { |
|
|
|
//USERPAYING--用户支付中 |
|
|
|
//PAYERROR--支付失败(其他原因,如银行返回失败) |
|
|
|
if ("SUCCESS".equals(trade_state)) { |
|
|
|
String transactionId = returnMap.get("transaction_id"); |
|
|
|
record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); |
|
|
|
handlePayOrderStatusUpdate(record); |
|
|
|
handleOrderPaySuccess(record, transactionId); |
|
|
|
return new ResultData(Result.SUCCESS, "订单支付成功", returnMap); |
|
|
|
} else if ("REFUND".equals(trade_state)) { |
|
|
|
record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_REFUND.getCode()); |
|
|
|
handlePayOrderStatusUpdate(record); |
|
|
|
// handlePayOrderStatusUpdate(record); |
|
|
|
return new ResultData(ErrorCode.PAY_ORDER_REFUND, returnMap); |
|
|
|
} else if ("NOTPAY".equals(trade_state)) { |
|
|
|
record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); |
|
|
|
handlePayOrderStatusUpdate(record); |
|
|
|
record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_NOTPAY.getCode()); |
|
|
|
//handlePayOrderStatusUpdate(record); |
|
|
|
return new ResultData(ErrorCode.PAY_ORDER_NOT_PAY, returnMap); |
|
|
|
} else if ("CLOSED".equals(trade_state)) { |
|
|
|
record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_CLOSE.getCode()); |
|
|
|
handlePayOrderStatusUpdate(record); |
|
|
|
///handlePayOrderStatusUpdate(record); |
|
|
|
return new ResultData(ErrorCode.PAY_ORDER_CLOSED, returnMap); |
|
|
|
} else if ("REVOKED".equals(trade_state)) { |
|
|
|
record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_REVERSE.getCode()); |
|
|
|
handlePayOrderStatusUpdate(record); |
|
|
|
// handlePayOrderStatusUpdate(record); |
|
|
|
return new ResultData(ErrorCode.PAY_ORDER_REVERSE, returnMap); |
|
|
|
} else if ("USERPAYING".equals(trade_state)) { |
|
|
|
record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode()); |
|
|
|
handlePayOrderStatusUpdate(record); |
|
|
|
// handlePayOrderStatusUpdate(record); |
|
|
|
return new ResultData(ErrorCode.PAY_ORDER_PAYING, returnMap); |
|
|
|
} else { |
|
|
|
record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_ERR.getCode()); |
|
|
|
handlePayOrderStatusUpdate(record); |
|
|
|
// handlePayOrderStatusUpdate(record); |
|
|
|
return new ResultData(ErrorCode.PAY_ORDER_ERROR, returnMap); |
|
|
|
} |
|
|
|
return new ResultData(Result.SUCCESS, "订单查询成功", returnMap); |
|
|
|
} else { |
|
|
|
String errMsg = ""; |
|
|
|
JSONObject errObj = errorMapQuery.getJSONObject(result_code); |
|
|
|
@@ -923,9 +933,25 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { |
|
|
|
String result_code = returnMap.get("result_code"); |
|
|
|
if("SUCCESS".equalsIgnoreCase(return_code)) { |
|
|
|
if ("SUCCESS".equals(result_code)) { |
|
|
|
record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_CANCEL.getCode()); |
|
|
|
handlePayOrderStatusUpdate(record); |
|
|
|
return new ResultData(Result.SUCCESS, "订单关闭成功", returnMap); |
|
|
|
record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_REVERSE.getCode()); |
|
|
|
record.setUpdateTime(new Date()); |
|
|
|
try { |
|
|
|
wxPayOrderMapper.updateByPrimaryKeySelective(record); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("pay order update error: " + record.toString()); |
|
|
|
throw new MallinkException(ErrorCode.DB_FAIL); |
|
|
|
} |
|
|
|
WxOrder order = new WxOrder(); |
|
|
|
order.setId(record.getOrderId()); |
|
|
|
order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode()); |
|
|
|
order.setUpdateDate(new Date()); |
|
|
|
try { |
|
|
|
wxPayOrderMapper.updateByPrimaryKeySelective(record); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("pay order update error: " + record.toString()); |
|
|
|
throw new MallinkException(ErrorCode.DB_FAIL); |
|
|
|
} |
|
|
|
return new ResultData(Result.SUCCESS, "订单撤销成功", returnMap); |
|
|
|
} else { |
|
|
|
String errMsg = ""; |
|
|
|
JSONObject errObj = errorMapClose.getJSONObject(result_code); |
|
|
|
@@ -1108,7 +1134,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { |
|
|
|
} |
|
|
|
WxOrder order = wxOrderMapper.selectByPrimaryKey(record.getOrderId()); |
|
|
|
if (order == null) { |
|
|
|
logger.error("pay success handle, order " + record.getOrderId() + " not found , payOrderGid : " + record.getPayOrderNo()); |
|
|
|
logger.error("pay success handle, order " + record.getOrderId() + " not found , payOrderid : " + record.getPayOrderNo()); |
|
|
|
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); |
|
|
|
} |
|
|
|
|
|
|
|
@@ -1164,16 +1190,17 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { |
|
|
|
} |
|
|
|
WxOrder order = wxOrderMapper.selectByPrimaryKey(record.getOrderId()); |
|
|
|
if (order == null) { |
|
|
|
logger.error("pay handle, order " + record.getOrderId() + " not found , payOrderGid : " + record.getPayOrderNo()); |
|
|
|
logger.error("pay handle, order " + record.getOrderId() + " not found , payOrderid : " + record.getPayOrderNo()); |
|
|
|
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); |
|
|
|
} |
|
|
|
WxCUser user = wxCUserMapper.selectByPrimaryKey(order.getCUserId()); |
|
|
|
if (user == null) { |
|
|
|
logger.error("pay handle, order " + record.getOrderId() + " not found , payOrderGid : " + record.getPayOrderNo()); |
|
|
|
throw new MallinkException(ErrorCode.USER_IS_EMPTY); |
|
|
|
if(order.getType().equals(EnumOrderType.COUPON.getCode())) { |
|
|
|
WxCUser user = wxCUserMapper.selectByPrimaryKey(order.getCUserId()); |
|
|
|
if (user == null) { |
|
|
|
logger.error("pay handle, order " + record.getOrderId() + " not found , payOrderid : " + record.getPayOrderNo()); |
|
|
|
throw new MallinkException(ErrorCode.USER_IS_EMPTY); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (order.getPayment() > 0) { |
|
|
|
// 订单金额不为0时, 支付订单未创建, 返回异常 |
|
|
|
if (!(record.getId() >0)) { |
|
|
|
@@ -1187,7 +1214,14 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { |
|
|
|
WxAppinfo appInfo = null; |
|
|
|
WxAppinfo appinfoQ = new WxAppinfo(); |
|
|
|
appinfoQ.setTenantId(order.getTenantId()); |
|
|
|
appinfoQ.setType(EnumAppType.C.getCode()); |
|
|
|
if(order.getType().equals(EnumOrderType.COUPON.getCode())) { |
|
|
|
appinfoQ.setType(EnumAppType.C.getCode()); |
|
|
|
} else if(order.getType().equals(EnumOrderType.MICROPAY.getCode())) { |
|
|
|
appinfoQ.setType(EnumAppType.B.getCode()); |
|
|
|
} else { |
|
|
|
appinfoQ.setType(EnumAppType.C.getCode()); |
|
|
|
} |
|
|
|
|
|
|
|
List<WxAppinfo> appList = wxAppinfoMapper.select(appinfoQ); |
|
|
|
if (appList.size() > 0) { |
|
|
|
appInfo = appList.get(0); |
|
|
|
@@ -1222,7 +1256,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { |
|
|
|
} else { |
|
|
|
// 支付订单成功? |
|
|
|
if (updateOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_STATUS_SUCCESS.getCode())) { |
|
|
|
if (StringUtils.isBlank(updateOrder.getTransactionId())) { |
|
|
|
if (StringUtils.isNotBlank(updateOrder.getTransactionId())) { |
|
|
|
// 回调已设置成功 |
|
|
|
// 继续修改订单状态 |
|
|
|
} else { |
|
|
|
@@ -1250,6 +1284,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { |
|
|
|
if ("SUCCESS".equals(trade_state)) { |
|
|
|
// 查询支付订单 -- 已支付 |
|
|
|
// 继续更改状态 |
|
|
|
} else if ("USERPAYING".equals(trade_state)) { |
|
|
|
// 继续检查状态 |
|
|
|
} else { |
|
|
|
// 支付订单未成功,返回异常 |
|
|
|
throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), "支付订单未成功"); |
|
|
|
|