支付成功后去再次验证支付状态
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);
}