.net core 微信支付-----订单关闭

      首先看一下官方说明:

 

 

 官方给了两个参数,但是请求示例却只给了商户号,这个我也没搞懂,但是看上面的url让传入的是订单号。我估计它的意思是也要把商户号加上,因为请求参数中给了两个参数,我们在请求的时候确实加入的商户号和订单号。

订单关闭信息的Model:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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);
    }

  订单关闭接口:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/// <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

 

posted @   代码如风~~~  阅读(181)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示