public static RedPackInfo SearchOrder(string ordercode, int WeChatType) { string vkey = "ZZCXXCZ090115"; string orderid = ordercode; string dt = DateTime.Now.ToString("yyyyMMddhhmmssfff"); string sign = Common.getMD5.MD5(vkey + dt + orderid).ToUpper(); string url = "http://wxhb.esmartwave.com/redpack/" + (WeChatType == 1 ? "yh" : WeChatType == 2 ? "yb" : "sm") + "_order.aspx?sign=" + sign + "&orderid=" + orderid + "&dt=" + dt; try { string result = Common.WebNet.doPost(url, "").Replace("xml", "RedPackInfo"); RedPackInfo xml = Deserialize(typeof(RedPackInfo), result) as RedPackInfo; if (xml.return_code.ToUpper() == "SUCCESS" && xml.result_code.ToUpper() == "SUCCESS") { //SENDING:发放中 //SENT:已发放待领取 //FAILED:发放失败 //RECEIVED:已领取 //RFUND_ING:退款中 //REFUND:已退款 xml.IsSend = true; } else { xml.IsSend = false; } return(xml); } catch { return(null); } }
public RedPackInfo GetRedpackInfo(string appId, string mch_id, string mch_billno, string partnerkey, string weixincertpath, string weixincertpassword) { PayDictionary payDictionary = new PayDictionary(); payDictionary.Add("nonce_str", Utils.CreateNoncestr()); payDictionary.Add("mch_billno", mch_billno); payDictionary.Add("mch_id", mch_id); payDictionary.Add("appid", appId); payDictionary.Add("bill_type", "MCHT"); string value = SignHelper.SignPackage(payDictionary, partnerkey); payDictionary.Add("sign", value); string data = SignHelper.BuildXml(payDictionary, false); string text = ""; try { text = RedPackClient.Send(weixincertpath, weixincertpassword, data, RedPackClient.QueryRedPackUrl); } catch (Exception ex) { text = ex.Message; } RedPackInfo result; if (!string.IsNullOrEmpty(text) && text.Contains("return_code")) { result = RedPackClient.ConvertDic <RedPackInfo>(RedPackClient.FromXml(text)); } else { result = new RedPackInfo { return_code = "FAIL", return_msg = text, status = "" }; } return(result); }
public void RedPackCheckJob() { new StringBuilder(); DateTime time = DateTime.Now.Date.AddDays(-3.0); DataTable table = new DataTable(); string query = "select UserId,SerialID,RedpackId,Amount from Hishop_BalanceDrawRequest WHERE IsCheck=2 AND RequestType=3 AND CheckTime>=@CheckTime"; DbCommand sqlStringCommand = this.database.GetSqlStringCommand(query); this.database.AddInParameter(sqlStringCommand, "CheckTime", DbType.DateTime, time); using (IDataReader reader = this.database.ExecuteReader(sqlStringCommand)) { table = DataHelper.ConverDataReaderToDataTable(reader); } RedPackClient client = new RedPackClient(); SiteSettings masterSettings = SettingsManager.GetMasterSettings(true); DistributorsDao dao = new DistributorsDao(); if ((table != null) && (table.Rows.Count > 0)) { foreach (DataRow row in table.Rows) { string str2 = row["RedpackId"].ToString(); RedPackInfo info = client.GetRedpackInfo(masterSettings.WeixinAppId, masterSettings.WeixinPartnerID, str2, masterSettings.WeixinPartnerKey, masterSettings.WeixinCertPath, masterSettings.WeixinCertPassword); if (info != null) { redPackStatus status = info.Getstatus(); if (((int)status == 4) || ((int)status == 2)) { int id = int.Parse(row["SerialID"].ToString()); Globals.Debuglog(string.Concat(new object[] { "BalanceDrawRequest-", id, ":", info.ToString() }), "RedPackCheck.txt"); decimal num2 = decimal.Parse(row["Amount"].ToString()); int userId = int.Parse(row["UserId"].ToString()); dao.UpdateBalanceDistributors(userId, -1M * num2); dao.UpdateRedPackStatus(id, "红包" + status.ToString(), null); } } } } query = "select UserId,Id,RedpackId,Amount from Hishop_MemberAmountRequest WHERE State=2 AND RequestType=3 AND CheckTime>=@CheckTime"; AmountDao dao2 = new AmountDao(); sqlStringCommand = this.database.GetSqlStringCommand(query); this.database.AddInParameter(sqlStringCommand, "CheckTime", DbType.DateTime, time); using (IDataReader reader2 = this.database.ExecuteReader(sqlStringCommand)) { table = DataHelper.ConverDataReaderToDataTable(reader2); } if ((table != null) && (table.Rows.Count > 0)) { foreach (DataRow row2 in table.Rows) { string str3 = row2["RedpackId"].ToString(); RedPackInfo info2 = client.GetRedpackInfo(masterSettings.WeixinAppId, masterSettings.WeixinPartnerID, str3, masterSettings.WeixinPartnerKey, masterSettings.WeixinCertPath, masterSettings.WeixinCertPassword); if (info2 != null) { redPackStatus status2 = info2.Getstatus(); if (((int)status2 == 4) || ((int)status2 == 2)) { int num4 = int.Parse(row2["Id"].ToString()); Globals.Debuglog(string.Concat(new object[] { "MemberAmountRequest-", num4, ":", info2.ToString() }), "RedPackCheck.txt"); decimal.Parse(row2["Amount"].ToString()); int.Parse(row2["UserId"].ToString()); dao2.SetAmountRequestStatus(new int[] { num4 }, 3, "红包" + status2.ToString(), "", "SYSJOB"); } } } } }
public void RedPackCheckJob() { StringBuilder stringBuilder = new StringBuilder(); DateTime dateTime = DateTime.Now.Date.AddDays(-3.0); System.Data.DataTable dataTable = new System.Data.DataTable(); string query = "select UserId,SerialID,RedpackId,Amount from Hishop_BalanceDrawRequest WHERE IsCheck=2 AND RequestType=3 AND CheckTime>=@CheckTime"; System.Data.Common.DbCommand sqlStringCommand = this.database.GetSqlStringCommand(query); this.database.AddInParameter(sqlStringCommand, "CheckTime", System.Data.DbType.DateTime, dateTime); using (System.Data.IDataReader dataReader = this.database.ExecuteReader(sqlStringCommand)) { dataTable = DataHelper.ConverDataReaderToDataTable(dataReader); } RedPackClient redPackClient = new RedPackClient(); SiteSettings masterSettings = SettingsManager.GetMasterSettings(true); DistributorsDao distributorsDao = new DistributorsDao(); if (dataTable != null && dataTable.Rows.Count > 0) { foreach (System.Data.DataRow dataRow in dataTable.Rows) { string mch_billno = dataRow["RedpackId"].ToString(); RedPackInfo redpackInfo = redPackClient.GetRedpackInfo(masterSettings.WeixinAppId, masterSettings.WeixinPartnerID, mch_billno, masterSettings.WeixinPartnerKey, masterSettings.WeixinCertPath, masterSettings.WeixinCertPassword); if (redpackInfo != null) { redPackStatus redPackStatus = redpackInfo.Getstatus(); if (redPackStatus == redPackStatus.已退款 || redPackStatus == redPackStatus.发放失败) { int num = int.Parse(dataRow["SerialID"].ToString()); Globals.Debuglog(string.Concat(new object[] { "BalanceDrawRequest-", num, ":", redpackInfo.ToString() }), "RedPackCheck.txt"); decimal d = decimal.Parse(dataRow["Amount"].ToString()); int userId = int.Parse(dataRow["UserId"].ToString()); distributorsDao.UpdateBalanceDistributors(userId, -1m * d); distributorsDao.UpdateRedPackStatus(num, "红包" + redPackStatus.ToString(), null); } } } } query = "select UserId,Id,RedpackId,Amount from Hishop_MemberAmountRequest WHERE State=2 AND RequestType=3 AND CheckTime>=@CheckTime"; AmountDao amountDao = new AmountDao(); sqlStringCommand = this.database.GetSqlStringCommand(query); this.database.AddInParameter(sqlStringCommand, "CheckTime", System.Data.DbType.DateTime, dateTime); using (System.Data.IDataReader dataReader = this.database.ExecuteReader(sqlStringCommand)) { dataTable = DataHelper.ConverDataReaderToDataTable(dataReader); } if (dataTable != null && dataTable.Rows.Count > 0) { foreach (System.Data.DataRow dataRow in dataTable.Rows) { string mch_billno = dataRow["RedpackId"].ToString(); RedPackInfo redpackInfo = redPackClient.GetRedpackInfo(masterSettings.WeixinAppId, masterSettings.WeixinPartnerID, mch_billno, masterSettings.WeixinPartnerKey, masterSettings.WeixinCertPath, masterSettings.WeixinCertPassword); if (redpackInfo != null) { redPackStatus redPackStatus = redpackInfo.Getstatus(); if (redPackStatus == redPackStatus.已退款 || redPackStatus == redPackStatus.发放失败) { int num = int.Parse(dataRow["Id"].ToString()); Globals.Debuglog(string.Concat(new object[] { "MemberAmountRequest-", num, ":", redpackInfo.ToString() }), "RedPackCheck.txt"); decimal d = decimal.Parse(dataRow["Amount"].ToString()); int userId = int.Parse(dataRow["UserId"].ToString()); amountDao.SetAmountRequestStatus(new int[] { num }, 3, "红包" + redPackStatus.ToString(), "", "SYSJOB"); } } } } }