.net core 微信支付-----订单关闭
首先看一下官方说明:
官方给了两个参数,但是请求示例却只给了商户号,这个我也没搞懂,但是看上面的url让传入的是订单号。我估计它的意思是也要把商户号加上,因为请求参数中给了两个参数,我们在请求的时候确实加入的商户号和订单号。
订单关闭信息的Model:
public class CloseOrder { /// <summary> /// 错误的编码 /// </summary> public string code { set; get; } /// <summary> /// 具体的错误信息和原因 /// </summary> public string message { set; get; } /// <summary> /// http状态码 /// NoContent 关闭成功 /// BadRequest 关闭失败 /// </summary> public string StatusCode { set; get; } /// <summary> /// 订单是否关闭成功 /// </summary> public bool Success => StatusCode == "NoContent" && string.IsNullOrEmpty(code); }
订单关闭接口:
/// <summary> /// 订单关闭 /// </summary> /// <param name="OrderSno">订单号</param> /// <returns></returns> [HttpPost("Close")] public async Task<CloseOrder> Close(string OrderSno) { var url = $"https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/"+OrderSno+"/close"; var client = new HttpClient(new HttpHandler()); var bodyJson = new StringContent(new { mchid = WeChatConfig.mchid }.ToJson(), Encoding.UTF8, "application/json"); var resp = await client.PostAsync(url, bodyJson); var respStr = await resp.Content.ReadAsStringAsync(); var closeModel = new CloseOrder(); if (!string.IsNullOrEmpty(respStr)) closeModel = respStr.ToObject<CloseOrder>(); return closeModel; }
效果图:
上图结果已经返回了,当然当前这个订单已经支付了,所以才返回这样的信息的。
链接:https://pan.baidu.com/s/1CVtfbQ4mVk8saPZSZWTATg?pwd=72bb
提取码:72bb
.Net Core