public PaymentResponse Purchase(string merchantReference, Money amount, PaymentCard card)
{
var data = MakePostData();
data.Add("TxType", "PAYMENT");
data.Add("VendorTxCode", merchantReference);
data.Add("Amount", amount.ToString("0.00"));
data.Add("Currency", amount.Currency.Iso3LetterCode);
data.Add("CardHolder", card.CardHolder);
data.Add("CardNumber", card.CardNumber);
data.Add("CardType", TranslateCardType(card.CardType));
data.Add("ExpiryDate", card.ExpiryDate.ToString());
data.Add("Basket", CreateBasketString(merchantReference, amount));
data.Add("Description", "DUMMY DESCRIPTION");
var postData = FormatPostData(data);
var uri = postUris[this.mode];
var httpResponse = http.Post(uri, postData);
var response = this.ParseResponse(httpResponse);
return (response);
}