/// <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); }
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); }
/// <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); }
/// <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)); }
/// <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); }
/// <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); }
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(); }