Преглед изворни кода

[支付异常修改][修改]:api不能设置订单支付成功,支付成功只能通过回调和微信订单查询结果设置

release_toaliyun_real
Stormeye.Wu пре 7 година
родитељ
комит
bde5c81569
3 измењених фајлова са 25 додато и 18 уклоњено
  1. +0
    -3
      mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java
  2. +22
    -14
      mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java
  3. +3
    -1
      mallinkService/src/main/resources/mapper/WxOrderMapper.xml

+ 0
- 3
mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java Прегледај датотеку

@@ -99,9 +99,6 @@ public class WxPayOrderController extends BaseController {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "payOrderId参数不正确");
}
}
if (!status.equals(EnumPayStatus.PAY_WAY_CANCEL.getCode())) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "只支持取消支付订单");
}

WxPayOrder payOrder = new WxPayOrder();
payOrder.setId(payOrderId);


+ 22
- 14
mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java Прегледај датотеку

@@ -263,6 +263,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
futureDate.setTime(currentDate.getTime() + 15 * 60 * 1000);
wxPayOrderSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束
wxPayOrderSP.setSign_type("HMAC-SHA256");
wxPayOrderSP.setProfit_sharing(null);
if (isShare == EnumPayShare.YES) {
wxPayOrderSP.setProfit_sharing("Y");
}
@@ -406,6 +407,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
@Override
public ResultData payOrderQuery(WxAppinfo appInfo, WxPayOrder record) {
try {
if (StringUtils.isBlank(record.getPayOrderNo()))
record.setPayOrderNo(String.valueOf(record.getId()));
String response = wechatPayOrderQuery(appInfo, record);

logger.info("pay order query, " + record.toString() + ", response: " + response);
@@ -738,7 +741,6 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void handlePayOrderStatusUpdate(WxPayOrder record) {
// 只支持取消 payOrder
// 判断支付状态
if (record.getPayOrderStatus() == EnumPayStatus.PAY_WAY_WAIT.getCode()) {
logger.error("pay handle, payOrder " + record.getPayOrderNo() +
@@ -755,23 +757,33 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
logger.error("pay handle, order " + record.getOrderId() + " not found , payOrderGid : " + record.getPayOrderNo());
throw new MallinkException(ErrorCode.USER_IS_EMPTY);
}
// 1. get appinfo
WxAppinfo appInfo = null;
WxAppinfo appinfoQ = new WxAppinfo();
appinfoQ.setTenantId(order.getTenantId());
appinfoQ.setType(EnumAppType.C.getCode());
List<WxAppinfo> appList = wxAppinfoMapper.select(appinfoQ);
if (appList.size() > 0) {
appInfo = appList.get(0);


if (order.getPayment() > 0) {
// 订单金额不为0时, 支付订单未创建, 返回异常
if (!(record.getId() >0)) {
throw new MallinkException(ErrorCode.PAY_ORDER_NOT_FOUND);
}
}

Date currentDate = new Date();
if (record.getId() > 0) {
// 1. get appinfo
WxAppinfo appInfo = null;
WxAppinfo appinfoQ = new WxAppinfo();
appinfoQ.setTenantId(order.getTenantId());
appinfoQ.setType(EnumAppType.C.getCode());
List<WxAppinfo> appList = wxAppinfoMapper.select(appinfoQ);
if (appList.size() > 0) {
appInfo = appList.get(0);
}

WxPayOrder updateOrder = null;

// 检查支付订单状态
WxPayOrder payOrderQ = new WxPayOrder();
payOrderQ.setId(record.getId());
payOrderQ.setTenantId(order.getTenantId());
payOrderQ.setOrderId(record.getOrderId());
try {
updateOrder = wxPayOrderMapper.selectOne(payOrderQ);
@@ -805,6 +817,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
} else if (updateOrder.getPayOrderStatus().equals(EnumPayStatus.PAY_WAY_WAIT.getCode())) {
// 回调未返回,主动检查支付订单状态
try {
record.setPayOrderNo(String.valueOf(record.getId()));
String response = wechatPayOrderQuery(appInfo, record);

logger.info("pay order query, " + record.toString() + ", response: " + response);
@@ -836,11 +849,6 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
}
}
}
} else {
// 支付订单未创建, 订单金额不为0时, 返回异常
if (order.getPayment() > 0) {
throw new MallinkException(ErrorCode.PAY_ORDER_NOT_FOUND);
}
}

// 修改订单状态


+ 3
- 1
mallinkService/src/main/resources/mapper/WxOrderMapper.xml Прегледај датотеку

@@ -219,7 +219,9 @@

<select id="selectDetailOfCUser" parameterType="com.iformall.domain.po.WxOrder" resultMap="CVoResultMap">
select <include refid="allCUserOrderDetailColumns" />
from (wx_order o,wx_coupon co,wx_merchant m)
FROM wx_order o
left join wx_coupon co ON o.coupon_id = co.id
left join wx_merchant m ON co.merchant_id = m.id
left join wx_coupon_order c on o.id = c.order_id
left join wx_merchant_shop ms on ms.merchant_id = m.id and ms.is_del = 0
left join wx_shop s on ms.shop_id = s.id


Loading…
Откажи
Сачувај