ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

ASP.NET Core 微信支付(三)【查询订单 APIV3】

2021-02-28 13:02:42  阅读:186  来源: 互联网

标签:Core ASP APIV3 string get 微信 set 支付 public


官方参考资料

  查询订单

理论实战

  官方提供两种查询订单的方式,一种是根据商户自己生成的订单号查询,一种方式是根据微信生成的订单号查询。而我使用的就是第一种方式。

  调用微信支付的查询订单,需要生成签名,按照微信支付的接口规则构造http的header。

  生成签名可以参考我的文章:《ASP.NET Core 微信支付(一)【统一下单 APIV3】》《ASP.NET Core 微信支付(二)【 发布到服务器上签名加密时报错:系统找不到指定的文件 APIV3】》

代码

  数据实体映射类  

    public class WxPayStatusRespModel
    {
        /// <summary>
        ///  商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一
        /// </summary>
        public string out_trade_no { get; set; }

        /// <summary>
        ///  微信支付系统生成的订单号。
        /// </summary>
        public string transaction_id { get; set; }

        /// <summary>
        ///  交易类型,枚举值:
        ///  JSAPI:公众号支付
        ///  NATIVE:扫码支付
        ///  APP:APP支付
        ///  MICROPAY:付款码支付
        ///  MWEB:H5支付
        ///  FACEPAY:刷脸支付
        /// </summary>
        public string trade_type { get; set; }

        /// <summary>
        /// 交易状态,枚举值:
        /// SUCCESS:支付成功
        /// REFUND:转入退款
        /// NOTPAY:未支付
        /// CLOSED:已关闭
        /// REVOKED:已撤销(付款码支付)
        /// USERPAYING:用户支付中(付款码支付)
        /// PAYERROR:支付失败(其他原因,如银行返回失败)
        /// ACCEPT:已接收,等待扣款
        /// </summary>
        public string trade_state { get; set; }

        /// <summary>
        /// 交易状态描述
        /// </summary>
        public string trade_state_desc { get; set; }

        /// <summary>
        /// 支付者信息
        /// </summary>
        public WxPayerModel payer { set; get; }
    }

    /// <summary>
    /// 支付用户信息实体
    /// </summary>
    public class WxPayerModel
    {
        /// <summary>
        /// 用户在直连商户appid下的唯一标识。
        /// </summary>
        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<WxPayStatusRespModel>();

  类型转换工具方法

        /// <summary>
        /// json字符串转化为相应的类型
        /// </summary>
        /// <typeparam name="T">转化后的类型</typeparam>
        /// <param name="json">json字符串</param>
        /// <returns>转化后的类型</returns>
        public static T ToObject<T>(this string json)
        {
            return json == null ? default(T) : JsonConvert.DeserializeObject<T>(json);
        }

标签:Core,ASP,APIV3,string,get,微信,set,支付,public
来源: https://www.cnblogs.com/dawenyang/p/14458717.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有