.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

浙公网安备 33010602011771号