支付成功后去再次验证支付状态
try { // 到微信查询支付状态 Map<String, String> accountParamsMap =accountsMap.get(SalesOrder.PAY_ACCOUNT_KEY_WECHAT); OrderQueryResponseCommand queryResult = wechatPaymentService.orderQuery(accountParamsMap.get(PaymentAccountCommand.Wechat.appid.name()), accountParamsMap.get(PaymentAccountCommand.Wechat.partnerId.name()), accountParamsMap.get(PaymentAccountCommand.Wechat.paySignKey.name()), paymentInfo.getSerialNumber()); if(queryResult != null) { if(OrderQueryResponseCommand.TRADE_STATE_SUCCESS.equals(queryResult.getTrade_state()) || OrderQueryResponseCommand.TRADE_STATE_USERPAYING.equals(queryResult.getTrade_state())) { // 支付成功和支付中不允许取消 throw new OrderException("Orders canceled Exception : order code : " + orderCommand.getCode() + " , order payment status: " + queryResult.getTrade_state() + " ; reason: already paid! ", OrderExceptionType.ALREADY_PAY_BY_THIRDPART, orderCommand); }else if(OrderQueryResponseCommand.TRADE_STATE_CLOSED.equals(queryResult.getTrade_state())) isNotNeedClose =true; } } catch (WechatException e) { // 订单查询的异常不做额外处理,只记录日志 LOGGER.error("warn: validateCancel exception: orderCode:" + orderCommand.getCode() + "," + e.getMessage(), e); }