Ejemplo n.º 1
0
        private void SetPinEntryCode(Object value)
        {
            byte val = 0;

            if (value is byte[])
            {
                _bytes = (byte[])value;
                val    = (byte)(_bytes[1] & 0x0f);
            }
            else
            {
                if (value is PosEntryPinModeBytes)
                {
                    val = (byte)value;
                }
                else if (value is String)
                {
                    byte[] vals = MessageUtility.StringToHex(value.ToString());
                    if (vals == null || vals.Length != 1 || ((vals[0] & 0xf0) != 0))
                    {
                        throw new MessageProcessorException("POSEntryMode.PinEntryCodeString: Invalid value.");
                    }
                    val = vals[0];
                }
                else
                {
                    return;
                }
                _bytes[1] = (byte)((_bytes[1] & 0xf0) | val);
            }
            _pinEntryCode        = (PosEntryPinModeBytes)val;
            _pinEntryCodeString  = MessageUtility.HexToString(val).Substring(1);
            _pinEntryDescription = PIN_ENTRY.ContainsKey(_pinEntryCode) ? PIN_ENTRY[_pinEntryCode] : null;
        }
Ejemplo n.º 2
0
        private void SetMediaCode(Object value)
        {
            byte val = 0;

            if (value is byte[])
            {
                _bytes = (byte[])value;
                val    = (byte)((_bytes[0] << 4) | (_bytes[1] >> 4));
            }
            else
            {
                if (value is PosEntryMediaModeBytes)
                {
                    val = (byte)value;
                }
                else if (value is String)
                {
                    byte[] vals = MessageUtility.StringToHex(value.ToString());
                    if (vals == null || vals.Length != 1)
                    {
                        throw new MessageProcessorException("POSEntryMode.MediaCodeString: Invalid value.");
                    }
                    val = vals[0];
                }
                else
                {
                    return;
                }
                _bytes[0] = (byte)(val >> 4);
                _bytes[1] = (byte)((_bytes[1] & 0x0f) | (val << 4));
            }
            _mediaCode        = (PosEntryMediaModeBytes)val;
            _mediaCodeString  = MessageUtility.HexToString(val);
            _mediaDescription = MEDIA.ContainsKey(_mediaCode) ? MEDIA[_mediaCode] : null;
        }
Ejemplo n.º 3
0
        public MessageEditor()
        {
            InitializeComponent();

            byte[] mediaModeCodes = (byte[])Enum.GetValues(typeof(PosEntryMediaModeBytes));
            byte[] pinModeCodes   = (byte[])Enum.GetValues(typeof(PosEntryPinModeBytes));
            this.PosEntryMode.Items.Clear();
            for (int i = 0; i < mediaModeCodes.Length; i++)
            {
                for (int j = 0; j < pinModeCodes.Length; j++)
                {
                    byte[] value = new byte[2];
                    value[0] = (byte)(mediaModeCodes[i] >> 4);
                    value[1] = (byte)((mediaModeCodes[i] << 4) | (pinModeCodes[j] & 0x0f));
                    this.PosEntryMode.AddItem(value,
                                              MessageUtility.HexToString(value).Substring(1));
                }
            }

            byte[] conditionCodes = (byte[])Enum.GetValues(typeof(PosConditionCodeBytes));
            this.PosConditionCode.Items.Clear();
            for (int i = 0; i < conditionCodes.Length; i++)
            {
                byte[] value = new byte[] { conditionCodes[i] };
                this.PosConditionCode.AddItem(value, MessageUtility.HexToString(value));
            }
        }
Ejemplo n.º 4
0
        public Response0410 Execute(Request0400 request)
        {
            if (request == null)
            {
                if (ProcessErrorNotification != null)
                {
                    ProcessErrorNotification();
                }
                return(null);
            }

            DateTime now = DateTime.Now;

            Response0410 response = new RespReversal0410();

            response.TransactionDate          = now;
            response.TransactionTime          = now;
            response.RetrievalReferenceNumber = MessageUtility.HexToString(request.SystemAuditTraceNumber);
            response.ResponseCode             = ResponseCode.COMPLETED_SUCCESSFULLY;

            if (ProcessReversal != null)
            {
                ProcessReversal(new ReqReversal0400(request), (RespReversal0410)response);
            }

            //ProcessReversal = null;

            return(response);
        }
