/// <summary> /// 查询订单,判断订单真实性。 /// 1、判断成功返回true。 /// 2、判断失败返回false,并主动发消息告诉微信后台。 /// </summary> /// <param name="notifyData">微信支付后台发送过来的数据</param> /// <returns></returns> public bool IsTrueOrder(WxData notifyData) { //检查支付结果中transaction_id(微信支付订单号)是否存在 if (!notifyData.IsSet("transaction_id")) { //若transaction_id不存在,则立即返回结果给微信支付后台 ReturnErrorMsgToWx("支付结果中微信订单号不存在"); } //微信支付订单号 string transaction_id = notifyData.GetValue("transaction_id").ToString(); WxData req = new WxData(); req.SetValue("transaction_id", transaction_id); WxData res = WxPayApi.OrderQuery(req); if (res.GetValue("return_code").ToString() == "SUCCESS" && res.GetValue("result_code").ToString() == "SUCCESS") { return(true); } else { ReturnErrorMsgToWx("订单查询失败!判断订单不存在!"); return(false); } }
/// <summary> /// 查询订单 /// </summary> /// <param name="transaction_id"></param> /// <returns></returns> private bool QueryOrder(string transaction_id) { WxData req = new WxData(); req.SetValue("transaction_id", transaction_id); WxData res = WxPayApi.OrderQuery(req); if (res.GetValue("return_code").ToString() == "SUCCESS" && res.GetValue("result_code").ToString() == "SUCCESS") { return(true); } else { return(false); } }
/// <summary> /// 订单查询完整业务流程逻辑,返回订单查询结果(xml格式) /// </summary> /// <param name="transaction_id">微信订单号(优先使用)</param> /// <param name="out_trade_no">商户订单号</param> /// <returns></returns> public static string Run(string transaction_id, string out_trade_no) { Log.Info("OrderQuery", "OrderQuery is processing..."); WxData data = new WxData(); if (!string.IsNullOrEmpty(transaction_id))//如果微信订单号存在,则以微信订单号为准 { data.SetValue("transaction_id", transaction_id); } else//微信订单号不存在,才根据商户订单号去查单 { data.SetValue("out_trade_no", out_trade_no); } WxData result = WxPayApi.OrderQuery(data); //提交订单查询请求给API,接收返回数据 Log.Info("OrderQuery", "OrderQuery process complete, result : " + result.ToXml()); return(result.ToPrintStr()); }