public Wallet(BankInterface bank, MoneyPrinterInterface moneyPrinter)
        {
            this.bank         = bank;
            this.moneyPrinter = moneyPrinter;

            slots = new List <WalletSlot>();
        }
            public int requestorder(string item, int quantity, double totalprice, string accountid)
            {
                int result = 0;
                //if -1 : not approved
                //if 0 : account not found (either no account on the store or n

                CustomerAccountIndividual costumer = CostList.ReadAccountInfo(accountid);

                if (costumer != null) //costumer found
                {
                    result = BankInterface.authorize(costumer.getCardNo(), out uint authorizationNo);

                    if (result == 1) //approved
                    {
                        DeliverOrderTable.createOrder(item, quantity, totalprice, accountid, authorizationNo);
                        this.CustEmail = costumer.getCustEmail();
                        Email.emailConfirmation(this.CustEmail);
                    }
                }
                else
                {
                    Console.WriteLine("Costumer was not found. Try again.");
                    Console.WriteLine();
                }
                return(result);
                //if -1 : not approved
                //if 0 : not found
                //if 1 : not approved
            } //end of requestorder
Beispiel #3
0
        //直接发送测试
        private void btnSend_Click(object sender, EventArgs e)
        {
            string strMessage = r1.Text.Trim();

            new Thread(p =>
            {
                BankInterface bank = new BankInterface();
                string strResult   = bank.SendMessage(strMessage);
            }).Start();
        }
        /// <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());
                }
            }
        }
Beispiel #5
0
        public BANKGUI()
        {
            TcpChannel tcpChannel = new TcpChannel();

            ChannelServices.RegisterChannel(tcpChannel);
            Type requiredType = typeof(BankInterface);

            try
            {
                b = (BankInterface)Activator.GetObject(requiredType, "tcp://localhost:9998/MyBank");
                Console.WriteLine("Connected:");
            }
            catch (Exception e3) { Console.WriteLine("error:" + e3.ToString()); }
            InitializeComponent();
            count = b.readCustomerCount();
            index = 0; Console.WriteLine("Here1={0}", count);

            display(0);
        }
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
        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();
        }
Beispiel #9
0
        public void MyTestLength()
        {
            //string aa = "A001010101001010799000099990000000000220S001  00000022016071111591820160711115918747160000000:交易受理成功                                                                                       00000                       0";
            //int aaa = Encoding.Default.GetBytes(aa).Length;
            //string bb="1&11014165191000&888800000016258&上海新跃物流会员一&V00000027&52&20130802-7&1&0.00&0.00&0.00&&";
            //int cc = Encoding.GetEncoding("GBK").GetBytes(bb).Length+122;


            //string yewu = "1330020               20160714145704ERR087不能重复签到                              000000016PA001201607141459313678458545";
            //int len = Encoding.GetEncoding("GBK").GetBytes(yewu).Length;
            //string str = ":交易受理成功                                                                                       ";
            //int b = str.Length;
            //decimal a = 10m;
            //decimal a = 10.0m;
            //decimal a = 10.01m;
            //decimal a = 10.21m;
            //decimal a = 10.217m;
            //string astr = Utils.DecimalToString(a);
            //return;

            //QiyeLargeBatchMoneyTransfer qiyeLargeBatchMoneyTransfer = new QiyeLargeBatchMoneyTransfer();
            //qiyeLargeBatchMoneyTransfer.CcyCode = "RMB";
            //HOResultSet4018R hOResultSet4018R = new HOResultSet4018R();
            //qiyeLargeBatchMoneyTransfer.HOResultSet4018R.Add(hOResultSet4018R);
            //hOResultSet4018R.AddrFlag = 2;
            //string xml = Utils.ModelToXMLNode<QiyeLargeBatchMoneyTransfer>(qiyeLargeBatchMoneyTransfer);

            //string recvData = "A0010301018529                000000013800000053120022016071410535720160714105605060612ERR087不能重复签到                                                                                        000001            000000000001330020               20160714105357ERR087不能重复签到                              0000000165312020160714105605060612852916071410667468&&";
            //BankInterface bank = new BankInterface();
            //var result = bank.ParsingTranMessageString(recvData);

            //string resData = "A0010301018545                0000000138000000PA001022016071416090720160714161135654063ERR087不能重复签到                                                                                        000001            000000000001330020               20160714160907ERR087不能重复签到                              000000016PA00120160714161135654063854516071410668865&&";
            //var res = Utils.ToModelFromString<Res_1330>(resData);

            //string strReq = "130101                20160803151726999999                                          000000083EB00116080310773878      88771&11014971070008&888800000174252&测试一&02142081007&52&757601035&1&0.00&0.00&0.00&&";
            //byte[] bb1 = Utils.ToByte(strReq);
            //byte[] bb2 = Utils.ToByteUTF8(strReq);

            //int blength = bb1.Length;
            ////int bblength = bb2.Length;

            //var nn = IDType.中国护照.ToValue();
            //string strData = "A0010301018877                0000000205000000EB001012016080315172616080310773878      999999                                                                                                    00000000000000000000000000000130101                20160803151726999999                                          000000083EB00116080310773878      88771&11014971070008&888800000174252&测试一&02142081007&52&757601035&1&0.00&0.00&0.00&&";
            BankInterface bankReq = new BankInterface();

            //ExHashTable retKeyDict = bankReq.ParsingTranMessageString(strData);
            //string back = bankReq.GetTranMessageRes(retKeyDict);

            //string recv = "A0010301018877                000000020700000099999012016080414074916080715018669      999999                                                                                                    000000000000000000000000000001310010               20160804140749999999                                          0000000859999916080715018669      887711014971070008&888800000174433&100.00&11014890513006&测试一&RMB&20160807&02142081007&";
            ////老版本 交易资金03
            //var retKeyDict = bankReq.ParsingTranMessageString(recv);

            ////暂时写死
            //retKeyDict.Set("RspCode", "000000");
            //retKeyDict.Set("RspMsg", "");

            //string back = bankReq.GetTranMessageRes(retKeyDict);

            //string recv1 = "A0010301018877                000000020800000099999012016080509494816080815033215      999999                                                                                                    000000000000000000000000000001310010               20160805094948999999                                          0000000869999916080815033215      887711014971070008&888800000174433&1000.00&11014890513006&测试一&RMB&20160808&02142081007&";
            //ExHashTable retKeyDict = bankReq.ParsingTranMessageString(recv1);
            //string back = bankReq.GetTranMessageRes(retKeyDict);
            Console.ReadLine();
        }