private async Task <string> FetchTokenFromThirdPartyAsync()
        {
            var encryptedCredentials = await credentialEncryptor.GetEncryptedCredentialsAsync();

            var tokenResponse = await httpCaller.CallEndpoint <TokenResponse> (
                HttpClientTypes.TokenFetcher,
                relativePath : "oauth/v1/generate?grant_type=client_credentials",
                HttpMethod.Get,
                payload : default,
        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)
                       ));
        }