JAVA全系列 教程
3762个小节阅读:7093.8k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
注意:
关单没有时间限制,建议在订单生成后间隔几分钟(最短5分钟)再调用关单接口,避免出现订单状态同步不及时导致关单失败。
xxxxxxxxxx
/**
* 微信支付关单接口的调用
* @param orderNo 订单编号
* @throws Exception
*/
private void closeOrder(String orderNo) throws Exception {
log.info("关单接口的调用,订单号 ===> {}", orderNo);
// 1、拼接请求URL地址
String url = String.format(WxApiType.CLOSE_ORDER_BY_NO.getType(), orderNo);
url = wxPayConfig.getDomain().concat(url);
HttpPost httpPost = new HttpPost(url);
// 2、组装JSON请求体
Map<String, String> paramsMap = new HashMap<>();
paramsMap.put("mchid", wxPayConfig.getMchId());
// 3、Map转JSON
String jsonParams = JSON.toJSONString(paramsMap);
log.info("请求参数 ===> {}", jsonParams);
// 4、将请求参数设置到请求对象中
StringEntity entity = new StringEntity(jsonParams, "utf-8");
entity.setContentType("application/json");
httpPost.setEntity(entity);
httpPost.setHeader("Accept", "application/json");
// 5、完成签名并执行请求
CloseableHttpResponse response = wxPayClient.execute(httpPost);
try {
// 6、响应状态码
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 200) {
log.info("成功200");
} else if (statusCode == 204) { //处理成功,无返回Body
log.info("成功204");
} else {
log.info("Native下单失败,响应码 = " + statusCode);
throw new IOException("request failed");
}
} finally {
response.close();
}
}
xxxxxxxxxx
/**
* 用户取消订单
* @param orderNo 订单接口
*/
@Override
public void cancelOrder(String orderNo) throws Exception {
// 1、调用微信支付关单接口
this.closeOrder(orderNo);
// 2、更新订单状态
iOrderInfoService.updateOrderStatus(orderNo, OrderStatus.CANCEL);
}