.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

 

posted @ 2022-10-18 16:17  代码如风~~~  阅读(162)  评论(0编辑  收藏  举报