public Charge Charge(CreditCard card, string reference, string currency, decimal amount)
        {
            var endpointParams = new Dictionary<string, string>();
            endpointParams.Add("currency", currency);
            endpointParams.Add("amount", amount.ToString());
            endpointParams.Add("reference", reference);
            endpointParams.Add("card[name]", card.CardName);
            endpointParams.Add("card[number]", card.Number);
            endpointParams.Add("card[expiry_month]", card.ExpiryMonth.ToString());
            endpointParams.Add("card[expiry_year]", card.ExpiryYear.ToString());
            endpointParams.Add("card[cvv]", card.CVV);

            var response = client.Post(chargeEndpoint, endpointParams);
            var message = response.ConvertResponseTo<ApiMessage>();

            if (message.HasError)
            {
                throw new PaychoiceException(message.Error);
            }

            return message.Charge;
        }
        public StoredCreditCard Store(CreditCard card)
        {
            var endpointParams = new Dictionary<string, string>();
            endpointParams.Add("card[name]", card.CardName);
            endpointParams.Add("card[number]", card.Number);
            endpointParams.Add("card[expiry_month]", card.ExpiryMonth.ToString());
            endpointParams.Add("card[expiry_year]", card.ExpiryYear.ToString());
            endpointParams.Add("card[cvv]", card.CVV);

            var response = client.Post(tokenEndpoint, endpointParams);
            var message = response.ConvertResponseTo<ApiMessage>();

            if (message.HasError)
            {
                throw new PaychoiceException(message.Error);
            }

            return message.Card;
        }