ASP.NET Core 微信支付(三)【查詢訂單 APIV3】

官方參考資料

  查詢訂單html

理論實戰

  官方提供兩種查詢訂單的方式,一種是根據商戶本身生成的訂單號查詢,一種方式是根據微信生成的訂單號查詢。而我使用的就是第一種方式。git

  調用微信支付的查詢訂單,須要生成簽名,按照微信支付的接口規則構造http的header。json

  生成簽名能夠參考個人文章:《ASP.NET Core 微信支付(一)【統一下單 APIV3】》《ASP.NET Core 微信支付(二)【 發佈到服務器上簽名加密時報錯:系統找不到指定的文件 APIV3】》api

代碼

  數據實體映射類  

    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);
        }
相關文章
相關標籤/搜索