private async Task <ValidationResponse <BusinessToCustomerResponse> > RequestValidatedPaymentAsync(BusinessToCustomerRequest businessToCustomerRequest)
        {
            var response = await tokenizedApiCaller
                           .CallEndpoint <BusinessToCustomerResponse>(
                "mpesa/b2c/v1/paymentrequest",
                HttpMethod.Post,
                businessToCustomerRequest
                );

            return(validationResponseHelper.SuccessValue(response));
        }
        public async Task <ValidationResponse <BusinessToCustomerResponse> > RequestPaymentAsync(BusinessToCustomerRequest businessToCustomerRequest)
        {
            if (businessToCustomerRequest != null)
            {
                businessToCustomerRequest.SecurityCredential = await credentialEncryptor.GetEncryptedCredentialsAsync();
            }
            var validationReponse = await new BasicFormValidator <BusinessToCustomerRequest>()
                                    .ValidateAndPackAsync(businessToCustomerRequest);

            return(await validationResponseHelper.RouteResponseTypedAsync <BusinessToCustomerRequest, BusinessToCustomerResponse>(
                       validationReponse,
                       async (_) => await RequestValidatedPaymentAsync(businessToCustomerRequest)
                       ));
        }