1、微信文档
该接口提供所有微信支付订单的查询,商户可以通过查询订单接口主动查询订单状态,完成下一步的业务逻辑。
https://pay.weixin.qq.com/doc/v2/merchant/4011941128
2、接口场景
需要调用查询接口的情况:
- 当商户后台、网络、服务器等出现异常;
- 调用支付接口后,返回系统错误或未知交易状态情况;
- 调用付款码支付API,返回USERPAYING的状态;
- 调用关单或撤销接口API之前,需确认支付状态;
3、订单查询
import com.alibaba.fastjson.JSON;
import com.github.binarywang.wxpay.bean.request.WxPayOrderQueryRequest;
import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.github.binarywang.wxpay.service.WxPayService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* 微信支付工具类
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class PayUtils {
private final WxPayService wxPayService;
/**
* 订单查询
*
* @param orderNo 订单号
*/
public WxPayOrderQueryResult queryOrder(String orderNo) {
WxPayOrderQueryResult result = null;
try {
WxPayOrderQueryRequest request = new WxPayOrderQueryRequest();
request.setOutTradeNo(orderNo);
result = wxPayService.queryOrder(request);
log.info("请求WX查询订单结果:{},{}", orderNo, JSON.toJSONString(result));
} catch (WxPayException e) {
log.error(String.format("订单查询异常: %s", orderNo), e);
}
return result;
}
}
可使用微信订单号或商户订单号进行订单查询,这里我们使用了商户订单号查询。接口响应得到:
{
"transaction_id": "1008450740201411110005820873",
"nonce_str": "TN55wO9Pba5yENl8",
"trade_state": "SUCCESS",
"bank_type": "CCB_DEBIT",
"openid": "oUpF8uN95-Ptaags6E_roPHg7AG0",
"sign": "BDF0099C15FF7BC6B1585FBB110AB635",
"return_msg": "OK",
"fee_type": "CNY",
"mch_id": "10000100",
"device_info": "1000",
"out_trade_no": "1415757673",
"appid": "wx2421b1c4370ec43b",
"total_fee": "1",
"trade_type": "MICROPAY",
"result_code": "SUCCESS",
"attach": "订单额外描述",
"time_end": "20141111170043",
"is_subscribe": "N",
"return_code": "SUCCESS"
}
交易成功判断条件: return_code、result_code和trade_state都为SUCCESS
如您在阅读中发现不足,欢迎留言!!!