diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java index d44a78bf2..ee957e5c8 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxPayOrderController.java @@ -2,6 +2,7 @@ package com.iformall.controller; import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; +import com.iformall.common.IdWorker; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; @@ -11,6 +12,7 @@ import com.iformall.enums.EnumPayWay; import com.iformall.exception.MallinkException; import com.iformall.service.WxCUserBasicInfoService; import com.iformall.service.WxOrderService; +import com.iformall.service.WxPayAccountService; import com.iformall.service.WxPayOrderService; import com.iformall.utils.IPUtil; import io.swagger.annotations.Api; @@ -40,6 +42,9 @@ public class WxPayOrderController extends BaseController { @Autowired private WxCUserBasicInfoService wxCUserBasicInfoService; + + @Autowired + private WxPayAccountService wxPayAccountService; //@ApiOperation(value = "发起微信小程序支付订单", notes = "{\"orderId\":\"string\"}") @RequestMapping(value = "/create", method = RequestMethod.POST) @@ -135,9 +140,18 @@ public class WxPayOrderController extends BaseController { order = wxOrderService.getById(orderId); return new ResultData(Result.SUCCESS, "支付状态更新成功", order); } else{ - //TODO查询订单状态 - - return new ResultData(ErrorCode.PAY_ORDER_ERROR, "支付状态未知,请等待!!"); + //查询微信订单状态并更新 + WxCUser user = getUser(); + WxAppinfo appInfo = getAppInfo(user.getAppId()); + if (null == appInfo) { + return new ResultData(ErrorCode.PAY_ORDER_ERROR, "当前用户appId["+user.getAppId()+"]找不到appInfo"); + } + WxPayAccount payAccount = wxPayAccountService.getById(appInfo.getPayId()); + WxPayOrder wo = wxPayOrderService.handleWxOrderQuery(payOrder, order, appInfo, payAccount, IdWorker.get()); + if (null != wo) { + return new ResultData(Result.SUCCESS, "支付状态更新成功"); + } + return new ResultData(ErrorCode.PAY_ORDER_ERROR, "查询微信订单支付状态失败,请稍后!"); } } else if (status.equals(EnumPayStatus.PAY_STATUS_FAIL.getCode())) { // 有价券支付失败 diff --git a/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java index 5c281dcb6..3d7295a72 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxPayOrderService.java @@ -3,15 +3,20 @@ package com.iformall.service; import java.util.*; import com.github.pagehelper.PageInfo; +import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxCUser; import com.iformall.domain.po.WxMerchantBUser; +import com.iformall.domain.po.WxOrder; +import com.iformall.domain.po.WxPayAccount; import com.iformall.domain.po.WxPayOrder; import com.iformall.enums.EnumPayWay; public interface WxPayOrderService { + public WxPayOrder handleWxOrderQuery(WxPayOrder oldRecord,WxOrder order,WxAppinfo appInfo,WxPayAccount payAccount,IdWorker idworker); + /** * 创建支付订单 * diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 0993a931e..669a1feba 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -115,6 +115,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { "\"XML_FORMAT_ERROR\":{\"detail\":\"XML格式错误\t\",\"reason\":\"XML格式错误\",\"reason\":\"请检查XML参数格式是否正确\"}}"); @Transactional + @Override public WxPayOrder handleWxOrderQuery(WxPayOrder oldRecord,WxOrder order,WxAppinfo appInfo,WxPayAccount payAccount,IdWorker idworker) { int wxpaystatus = WxPayOrderServiceHelper.wxOrderPayStatus(oldRecord, order, appInfo, payAccount); if (EnumPayStatus.PAY_STATUS_SUCCESS.getCode()==wxpaystatus) { @@ -172,7 +173,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { @Override public ResultData createPayOrder(WxAppinfo appInfo, WxCUser user, WxPayOrder record, EnumPayWay payWay) { - final IdWorker idworker = IdWorker.get(); + IdWorker idworker = IdWorker.get(); EnumPayShare isShare = EnumPayShare.NO;