public ActionResult Monitor() { if (Request.InputStream.Length > 0) { string xml = string.Empty; using (StreamReader reader = new StreamReader(Request.InputStream)) { xml = reader.ReadToEnd(); } WeiXinPayRequestXML request = XmlOperator.Derialize <WeiXinPayRequestXML>(xml); if (request.result_code.ToUpper() != "SUCCESS") { return(Content("")); } int splitIndex = request.out_trade_no.IndexOf("_"); string orderID = request.out_trade_no; if (splitIndex > 0) { orderID = request.out_trade_no.Substring(0, splitIndex); } string where = string.Format("OrderID='{0}'", orderID); IList <Model.TD_Order_WeiXinPay> payList = weiXinPayBLL.GetList(where, "PayTime desc", null); int count = payList.Count((model) => { return(model.Status == 1); }); if (count > 0) { return(PayOK()); } var config = WeiXinConfig.GetConfig(); count = payList.Count((model) => { if (model.OrderID == orderID && model.NonceStr == request.nonce_str && config.AppID == request.appid && config.ShopID == request.mch_id) { return(true); } return(false); }); if (count > 0) { Model.TD_Order_WeiXinPay pay = new Model.TD_Order_WeiXinPay(); pay.OrderID = orderID; pay.NonceStr = request.nonce_str; pay.WeiXinOrderID = request.transaction_id; pay.OrderFee = request.total_fee; pay.CashFee = request.cash_fee; pay.Status = 1; pay.CallBackTime = DateTime.ParseExact(request.time_end, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture); int result = weiXinPayBLL.Sync(pay, orderID); if (result > 0) { return(PayOK()); } else { return(PayFail()); } } else { return(PayFail()); } } return(Content("")); }