Example #1
0
        public void InsertTransactionCheckBill(TransactionCheckBill entity)
        {
            DataCommand dataCommand = DataCommandManager.GetDataCommand("Invoice.InsertTransactionCheckBill");

            dataCommand.SetParameterValue <TransactionCheckBill>(entity);
            dataCommand.ExecuteNonQuery();
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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);
        }