public void DoNotify(string orderId) { OrderCard ordercard = new OrderCard(); OrderCardInfo orderinfo = ordercard.GetModelByOrderId(orderId); DoNotify(orderinfo); }
/// <summary> /// /// </summary> /// <param name="oclass"></param> /// <param name="obj"></param> /// <returns></returns> public static string GetNotifyUrl(int oclass, object obj) { string notifyUrl = string.Empty; if (oclass == 1)//网银 { OrderBankInfo orderInfo = obj as OrderBankInfo; if (orderInfo == null) { return(string.Empty); } OrderBank bll = new OrderBank(); notifyUrl = ""; //bll.GetCallBackUrl(orderInfo); } else if (oclass == 2) //点卡 { OrderCardInfo orderInfo = obj as OrderCardInfo; if (orderInfo == null) { return(string.Empty); } OrderCard bll = new OrderCard(); //notifyUrl = bll.GetCallBackUrl(orderInfo); } else if (oclass == 3)//短信及声讯 { OrderSmsInfo orderInfo = obj as OrderSmsInfo; if (orderInfo == null) { return(string.Empty); } OrderSms bll = new OrderSms(); notifyUrl = bll.GetCallBackUrl(orderInfo); } return(notifyUrl); }
/// <summary> /// /// </summary> /// <param name="stateInfo"></param> public void NotifyCheckStatus(Object stateInfo) { try { OrderCard bll = new OrderCard(); viviapi.Model.Order.OrderCardNotify _notify = (viviapi.Model.Order.OrderCardNotify)stateInfo; string notifyUrl = "";// bll.GetCallBackUrl(_notify.orderInfo); string SuccessFlag = Utility.Successflag(_notify.orderInfo.version); if (string.IsNullOrEmpty(notifyUrl)) { _notify.tmr.Dispose(); _notify.tmr = null; } else { bool timerflag = false; string callback = string.Empty; _notify.orderInfo.notifycount++; if (_notify.tmr != null) { switch (_notify.orderInfo.notifycount) { case 1: timerflag = (_notify.tmr).Change(TimeSpan.FromSeconds(20), TimeSpan.FromSeconds(200)); break; case 2: timerflag = (_notify.tmr).Change(TimeSpan.FromMinutes(1), TimeSpan.FromSeconds(200)); //1分钟 break; case 3: timerflag = (_notify.tmr).Change(TimeSpan.FromMinutes(2), TimeSpan.FromSeconds(200)); //2分钟 break; case 4: timerflag = (_notify.tmr).Change(TimeSpan.FromMinutes(5), TimeSpan.FromSeconds(200)); //5分钟 break; case 5: timerflag = (_notify.tmr).Change(TimeSpan.FromMinutes(10), TimeSpan.FromSeconds(200)); //10分钟 break; case 6: timerflag = (_notify.tmr).Change(TimeSpan.FromMinutes(20), TimeSpan.FromSeconds(200)); //20分钟 break; case 7: timerflag = (_notify.tmr).Change(TimeSpan.FromMinutes(30), TimeSpan.FromSeconds(200)); //30分钟 break; case 8: timerflag = (_notify.tmr).Change(TimeSpan.FromMinutes(60), TimeSpan.FromSeconds(200)); //1小时 break; case 9: timerflag = (_notify.tmr).Change(TimeSpan.FromMinutes(120), TimeSpan.FromSeconds(200)); //2小时 break; case 10: timerflag = (_notify.tmr).Change(TimeSpan.FromMinutes(240), TimeSpan.FromSeconds(200)); //4小时 break; } } try { callback = viviLib.Web.WebClientHelper.GetString(notifyUrl, string.Empty, "GET", System.Text.Encoding.GetEncoding("GB2312"), 100000); } catch { } if (_notify.orderInfo.notifycount <= 10)//.notifycount == 1 || callback.ToLower() == SuccessFlag) { bool isOk = (callback.StartsWith(SuccessFlag) || callback.ToLower().StartsWith(SuccessFlag)); _notify.orderInfo.notifystat = isOk ? 2 : 4; _notify.orderInfo.againNotifyUrl = notifyUrl; _notify.orderInfo.notifycontext = callback; _notify.orderInfo.notifytime = DateTime.Now; bll.UpdateNotifyInfo(_notify.orderInfo); } if (callback.ToLower() == SuccessFlag || _notify.orderInfo.notifycount >= 10) { if (_notify != null) { _notify.tmr.Dispose(); _notify.tmr = null; } } } } catch (Exception ex) { viviLib.ExceptionHandling.ExceptionHandler.HandleException(ex); } }
const int DefaultTimeout = 2 * 60 * 1000; // 2 minutes timeout #region UpdatetoDB /// <summary> /// 将结果返回到数据库 /// </summary> /// <param name="oclass"></param> /// <param name="obj"></param> /// <param name="agurl"></param> /// <param name="times"></param> /// <param name="callbacktext"></param> private static void UpdatetoDB(int oclass, object obj, string agurl, int times, string callbacktext, bool success, string errcode) { if (oclass == 1) { OrderBankInfo orderInfo = obj as OrderBankInfo; if (orderInfo != null) { OrderBank dal = new OrderBank(); //string SuccessFlag = SystemApiHelper.Successflag(orderInfo.version); bool isnotifysucc = SystemApiHelper.CheckCallBackIsSuccess(orderInfo.version, callbacktext); orderInfo.notifystat = isnotifysucc ? 2 : 4; orderInfo.againNotifyUrl = agurl; orderInfo.notifycontext = callbacktext; orderInfo.notifycount = times; orderInfo.notifytime = DateTime.Now; dal.UpdateNotifyInfo(orderInfo); if (orderInfo.notifystat != 2) { //没有成功将发送到异常队列 多次通知 banknotifyQueue.Send(orderInfo); } } } else if (oclass == 2) { OrderCardInfo orderInfo = obj as OrderCardInfo; if (orderInfo != null) { OrderCard dal = new OrderCard(); bool isnotifysucc = SystemApiHelper.CheckCallBackIsSuccess(orderInfo.version, callbacktext); orderInfo.notifystat = isnotifysucc ? 2 : 4; orderInfo.againNotifyUrl = agurl; orderInfo.notifycontext = callbacktext; orderInfo.notifycount = times; orderInfo.notifytime = DateTime.Now; dal.UpdateNotifyInfo(orderInfo); if (orderInfo.notifystat != 2) { //没有成功将发送到异常队列 多次通知 cardnotifyQueue.Send(orderInfo); } } } else if (oclass == 3) { OrderSmsInfo orderInfo = obj as OrderSmsInfo; if (orderInfo != null) { OrderSms dal = new OrderSms(); orderInfo.notifystat = success ? 2:4; orderInfo.issucc = success; orderInfo.errcode = errcode; orderInfo.againNotifyUrl = agurl; orderInfo.notifycontext = callbacktext; orderInfo.notifycount = times; dal.UpdateNotifyInfo(orderInfo); if (orderInfo.notifystat != 2) { //没有成功将发送到异常队列 多次通知 smsnotifyQueue.Send(orderInfo); } } } }