/// <summary>
        /// Maps to models to bank request payload.
        /// </summary>
        /// <returns>
        /// The <see cref="GetPaymentDetailsResponse" />.
        /// </returns>
        public BankRequestPayload  Map(ProcessPaymentPayload payload, MerchantDetails merchantDetails, bool isPayout)
        {
            this.Amount     = payload.Amount;
            this.Currency   = payload.Currency;
            this.Reference  = payload.Reference;
            this.ExpiryDate = payload.ExpiryDate;

            // set recipeint and sender depending on whether money is sent or received from merchant.
            if (isPayout)
            {
                this.RecipientName       = payload.Name;
                this.RecipientCardNumber = payload.CardNumber;
                this.RecipientCvv        = payload.Cvv;
                this.SenderName          = merchantDetails.Name;
                this.SenderCardNumber    = merchantDetails.CardNumber;
                this.SenderCvv           = merchantDetails.Cvv;
            }
            else
            {
                this.RecipientName       = merchantDetails.Name;
                this.RecipientCardNumber = merchantDetails.CardNumber;
                this.RecipientCvv        = merchantDetails.Cvv;
                this.SenderName          = payload.Name;
                this.SenderCvv           = payload.Cvv;
                this.SenderCardNumber    = payload.CardNumber;
            }

            return(this);
        }
Exemplo n.º 2
0
        /// <summary>
        /// This endpoint will process the payment.
        /// </summary>
        /// <param name="payload">The payload.</param>
        /// <returns>
        /// The <see cref="Task{IActionResult}" />.
        /// </returns>
        public static IActionResult ProcessPayment(ProcessPaymentPayload payload, IBankRequest bankRequest)
        {
            try
            {
                // process payment with bank
                var merchantId         = payload.MerchantIdentifier;
                var isPayout           = payload.IsPayout;
                var merchant           = ConnectionHelper.GetMerchantById(merchantId);
                var bankRequestPayload = new BankRequestPayload().Map(payload, merchant, isPayout);
                var bankResponse       = bankRequest.ProcessPayment(bankRequestPayload);

                // save in database
                PaymentDetails paymentDetails = new PaymentDetails().Map(payload, bankResponse.PaymentId, bankResponse.Success);
                ConnectionHelper.SavePayment(paymentDetails);

                // return response
                return(new OkObjectResult(new ProcessPaymentResponse().Map(paymentDetails)));
            }
            catch (Exception ex)
            {
                return(new BadRequestObjectResult(ex.Message));
            }
        }