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);
        }
示例#2
0
        public static void DoTransferProcess(ReqTransfer0200 requestModel, RespTransfer0210 responseModel)
        {
            //It should be queried from database
            ResponseDataEntry48 data = new ResponseDataEntry48();
            decimal             fee  = 0;

            if (requestModel.AdditionalData is RequestDataEntry48)
            {
                fee = ((RequestDataEntry48)requestModel.AdditionalData).Fee;
            }
            if (requestModel.AdditionalData is RequestTlvDataEntry48)
            {
                fee = ((RequestTlvDataEntry48)requestModel.AdditionalData).TD.Fee;
            }
            data.ID = "Transfer Succesful";
            data.IP = new String[] {
                "Transfer Amount: " + requestModel.TransactionAmount,
                "Fee            : " + fee,
                "Total          : " + (requestModel.TransactionAmount + fee)
            };
            responseModel.AdditionalData = data;
        }