protected async override Task <object> OnPerform()
        {
            var contract = new
            {
                saleNumber       = _cacheManager.SaleNumber,
                tillNumber       = _cacheManager.TillNumberForSale,
                registerNumber   = _cacheManager.RegisterNumber,
                transactionType  = _transactionType,
                issueStoreCredit = _issueStoreCredit
            };

            var payload  = JsonConvert.SerializeObject(contract);
            var content  = new StringContent(payload, Encoding.UTF8, ApplicationJSON);
            var response = await _restClient.CompletePayment(content);

            var data = await response.Content.ReadAsStringAsync();

            switch (response.StatusCode)
            {
            case HttpStatusCode.OK:
                var paymentComplete = new DeSerializer().MapCompletePayment(data);
                return(new Mapper().MapCompletePayment(paymentComplete));

            default:
                return(await HandleExceptions(response));
            }
        }