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