Ejemplo n.º 5
0
        public Response0210 Execute(Request0200 request)
        {
            if (request == null)
            {
                ProcessErrorNotification?.Invoke();
                return(null);
            }

            DateTime now = DateTime.Now;

            Response0210 response = new Response0210();

            if (request.ProcessingCode.TransactionType == TransactionTypeCodeBytes.CASH_WITHDRAWAL)
            {
                response = new RespCashWithdrawal0210();
            }
            else if (request.ProcessingCode.TransactionType == TransactionTypeCodeBytes.PAYMENT)
            {
                response = new RespPayment0210();
            }
            else if (request.ProcessingCode.TransactionType == TransactionTypeCodeBytes.TRANSFER)
            {
                response = new RespTransfer0210();
            }
            response.TransactionDate           = now;
            response.TransactionTime           = now;
            response.RetrievalReferenceNumber  = MessageUtility.HexToString(request.SystemAuditTraceNumber);
            response.ResponseCode              = ResponseCode.COMPLETED_SUCCESSFULLY;
            response.MessageAuthenticationCode = new byte[8];

            if (request.TransferData != null)
            {
                response.TransferData = request.TransferData;
                //It's just default value, it must be queried from db in the delegates defined above
                response.TransferData.BeneficiaryName         = "BENEFICIARY NAME GENERATED";
                response.TransferData.IssuerInstitutionId     = "4442";
                response.TransferData.CardholderAccountNumber = "1234567890123456";
                response.TransferData.CardholderName          = "CARD HOLDER NAME GENERATED";
            }

            if (request.ProcessingCode.TransactionType == TransactionTypeCodeBytes.CASH_WITHDRAWAL)
            {
                ProcessCashWithdrawal?.Invoke(new ReqCashWithdrawal0200(request), (RespCashWithdrawal0210)response);
            }
            else if (request.ProcessingCode.TransactionType == TransactionTypeCodeBytes.PAYMENT)
            {
                ProcessPayment?.Invoke(new ReqPayment0200(request), (RespPayment0210)response);
            }
            else if (request.ProcessingCode.TransactionType == TransactionTypeCodeBytes.TRANSFER)
            {
                ProcessTransfer?.Invoke(new ReqTransfer0200(request), (RespTransfer0210)response);
            }

            //ProcessCashWithdrawal = null;
            //ProcessPayment = null;
            //ProcessTransfer = null;

            return(response);
        }
Ejemplo n.º 6
0
        public override void WriteJson(JsonWriter writer, Object value, JsonSerializer serializer)
        {
            if (value == null)
            {
                writer.WriteNull();
                return;
            }

            writer.WriteValue(MessageUtility.HexToString((byte[])value));
        }
