官方参考资料
理论实战
官方提供两种查询订单的方式,一种是根据商户自己生成的订单号查询,一种方式是根据微信生成的订单号查询。而我使用的就是第一种方式。
调用微信支付的查询订单,需要生成签名,按照微信支付的接口规则构造http的header。
生成签名可以参考我的文章:《ASP.NET Core 微信支付(一)【统一下单 APIV3】》、《ASP.NET Core 微信支付(二)【 发布到服务器上签名加密时报错:系统找不到指定的文件 APIV3】》。
代码
数据实体映射类
public class WxPayStatusRespModel
{
///
/// 商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一
///
public string out_trade_no { get; set; }
///
/// 微信支付系统生成的订单号。
///
public string transaction_id { get; set; }
///
/// 交易类型,枚举值:
/// JSAPI:公众号支付
/// NATIVE:扫码支付
/// APP:APP支付
/// MICROPAY:付款码支付
/// MWEB:H5支付
/// FACEPAY:刷脸支付
///
public string trade_type { get; set; }
///
/// 交易状态,枚举值:
/// SUCCESS:支付成功
/// REFUND:转入退款
/// NOTPAY:未支付
/// CLOSED:已关闭
/// REVOKED:已撤销(付款码支付)
/// USERPAYING:用户支付中(付款码支付)
/// PAYERROR:支付失败(其他原因,如银行返回失败)
/// ACCEPT:已接收,等待扣款
///
public string trade_state { get; set; }
///
/// 交易状态描述
///
public string trade_state_desc { get; set; }
///
/// 支付者信息
///
public WxPayerModel payer { set; get; }
}
///
/// 支付用户信息实体
///
public class WxPayerModel
{
///
/// 用户在直连商户appid下的唯一标识。
///
public string openid { get; set; }
}
查询订单接口请求代码
var url = $"https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/{orderNumber}?mchid={WxPayConst.mchid}";
var client = new HttpClient(new HttpHandler());
var resp = await client.GetAsync(url);
NlogHelper.Debug("查询订单状态");
var respStr = await resp.Content.ReadAsStringAsync();//这里就是微信支付查询订单返回的json数据了,自己进行解析就可以了
var payModel = respStr.ToObject();
类型转换工具方法
///
/// json字符串转化为相应的类型
///
/// 转化后的类型
/// json字符串
/// 转化后的类型
public static T ToObject(this string json)
{
return json == null ? default(T) : JsonConvert.DeserializeObject(json);
}
有没有大佬知道查询订单生成签名的参数有哪些啊,我用的下单同款 报'message': '签名错误,请检查后再试'}
签名参数有哪些啊