public void InsertTransactionCheckBill(TransactionCheckBill entity) { DataCommand dataCommand = DataCommandManager.GetDataCommand("Invoice.InsertTransactionCheckBill"); dataCommand.SetParameterValue <TransactionCheckBill>(entity); dataCommand.ExecuteNonQuery(); }
/// <summary> /// 同步对账单 /// </summary> /// <param name="billType"> /// 交易类型 /// 1 交易对账 /// 2 实扣税费对账 /// 3 保证金对账 /// 4 外币账户对账 /// </param> /// <param name="date">日期,格式:yyyyMMdd</param> /// <returns></returns> public bool SyncTradeBill(string billType, string date) { //获取所有需要对账的关务对接相关信息 var list = ObjectFactory <SOIncomeProcessor> .Instance.QueryVendorCustomsInfo();; //循环 逐个对账 foreach (VendorCustomsInfo customsInfo in list) { Dictionary <string, string> reqParams = new Dictionary <string, string>(); //一级商户代码 reqParams["SRC_NCODE"] = customsInfo.CBTSRC_NCode; //对账日期 reqParams["DATE"] = date; //账单类别 reqParams["ACCOUNT_TYPE"] = billType; StringBuilder reqXml = new StringBuilder(); reqXml.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><EasipayB2CRequest><ReqData>"); foreach (KeyValuePair <string, string> kvp in reqParams) { reqXml.AppendFormat("<{0}><![CDATA[{1}]]></{0}>", kvp.Key, kvp.Value); } reqXml.Append("</ReqData></EasipayB2CRequest>"); string resResult = HttpPostRequestReturnString(AppSettingManager.GetSetting("Invoice", "CheckUrl"), BuildPostReqData(reqXml.ToString(), customsInfo), true); string[] resResultArray = resResult.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries); foreach (string item in resResultArray) { string[] itemArray = item.Split('|'); if (itemArray == null || itemArray.Length != 15) { ECCentral.Service.Utility.Logger.WriteLog(string.Format("同步对账单失败,本条记录:{0}", item), "同步对账单"); continue; } TransactionCheckBill bill = new TransactionCheckBill() { TransactionType = itemArray[0].Equals("P") ? CheckTransactionType.P : CheckTransactionType.R, SoSysNo = int.Parse(itemArray[1]), SerialNo = string.Format("{0}{1}", itemArray[0].Equals("P") ? "P" : "R", itemArray[2]), SubOrderTime = itemArray[3], ProcessingTime = itemArray[4], TotalAmount = decimal.Parse(itemArray[5]), ProductAmount = decimal.Parse(itemArray[6]), ForexCurrency = itemArray[7], ForexAmount = decimal.Parse(itemArray[8]), Tariff = decimal.Parse(itemArray[10]), FareAmount = decimal.Parse(itemArray[11]), FareCurrency = itemArray[12], SubtotalAmount = decimal.Parse(itemArray[13]), MerchantName = itemArray[14] }; if (!string.IsNullOrWhiteSpace(itemArray[9])) { bill.Exchange = decimal.Parse(itemArray[9]); } ObjectFactory <IInvoiceDA> .Instance.InsertTransactionCheckBill(bill); } } return(true); }
/// <summary> /// 对账 /// </summary> /// <param name="date"></param> /// <returns></returns> public bool SyncTradeBill(string date) { string partner = AppSettingManager.GetSetting("Invoice", "IPSPartner"); string IPSSecurityKey = AppSettingManager.GetSetting("Invoice", "IPSSecurityKey"); //环宇支付每分钟允许掉用10次 int allowTimePer = 10; string startTime = DateTime.Now.AddDays(-1).ToString("yyyyMMdd") + "000000"; string endTime = DateTime.Now.ToString("yyyyMMdd") + "235959"; int page = 0; int size = 100; bool complete = false; do { page++; string sign = Sign(string.Format("{0}{1}{2}{3}{4}{5}{6}{7}", partner, 1, "NT", startTime, endTime, page, size, IPSSecurityKey)); OrderMsg msg = new ServiceSoapClient().GetOrderByTime(partner, sign, 1, "NT", startTime, endTime, page, size); if (msg.ErrCode.Equals("0000")) { if (msg.Total <= (page - 1) * size + msg.Count) { complete = true; } foreach (var temp in msg.OrderRecords) { string resign = Sign(string.Format("{0}{1}{2}{3}{4}{5}{6}{7}{8}", temp.OrderNo, temp.IPSOrderNo, temp.Trd_Code, temp.Cr_Code, temp.Amount.ToString("f2"), temp.MerchantOrderTime, temp.IPSOrderTime, temp.Flag, IPSSecurityKey)); if (temp.Sign.Equals(resign)) { TransactionCheckBill bill = new TransactionCheckBill() { //TransactionType = CheckTransactionType.P, //SoSysNo = int.Parse(temp.OrderNo), //SerialNo = string.Format("{0}{1}", itemArray[0].Equals("P") ? "P" : "R", itemArray[2]), //SubOrderTime = itemArray[3], //ProcessingTime = itemArray[4], //TotalAmount = decimal.Parse(itemArray[5]), //ProductAmount = decimal.Parse(itemArray[6]), //ForexCurrency = itemArray[7], //ForexAmount = decimal.Parse(itemArray[8]), //Tariff = decimal.Parse(itemArray[10]), //FareAmount = decimal.Parse(itemArray[11]), //FareCurrency = itemArray[12], //SubtotalAmount = decimal.Parse(itemArray[13]), //MerchantName = itemArray[14] }; bill.TransactionType = (CheckTransactionType)1; int _OrderNo = 0; if (int.TryParse(temp.OrderNo, out _OrderNo)) { bill.SoSysNo = _OrderNo; } else { continue; } bill.SerialNo = temp.IPSOrderNo; bill.SubOrderTime = temp.MerchantOrderTime; bill.ProcessingTime = temp.IPSOrderTime; bill.TotalAmount = (decimal)temp.Amount; bill.ForexCurrency = temp.Cr_Code; ObjectFactory <IInvoiceDA> .Instance.InsertTransactionCheckBill(bill); } } } else { //return getTradeBillReturnMessage(msg.ErrCode); throw new BizException(getTradeBillReturnMessage(msg.ErrCode)); } if (page % allowTimePer == 0) { Thread.Sleep(60000); } } while (!complete); return(true); }