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