Exemple #1
0
 private async Task CallTopUpWebService(string toAccountNumber, long?amount, string cvv, TLV emvData)
 {
     Device.BeginInvokeOnMainThread(() =>
     {
         gridProgress.IsVisible = true;
     });
     try
     {
         Proxies.DCEMVDemoServerClient client = SessionSingleton.GenDCEMVServerApiClient();
         using (SessionSingleton.HttpClient)
         {
             CCTopUpTransaction tx = new CCTopUpTransaction()
             {
                 Amount   = amount.Value,
                 CVV      = cvv,
                 EMV_Data = TLVasJSON.ToJSON(emvData),
             };
             await client.TransactionTopupPostAsync(tx.ToJsonString());
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
     finally
     {
         Device.BeginInvokeOnMainThread(() =>
         {
             gridProgress.IsVisible = false;
         });
     }
 }
        public void TopUp(string json)
        {
            CCTopUpTransaction tx = CCTopUpTransaction.FromJsonString(json);

            if (tx.Amount == 0)
            {
                throw new ValidationException("Invalid Amount");
            }

            if (string.IsNullOrEmpty(tx.CVV))
            {
                throw new ValidationException("Invalid CVV");
            }

            CCTopUpTransactionPM tpm = new CCTopUpTransactionPM()
            {
                Amount   = tx.Amount,
                CVV      = tx.CVV,
                EMV_Data = tx.EMV_Data
            };

            TLV EMV_Data = TLVasJSON.FromJSON(tpm.EMV_Data);

            //TODO: only accept transactions from EMV cards, not DC EMV cards

            //TODO: reject contact transactions, with ARQC, contact would have already been online via
            //AuthTransactionToIssuer

            //contactless online
            //if (((EMV_Data.Children.Get(EMVTagsEnum.CRYPTOGRAM_INFORMATION_DATA_9F27_KRN.Tag).Value[0] & 0xC0) >> 6) == (byte)ACTypeEnum.ARQC)
            //{
            //    try
            //    {
            //        ApproverResponse onlineResponse = GoOnline(
            //                                new ApproverRequest()
            //                                {
            //                                    EMV_Data = EMV_Data,
            //                                });

            //        if (!onlineResponse.IsApproved)
            //        {
            //            throw new ValidationException("Contactless Online Auth Declined");
            //        }
            //    }
            //    catch (Exception ex)
            //    {
            //        throw new ValidationException("Contactless Online Auth Declined, Unable to go online:" + ex.Message);
            //    }
            //}

            bool isAccepted = AdviseTransactionToIssuer();

            if (!isAccepted)
            {
                throw new ValidationException("Advice Message not accepted");
            }

            _transactionRepository.AddTopUpTransaction(tpm, GetCurrentUserId());
        }
Exemple #3
0
        public Account GetAccountTransactions()
        {
            AccountPM account = accountsRepository.GetTransactionsForUser(GetCurrentUserId());

            Account accountDetails = new Account()
            {
                AccountNumberId  = account.AccountNumberId,
                AccountState     = account.AccountState,
                CustomerType     = account.CustomerType,
                FirstName        = account.FirstName,
                LastName         = account.LastName,
                BusinessName     = account.BusinessName,
                CompanyRegNumber = account.CompanyRegNumber,
                TaxNumber        = account.TaxNumber,
                Balance          = account.Balance,
            };

            account.TransactionsFrom.ForEach(x =>
            {
                CardTransferTransaction tx = new CardTransferTransaction()
                {
                    AccountFrom = x.AccountNumberIdFromRef,
                    //AccountTo = x.AccountNumberIdToRef,
                    Amount          = x.Amount,
                    TransactionType = x.TransactionType,
                    DateTime        = x.TransactionDateTime,
                    TransactionId   = x.TransactionId,
                };
                accountDetails.TransferFromTransactions.Add(tx);
            });

            account.TransactionsTo.ForEach(x =>
            {
                CardTransferTransaction tx = new CardTransferTransaction()
                {
                    //AccountFrom = x.AccountNumberIdFromRef,
                    AccountTo       = x.AccountNumberIdToRef,
                    Amount          = x.Amount,
                    TransactionType = x.TransactionType,
                    DateTime        = x.TransactionDateTime,
                    TransactionId   = x.TransactionId,
                };
                accountDetails.TransferToTransactions.Add(tx);
            });

            account.POSTransactionsTo.ForEach(x =>
            {
                POSTransaction tx = new POSTransaction()
                {
                    AccountNumberId     = x.AccountNumberIdToRef,
                    TransactionDateTime = x.TransactionDateTime,
                    TransactionId       = x.TransactionIdRef,
                    POSTransactionId    = x.POSTransactionId,
                };
                accountDetails.POSTransactions.Add(tx);
            });

            account.CCTopUpTransactions.ForEach(x =>
            {
                CCTopUpTransaction tx = new CCTopUpTransaction()
                {
                    AccountNumberId = x.AccountNumberIdToRef,
                    Amount          = x.Amount,
                    DateTime        = x.TransactionDateTime,
                };
                accountDetails.TopUpTransactions.Add(tx);
            });

            return(accountDetails);
        }