Ejemplo n.º 7
0
        public Response0210SB Execute(Request0200SB request)
        {
            if (request == null)
            {
                if (ProcessErrorNotification != null)
                {
                    ProcessErrorNotification();
                }
                return(null);
            }

            Response0210SB response = new Response0210SB();

            if (request is Request0200TB)
            {
                response = new Response0210TB();
            }

            DateTime now = DateTime.Now;

            response.TransactionDate           = now;
            response.TransactionTime           = now;
            response.RetrievalReferenceNumber  = MessageUtility.HexToString(request.SystemAuditTraceNumber);
            response.ResponseCode              = ResponseCode.COMPLETED_SUCCESSFULLY;
            response.MessageAuthenticationCode = new byte[8];

            if (request.TransferData != null)
            {
                response.TransferData = request.TransferData;
                //It's just default value, it must be queried from db in the delegates defined above
                response.TransferData.BeneficiaryName         = "BENEFICIARY NAME GENERATED";
                response.TransferData.IssuerInstitutionId     = "4442";
                response.TransferData.CardholderAccountNumber = "1234567890123456";
                response.TransferData.CardholderName          = "CARD HOLDER NAME GENERATED";
            }

            if (ProcessMessage0200SB != null)
            {
                ProcessMessage0200SB(request, response);
            }

            return(response);
        }
        public ActionResult Index(String editedItem = "")
        {
            Session["requestParams"] = new Dictionary <String, Object>()
            {
                { "ServerHost", Request.QueryString["host"] },
                { "ServerPort", Request.QueryString["port"] },
                { "IsSSL", Request.QueryString["isSSl"] != null },
                { "EditedItem", editedItem }
            };

            if (!EditedItems.Item.ContainsKey(editedItem))
            {
                return(Redirect("~/"));
            }
            ViewBag.EditedItem = editedItem;
            ViewBag.Panel      = EditedItems.Item[editedItem].Panel;

            byte[] accountCodes = (byte[])Enum.GetValues(typeof(AccountCodeBytes));
            List <SelectListItem> accountCodeList = new List <SelectListItem>();

            foreach (byte accountCode in accountCodes)
            {
                String accountCodeString = MessageUtility.HexToString(accountCode);
                accountCodeList.Add(
                    new SelectListItem()
                {
                    Value = accountCodeString,
                    Text  = accountCodeString + " - " + ProcessingCode.ACCOUNT[(AccountCodeBytes)accountCode]
                }
                    );
            }
            ViewBag.AccountCodeList = accountCodeList;

            byte[] mediaModeCodes = (byte[])Enum.GetValues(typeof(PosEntryMediaModeBytes));
            List <SelectListItem> posEntryMediaList = new List <SelectListItem>();

            foreach (byte mediaModeCode in mediaModeCodes)
            {
                String mediaModeCodeString = MessageUtility.HexToString(mediaModeCode);
                posEntryMediaList.Add(
                    new SelectListItem()
                {
                    Value = mediaModeCodeString,
                    Text  = mediaModeCodeString + " - " + POSEntryMode.MEDIA[(PosEntryMediaModeBytes)mediaModeCode]
                }
                    );
            }
            ViewBag.PosEntryMediaList = posEntryMediaList;

            byte[] pinModeCodes = (byte[])Enum.GetValues(typeof(PosEntryPinModeBytes));
            List <SelectListItem> posEntryPinList = new List <SelectListItem>();

            foreach (byte pinModeCode in pinModeCodes)
            {
                String pinModeCodeString = MessageUtility.HexToString(pinModeCode).Substring(1);
                posEntryPinList.Add(
                    new SelectListItem()
                {
                    Value = pinModeCodeString,
                    Text  = pinModeCodeString + " - " + POSEntryMode.PIN_ENTRY[(PosEntryPinModeBytes)pinModeCode]
                }
                    );
            }
            ViewBag.PosEntryPinList = posEntryPinList;

            byte[] posConditionCodes = (byte[])Enum.GetValues(typeof(PosConditionCodeBytes));
            List <SelectListItem> posConditionList = new List <SelectListItem>();

            foreach (byte posConditionCode in posConditionCodes)
            {
                String posConditionCodeString = MessageUtility.HexToString(posConditionCode);
                posConditionList.Add(
                    new SelectListItem()
                {
                    Value = posConditionCodeString,
                    Text  = posConditionCodeString + " - " + POSCondition.DESCRIPTION[(PosConditionCodeBytes)posConditionCode]
                }
                    );
            }
            ViewBag.PosConditionList = posConditionList;

            Object model = EditedItems.Item[editedItem].DefaultModel;

            ViewBag.TransactionDescription = "";
            ViewBag.AdditionalField1       = "";
            ViewBag.AdditionalField2       = "";
            if (model is Request0200SB)
            {
                ViewBag.TransactionDescription = (model as Request0200SB).TransactionDescription;
            }
            if (model is Request0200TB)
            {
                ViewBag.AdditionalField1 = (model as Request0200TB).AdditionalField1;
                ViewBag.AdditionalField2 = (model as Request0200TB).AdditionalField2;
            }

            return(View(model));
        }
Ejemplo n.º 9
0
 public override string ToString()
 {
     return(MessageUtility.HexToString(this.ToArray()));
 }
