Beispiel #1
0
        /// <summary>
        /// 会员签解约维护【1303】
        /// </summary>
        /// <param name="parmaKeyDict"></param>
        /// <returns></returns>
        public string BuildString_1303(ExHashTable parmaKeyDict)
        {
            string result = string.Empty;
            //接收的数据
            var req = Utils.ToDataResult(parmaKeyDict, GlobalData.B2BSpotVersion);

            if (req != null)
            {
                Req_1303 reqModel     = req.ToModel <Req_1303>();
                var      resModel     = new Res_1303();
                var      notifyResult = new NotifyResult()
                {
                    ReqData    = reqModel,
                    RspData    = resModel,
                    DataResult = req
                };
                //处理业务
                var handler = BuildHandler.GetHandler();
                if (handler != null)
                {
                    handler.Process(req.FuncCode, notifyResult);
                }
                //业务处理成功后更改 响应码:RspCode 为成功 "000000"
                parmaKeyDict.Set("RspCode", notifyResult.RspStatus.Code);
                parmaKeyDict.Set("RspMsg", notifyResult.RspStatus.Msg);
                //返回内容
                result = Utils.JoinModelString <Res_1303>(notifyResult.RspData);
            }
            return(result);
        }
Beispiel #2
0
        public string BuildString_F002(ExHashTable parmaKeyDict)
        {
            string result = string.Empty;
            var    req    = Utils.ToDataResult(parmaKeyDict, GlobalData.B2BSpotVersion);

            if (req != null)
            {
                var reqModel     = req.ToModel <DynamicXml>().To_F002();
                var notifyResult = new NotifyResult()
                {
                    ReqData    = reqModel,
                    DataResult = req
                };
                //处理业务
                var handler = BuildHandler.GetHandler();
                if (handler != null)
                {
                    handler.Process(req.FuncCode, notifyResult);
                }
                //业务处理成功后更改 响应码:RspCode 为成功 "000000"
                parmaKeyDict.Set("RspCode", notifyResult.RspStatus.Code);
                parmaKeyDict.Set("RspMsg", notifyResult.RspStatus.Msg);
                result = string.Join(GlobalData.XMLHeadTemplate, "");
            }
            return(result);
        }
        /// <summary>
        /// 处理消息
        /// </summary>
        /// <param name="recv">接收到的数据</param>
        /// <param name="ns">网络流对象</param>
        private void HandleMessage(string recv, NetworkStream ns)
        {
            //给银行的应答数据
            string back = string.Empty, TargetSystem = "", ExMessage = string.Empty;
            //解析的值
            ExHashTable retKeyDict = new ExHashTable();

            try
            {
                if (!string.IsNullOrEmpty(recv))
                {
                    //解析接收到的银行的数据
                    BankInterface bankReq = new BankInterface();
                    TargetSystem = Utils.GetTargetSystem(recv);
                    if (TargetSystem == "03")
                    {
                        //老版本 交易资金03
                        retKeyDict = bankReq.ParsingTranMessageString(recv);
                        back       = bankReq.GetTranMessageRes(retKeyDict);
                    }
                    else if (TargetSystem == "01")
                    {
                        //新版本 银企直连01
                        retKeyDict = bankReq.ParsingBankEnterpriseMessageString(recv);
                        //构建返回数据给银行
                        back = string.Join("", bankReq.GetBankEnterpriseMessageRes(retKeyDict).ToArray());
                    }
                }
                byte[] BackBytes = Utils.ToByte(back);
                ns.Write(BackBytes, 0, BackBytes.Length);
                ns.Flush();
                ns.Close();
            }
            catch (Exception ex)
            {
                ExMessage = ex.Message;
                throw ex;
            }
            finally
            {
                StringBuilder sbLog = new StringBuilder();
                sbLog.AppendFormat("时间:{0}\r\n", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
                sbLog.AppendFormat("接收数据:{0}\r\n", recv);
                sbLog.AppendFormat("响应数据:{0}\r\n", back);
                if (!string.IsNullOrEmpty(ExMessage))
                {
                    sbLog.AppendFormat("异常信息:{0}\r\n", ExMessage);
                }
                sbLog.AppendFormat("解析结果:\r\n{0}\r\n\r\n\r\n", retKeyDict.ToString());
                if (GlobalData.LoadPinganConfig().OpenLog)
                {
                    FileHelper.SaveFile(string.Format("Log\\Recv\\{0}{1}\\bankRecv_{2}.txt", (!string.IsNullOrEmpty(TargetSystem) ? (TargetSystem + "\\") : ""), System.DateTime.Now.ToString("yyyyMMdd"), System.DateTime.Now.ToString("HH")), sbLog.ToString());
                }
            }
        }
        /// <summary>
        /// 查询时间段会员出入金流水信息 [1325]
        /// </summary>
        /// <param name="serialNumber">请求流水号</param>
        /// <param name="req_1324">请求参数</param>
        /// <param name="isAll">是否一次查完所有数据 true是 false否</param>
        /// <param name="counterId">操作员号 5位</param>
        /// <returns></returns>
        public DataResult QueryMemberInOutMoneyFlowInfoInterface(string serialNumber, Req_1324 req_1324, bool isAll = false, string counterId = "")
        {
            //用于存放生成请求报文的参数
            ExHashTable parmaKeyDict = new ExHashTable();

            //请求流水号
            //string serialNumber = AssistantHelper.GetOrderId(6, "yyyyMMddHHmmss", "");
            //交易码
            parmaKeyDict.Add("TranFunc", "1325");
            //请求流水号
            parmaKeyDict.Add("ThirdLogNo", serialNumber);
            //操作员号
            parmaKeyDict.Add("CounterId", counterId);
            //传递对象
            parmaKeyDict.Add("Model", req_1324);
            //获取结果
            var retKeyDict = GetResult(parmaKeyDict);

            if (retKeyDict.RspCode.Equals("000000"))
            {
                var model = retKeyDict.ToModel <Res_1325>();
                var list  = new List <AccessToGoldTradeInfo>();
                list.AddRange(model.AccessToGoldTradeInfoList);
                #region 处理查询所有
                if (isAll)
                {
                    var payPinganConfig = GlobalData.LoadPinganConfig();
                    //最大请求8次
                    int maxCount = 8;
                    for (int i = 0; i < maxCount && model != null && model.LastPage == "0"; i++)
                    {
                        req_1324.PageNum++;
                        //延时
                        Thread.Sleep(payPinganConfig.SleepTime);
                        var rs = QueryMemberInOutMoneyFlowInfoInterface(serialNumber, req_1324, false, counterId);
                        if ((model = rs.Model) != null)
                        {
                            retKeyDict.RspContent += rs.RspContent;
                            model.RecordNum       += rs.Model.AccessToGoldTradeInfoList.Count();
                            list.AddRange(rs.Model.AccessToGoldTradeInfoList);
                        }
                    }
                }
                #endregion
                model.AccessToGoldTradeInfoList = list;
                retKeyDict.Model = model;
            }
            return(retKeyDict);
        }
Beispiel #5
0
        /// <summary>
        /// 文件上传接口
        /// </summary>
        /// <param name="serialNumber">请求流水号</param>
        /// <param name="req_FILE01">请求参数</param>
        /// <param name="counterId">操作员</param>
        /// <returns></returns>
        public DataResult FILE01_Interface(string serialNumber, Req_FILE01 req_FILE01, string counterId = "")
        {
            //用于存放生成请求报文的参数
            ExHashTable parmaKeyDict = new ExHashTable();

            //请求流水号
            //string serialNumber = AssistantHelper.GetOrderId(6, "yyyyMMddHHmmss", "");
            //交易码
            parmaKeyDict.Add("TranFunc", "FILE01");
            //请求流水号
            parmaKeyDict.Add("ThirdLogNo", serialNumber);
            //操作员号
            parmaKeyDict.Add("CounterId", counterId);
            //传递对象
            parmaKeyDict.Add("Model", req_FILE01);
            //获取结果
            var retKeyDict = GetResult(parmaKeyDict);

            return(retKeyDict);
        }
Beispiel #6
0
        /// <summary>
        /// 根据请求参数 返回结果
        /// </summary>
        /// <param name="parmaKeyDict"></param>
        /// <returns></returns>
        private DataResult GetResult(ExHashTable parmaKeyDict)
        {
            //记录日志
            StringBuilder sbLog      = new StringBuilder();
            ExHashTable   retKeyDict = new ExHashTable();

            try
            {
                //检测
                Utils.PayCheckData((string)parmaKeyDict.Get("ThirdLogNo"), (string)parmaKeyDict.Get("CounterId"));
                //获取请求报文
                BankInterface msg = new BankInterface();
                //调用函数生成请求的而完整报文
                List <string> messageList     = msg.GetBankEnterpriseMessageReq(parmaKeyDict, this.IsSpecialLine);
                var           pinganPayConfig = GlobalData.LoadPinganConfig();
                string        reqMessage      = string.Join("", (pinganPayConfig.BankEnterpriseNetHead.NetMessageHead.TeleProtocol == "01" ? messageList.ToArray() : messageList.GetRange(1, 2).ToArray()));
                sbLog.AppendFormat("时间:{0}\r\n", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
                sbLog.AppendFormat("请求:{0}\r\n", reqMessage);
                //发送请求报文  //获取银行返回报文
                string recvMessage = msg.SendMessage(reqMessage, pinganPayConfig.BankEnterpriseNetHead.NetMessageHead.TeleProtocol);
                sbLog.AppendFormat("响应:{0}\r\n", recvMessage);
                //解析返回结果
                retKeyDict = msg.ParsingBankEnterpriseMessageString(recvMessage);
                sbLog.AppendFormat("解析结果:\r\n{0}\r\n", retKeyDict.ToString());
            }
            catch (Exception ex)
            {
                sbLog.AppendFormat("异常信息:{0}\r\n", ex.Message);
                throw ex;
            }
            finally
            {
                //写入日志
                if (GlobalData.LoadPinganConfig().OpenLog)
                {
                    FileHelper.SaveFile(string.Format("Log\\Req\\ReqData_{0}.txt", System.DateTime.Now.ToString("yyyyMMdd")), sbLog.ToString() + "\r\n\r\n");
                }
            }
            //转换
            return(Utils.ToDataResult(retKeyDict, GlobalData.DirectErpBankVersion));
        }
        /// <summary>
        /// 根据请求参数 返回结果
        /// </summary>
        /// <param name="parmaKeyDict"></param>
        /// <returns></returns>
        private DataResult GetResult(ExHashTable parmaKeyDict)
        {
            //记录日志
            StringBuilder sbLog      = new StringBuilder();
            ExHashTable   retKeyDict = new ExHashTable();

            try
            {
                //检测
                Utils.PayCheckData((string)parmaKeyDict.Get("ThirdLogNo"), (string)parmaKeyDict.Get("CounterId"));
                //获取请求报文
                BankInterface msg = new BankInterface();
                //调用函数生成请求的而完整报文
                string reqMessage = msg.GetTranMessageReq(parmaKeyDict, this.IsSpecialLine);
                sbLog.AppendFormat("时间:{0}\r\n", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
                sbLog.AppendFormat("请求:{0}\r\n", reqMessage);
                //发送请求报文  //获取银行返回报文
                string recvMessage = msg.SendMessage(reqMessage);
                sbLog.AppendFormat("响应:{0}\r\n", recvMessage);
                //解析返回结果
                retKeyDict = msg.ParsingTranMessageString(recvMessage);
                sbLog.AppendFormat("解析结果:\r\n{0}\r\n", retKeyDict.ToString());
            }
            catch (Exception ex)
            {
                sbLog.AppendFormat("异常信息:{0}\r\n", ex.Message);
                throw ex;
            }
            finally
            {
                //写入日志
                if (GlobalData.LoadPinganConfig().OpenLog)
                {
                    FileHelper.SaveFile(string.Format("Log\\Req\\ReqData_{0}.txt", System.DateTime.Now.ToString("yyyyMMdd")), sbLog.ToString() + "\r\n\r\n");
                }
            }
            //转换
            return(Utils.ToDataResult(retKeyDict, GlobalData.B2BSpotVersion));
        }
Beispiel #8
0
        /// <summary>
        ///  FILE03文件下载
        /// </summary>
        /// <param name="serialNumber">请求流水号</param>
        /// <param name="req_FILE03">请求参数</param>
        /// <returns></returns>
        public DataResult FILE03_Interface(Req_FILE03 req_FILE03, string counterId = "")
        {
            //用于存放生成请求报文的参数
            ExHashTable parmaKeyDict = new ExHashTable();

            //交易码
            parmaKeyDict.Add("TranFunc", "FILE03");
            //请求流水号
            parmaKeyDict.Add("ThirdLogNo", req_FILE03.TradeSn);
            //操作员号
            parmaKeyDict.Add("CounterId", counterId);
            //传递对象
            parmaKeyDict.Add("Model", req_FILE03);
            //获取结果
            var retKeyDict = GetResult(parmaKeyDict);

            if (retKeyDict.RspCode.Equals("000000"))
            {
                retKeyDict.Model = retKeyDict.ToModel <DynamicXml>().To_FILE03();
            }
            return(retKeyDict);
        }
        /// <summary>
        /// 平台支付与收取 [1031]
        /// </summary>
        /// <param name="serialNumber">请求流水号</param>
        /// <param name="req_1031">请求信息</param>
        /// <param name="counterId">操作员号 5位</param>
        /// <returns></returns>
        public DataResult PlatformPayOrChargeInterface(string serialNumber, Req_1031 req_1031, string counterId = "")
        {
            //用于存放生成请求报文的参数
            ExHashTable parmaKeyDict = new ExHashTable();

            //请求流水号
            //string serialNumber = AssistantHelper.GetOrderId(6, "yyyyMMddHHmmss", "");
            //交易码
            parmaKeyDict.Add("TranFunc", "1031");
            //请求流水号
            parmaKeyDict.Add("ThirdLogNo", serialNumber);
            //操作员号
            parmaKeyDict.Add("CounterId", counterId);
            //传递对象
            parmaKeyDict.Add("Model", req_1031);
            //获取结果
            var retKeyDict = GetResult(parmaKeyDict);

            if (retKeyDict.RspCode.Equals("000000"))
            {
                retKeyDict.Model = retKeyDict.ToModel <Res_1031>();
            }
            return(retKeyDict);
        }
        /// <summary>
        /// 查询对账文件密码【1349】
        /// </summary>
        /// <param name="serialNumber">请求流水号</param>
        /// <param name="req_1349">请求参数</param>
        /// <param name="counterId">操作员号 5位</param>
        /// <returns></returns>
        public DataResult QueryReconciliationFilePwdInterface(string serialNumber, Req_1349 req_1349, string counterId = "")
        {
            //用于存放生成请求报文的参数
            ExHashTable parmaKeyDict = new ExHashTable();

            //请求流水号
            //string serialNumber = AssistantHelper.GetOrderId(6, "yyyyMMddHHmmss", "");
            //交易码
            parmaKeyDict.Add("TranFunc", "1349");
            //请求流水号
            parmaKeyDict.Add("ThirdLogNo", serialNumber);
            //操作员号
            parmaKeyDict.Add("CounterId", counterId);
            //传递对象
            parmaKeyDict.Add("Model", req_1349);
            //获取结果
            var retKeyDict = GetResult(parmaKeyDict);

            if (retKeyDict.RspCode.Equals("000000"))
            {
                retKeyDict.Model = retKeyDict.ToModel <Res_1349>();
            }
            return(retKeyDict);
        }
        /// <param name="serialNumber">请求流水号</param>
        /// <summary>
        /// 查会员出入金账号的银行余额 [1020]
        /// </summary>
        /// <param name="serialNumber">请求流水号</param>
        /// <param name="req_1020">请求参数</param>
        /// <param name="counterId">操作员号 5位</param>
        /// <returns></returns>
        public DataResult QueryMemberInOutMoneyAccountBankBalanceInterface(string serialNumber, Req_1020 req_1020, string counterId = "")
        {
            //用于存放生成请求报文的参数
            ExHashTable parmaKeyDict = new ExHashTable();

            //请求流水号
            //string serialNumber = AssistantHelper.GetOrderId(6, "yyyyMMddHHmmss", "");
            //报文参数赋值
            parmaKeyDict.Add("TranFunc", "1020");//交易码
            //请求流水号
            parmaKeyDict.Add("ThirdLogNo", serialNumber);
            //操作员号
            parmaKeyDict.Add("CounterId", counterId);
            //传递对象
            parmaKeyDict.Add("Model", req_1020);
            //获取结果
            var retKeyDict = GetResult(parmaKeyDict);

            if (retKeyDict.RspCode.Equals("000000"))
            {
                retKeyDict.Model = retKeyDict.ToModel <Res_1020>();
            }
            return(retKeyDict);
        }
Beispiel #12
0
        /// <summary>
        /// 3.1 批量付款文件提交 [KHKF01]
        /// </summary>
        /// <param name="req_KHKF01">请求参数</param>
        /// <param name="counterId">操作员</param>
        /// <returns></returns>
        public DataResult PatchPaymentFileCommitInterface(Req_KHKF01 req_KHKF01, string counterId = "")
        {
            //用于存放生成请求报文的参数
            ExHashTable parmaKeyDict = new ExHashTable();

            //请求流水号
            //string serialNumber = AssistantHelper.GetOrderId(6, "yyyyMMddHHmmss", "");
            //交易码
            parmaKeyDict.Add("TranFunc", "KHKF01");
            //请求流水号
            parmaKeyDict.Add("ThirdLogNo", req_KHKF01.BatchNo);
            //操作员号
            parmaKeyDict.Add("CounterId", counterId);
            //传递对象
            parmaKeyDict.Add("Model", req_KHKF01);
            //获取结果
            var retKeyDict = GetResult(parmaKeyDict);

            if (retKeyDict.RspCode.Equals("000000"))
            {
                retKeyDict.Model = retKeyDict.ToModel <DynamicXml>().To_KHKF01();
            }
            return(retKeyDict);
        }
Beispiel #13
0
        public void MyMainMethod()
        {
            //设置银行客户端端地址和端口
            //string ServerIPAddress = "127.0.0.1";
            //int ServerPort = 7072;//默认端口

            //定义报文参数字典
            ExHashTable parmaKeyDict = new ExHashTable(); //用于存放生成请求报文的参数
            ExHashTable retKeyDict   = new ExHashTable(); //用于存放

            /**
             * 第一部分:生成发送银行的请求的报文的实例
             *
             */

            //生成随机数: 当前精确到秒的时间再加6位的数字随机序列
            string rdNum      = System.DateTime.Now.ToString("yyyyMMddHHmmss");//设置日期格式
            Random random     = new Random();
            int    ird        = random.Next(0, 999999);
            string srd        = ird.ToString().PadLeft(6, '0');
            string thirdLogNo = rdNum + srd;

            //报文参数赋值
            parmaKeyDict.Add("TranFunc", "1330");             //交易码,此处以【1320】接口为例子 1330
            parmaKeyDict.Add("Qydm", "00102079900001231000"); //8545

            parmaKeyDict.Add("ThirdLogNo", thirdLogNo);       //请求流水号,特别重要
            parmaKeyDict.Add("FuncFlag", "1");                //1:签到 2:签退
            parmaKeyDict.Add("TxDate", "20151125");
            parmaKeyDict.Add("Reserve", "保留域");

            //获取请求报文
            BankInterface msg         = new BankInterface();
            string        tranMessage = msg.GetTranMessageReq(parmaKeyDict);//调用函数生成报文

            //输出报文结果
            Console.Write("[输出报文结果]:" + tranMessage);
            // FileHelper.SaveFile("out.txt", tranMessage + "\r\n");

            /**
             * 第二部分:获取银行返回的报文的实例
             *
             */
            //发送请求报文  //获取银行返回报文
            string recvMessage = msg.SendMessage(tranMessage);

            //输出报文结果
            Console.Write("第二部分:获取银行返回的报文");
            Console.Write(recvMessage);
            Console.Write("-------------------------------");

            /**
             * 第三部分:解析银行返回的报文的实例
             *
             */
            retKeyDict = msg.ParsingTranMessageString(recvMessage);
            string rspCode    = (string)retKeyDict.Get("RspCode");    //银行返回的应答码
            string rspMsg     = (string)retKeyDict.Get("RspMsg");     //银行返回的应答描述
            string bodyMsg    = (string)retKeyDict.Get("BodyMsg");
            string frontLogNo = (string)retKeyDict.Get("FrontLogNo"); //银行返回的前置流水号

            //输出报文结果
            Console.Write("第三部分:解析银行返回的报文");
            Console.Write("返回应答码:");
            Console.Write(rspCode);
            Console.Write("返回应答码描述:");
            Console.Write(rspMsg);
            Console.Write("返回报文体:");
            Console.Write(bodyMsg);
            Console.Write("返回前置流水号:");
            Console.Write(frontLogNo);
            Console.Write("-------------------------------");

            Console.ReadLine();
        }