Exemplo n.º 1
0
        public void SetParameter(ArrayOfKeyValueOfbase64Binarybase64BinaryKeyValueOfbase64Binarybase64Binary config)
        {
            if (config.Key[0] != 0xC0 ||
                config.Key[1] < 0x01 ||
                config.Key[1] > 0x24)
            {
                throw new ArgumentOutOfRangeException();
            }

            try
            {
                var idx = config.Key[1] - 1;
                Array.Copy(config.Value, _currentConfig[idx].Value, config.Value.Length);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public ReturnData StartTransaction(double amount, bool amountSpecified)
        {
            Trace.WriteLine(string.Format("{0}  StartTransaction(): Call", DateTime.Now.ToString("yyyyMMdd HH:mm:ss.fff")));

            ArrayOfKeyValueOfbase64Binarybase64BinaryKeyValueOfbase64Binarybase64Binary txnResult = new ArrayOfKeyValueOfbase64Binarybase64BinaryKeyValueOfbase64Binarybase64Binary
            {
                Key = new byte[] { 0xC1, 0x01 }
            };
            ReturnData returnData = new ReturnData
            {
                ReturnCode  = ReturnCode.Successful,
                ReturnValue = new ArrayOfKeyValueOfbase64Binarybase64BinaryKeyValueOfbase64Binarybase64Binary[] { txnResult }
            };

            byte[] statusWord = null;
            try
            {
                // Initial Transaction
                string t61Message = BuildTxnDataStream(amount);
                //Thread.Sleep(100);
                Trace.WriteLine(string.Format("{0}  StartTransaction(): Sending T61", DateTime.Now.ToString("yyyyMMdd HH:mm:ss.fff")));
                _serialPort.WriteAndReadMessage(PktType.STX, "T61", t61Message, out string t61Response, true, 30000);
                Trace.WriteLine(string.Format("{0}  StartTransaction(): T61 sent", DateTime.Now.ToString("yyyyMMdd HH:mm:ss.fff")));

                _debugLogHandler.ClearDebugLog();

                _serialPort.WriteAndReadMessage(PktType.STX, "V03", "", out string v03Response, true);

                if (v03Response.ToUpper().StartsWith("V040"))
                {
                    string command = v03Response.Substring(v03Response.LastIndexOf(Convert.ToChar(0x1A)) + 1, 4);
                    statusWord = DataManager.HexStringToByteArray(v03Response.Substring(v03Response.Length - 4));

                    _debugLogHandler.Add(
                        new ArrayOfKeyValueOfbase64Binarybase64BinaryKeyValueOfbase64Binarybase64Binary
                    {
                        Key   = DataManager.HexStringToByteArray(command),
                        Value = DataManager.HexStringToByteArray(v03Response.Substring(9))
                    }
                        );
                }
                GetTxnData();
                returnData.ReturnValue[0].Value = TransactionResultAnalyze(t61Response, statusWord);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(string.Format("{0}   Exception: {1}", DateTime.Now.ToString("yyyyMMdd HH:mm:ss.fff"), ex.Message));
                txnResult.Value                = new byte[] { 0xEF, 0x00 };
                returnData.ReturnCode          = ReturnCode.Error;
                returnData.ReturnCodeSpecified = true;
            }
            Trace.WriteLine(string.Format("{0}  StartTransaction(): Return", DateTime.Now.ToString("yyyyMMdd HH:mm:ss.fff")));
            return(returnData);
        }
Exemplo n.º 3
0
 public void Add(ArrayOfKeyValueOfbase64Binarybase64BinaryKeyValueOfbase64Binarybase64Binary data)
 {
     debugLog.Add(data);
 }