Ejemplo n.º 10
0
        public Response0110 Execute(Request0100 request)
        {
            if (request == null)
            {
                if (ProcessErrorNotification != null)
                {
                    ProcessErrorNotification();
                }
                return(null);
            }

            DateTime now = DateTime.Now;

            Response0110 response = new Response0110();

            switch (request.ProcessingCode.TransactionType)
            {
            case TransactionTypeCodeBytes.BALANCE_INQUIRY: response = new RespBalanceInquiry0110(); break;

            case TransactionTypeCodeBytes.PIN_CHANGE: response = new RespPinChange0110(); break;

            case TransactionTypeCodeBytes.PAYMENT_INQUIRY: response = new RespPaymentInquiry0110(); break;

            case TransactionTypeCodeBytes.TRANSFER_INQUIRY: response = new RespTransferInquiry0110(); break;
            }
            response.TransactionDate           = now;
            response.TransactionTime           = now;
            response.RetrievalReferenceNumber  = MessageUtility.HexToString(request.SystemAuditTraceNumber);
            response.ResponseCode              = ResponseCode.COMPLETED_SUCCESSFULLY;
            response.MessageAuthenticationCode = new byte[8];

            if (request.TransferData != null)
            {
                response.TransferData = request.TransferData;
                //It's just default value, it must be queried from db in the delegates defined above
                response.TransferData.BeneficiaryName         = "BENEFICIARY NAME GENERATED";
                response.TransferData.IssuerInstitutionId     = "4442";
                response.TransferData.CardholderAccountNumber = "1234567890123456";
                response.TransferData.CardholderName          = "CARD HOLDER NAME GENERATED";
            }

            switch (request.ProcessingCode.TransactionType)
            {
            case TransactionTypeCodeBytes.BALANCE_INQUIRY:
                if (ProcessBalanceInquiry != null)
                {
                    ProcessBalanceInquiry(new ReqBalanceInquiry0100(request), (RespBalanceInquiry0110)response);
                }
                break;

            case TransactionTypeCodeBytes.PIN_CHANGE:
                if (ProcessPinChange != null)
                {
                    ProcessPinChange(new ReqPinChange0100(request), (RespPinChange0110)response);
                }
                break;

            case TransactionTypeCodeBytes.PAYMENT_INQUIRY:
                if (ProcessPaymentInquiry != null)
                {
                    ProcessPaymentInquiry(new ReqPaymentInquiry0100(request), (RespPaymentInquiry0110)response);
                }
                break;

            case TransactionTypeCodeBytes.TRANSFER_INQUIRY:
                if (ProcessTransferInquiry != null)
                {
                    ProcessTransferInquiry(new ReqTransferInquiry0100(request), (RespTransferInquiry0110)response);
                }
                break;
            }

            //ProcessBalanceInquiry = null;
            //ProcessPinChange = null;
            //ProcessPaymentInquiry = null;
            //ProcessTransferInquiry = null;

            return(response);
        }
Ejemplo n.º 11
0
        private void InitializeComponent()
        {
            this.TransactionType = new Iso8583Client.IntegerTextBox();
            this.FromAccount     = new Iso8583Client.BytesComboBox();
            this.ToAccount       = new Iso8583Client.BytesComboBox();
            this.SuspendLayout();
            //
            // TransactionType
            //
            this.TransactionType.AcceptNegative = false;
            this.TransactionType.Enabled        = false;
            this.TransactionType.Length         = 0;
            this.TransactionType.Location       = new System.Drawing.Point(0, 0);
            this.TransactionType.MaxLength      = 2;
            this.TransactionType.Name           = "TransactionType";
            this.TransactionType.Size           = new System.Drawing.Size(28, 20);
            this.TransactionType.TabIndex       = 4;
            this.TransactionType.ReadOnly       = true;
            this.TransactionTypeCode            = TransactionTypeCodeBytes.BALANCE_INQUIRY;

            byte[] accountCodes = (byte[])Enum.GetValues(typeof(AccountCodeBytes));

            //
            // FromAccount
            //
            this.FromAccount.FormattingEnabled = true;
            this.FromAccount.Location          = new System.Drawing.Point(34, 0);
            this.FromAccount.Name     = "FromAccount";
            this.FromAccount.Size     = new System.Drawing.Size(300, 21);
            this.FromAccount.TabIndex = 5;
            foreach (byte accountCode in accountCodes)
            {
                this.FromAccount.AddItem(
                    new byte[] { accountCode },
                    MessageUtility.HexToString(accountCode) + " - "
                    + ProcessingCode.ACCOUNT[(AccountCodeBytes)accountCode]
                    );
            }
            this.FromAccount.SelectedIndex = 0;

            //
            // ToAccount
            //
            this.ToAccount.FormattingEnabled = true;
            this.ToAccount.Location          = new System.Drawing.Point(340, 0);
            this.ToAccount.Name     = "ToAccount";
            this.ToAccount.Size     = new System.Drawing.Size(300, 21);
            this.ToAccount.TabIndex = 6;
            foreach (byte accountCode in accountCodes)
            {
                this.ToAccount.AddItem(
                    new byte[] { accountCode },
                    MessageUtility.HexToString(accountCode) + " - "
                    + ProcessingCode.ACCOUNT[(AccountCodeBytes)accountCode]
                    );
            }
            this.ToAccount.SelectedIndex = 0;

            //
            // ProcessingCodeBox
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode       = System.Windows.Forms.AutoScaleMode.Font;
            this.Controls.Add(this.ToAccount);
            this.Controls.Add(this.FromAccount);
            this.Controls.Add(this.TransactionType);
            this.Name = "ProcessingCodeBox";
            this.Size = new System.Drawing.Size(640, 21);
            this.ResumeLayout(false);
            this.PerformLayout();
        }