Hi,
This is what I did eventually...I added the following code at the top of the PostProcessPayment() method in the PayPalStandardPaymentProcessor.cs file:
decimal OrderTotal = order.OrderTotal;
Currency StoreCurr = CurrencyManager.PrimaryStoreCurrency;
if (StoreCurr.CurrencyCode.ToUpper() != "GBP") {
// Convert Order Total to GBP
Currency gbp = CurrencyManager.GetCurrencyByCode("GBP");
if (gbp == null) {
throw new NopException("Could not find 'GBP' currency needed for the PayPal payment gateway.");
}
OrderTotal = CurrencyManager.ConvertCurrency(OrderTotal, StoreCurr, gbp);
StoreCurr = gbp;
}
I then changed the following lines:
builder.AppendFormat("&amount={0}", order.OrderTotal.ToString("N", new CultureInfo("en-us")));
builder.Append(string.Format("&no_note=1¤cy_code={0}", HttpUtility.UrlEncode(CurrencyManager.PrimaryStoreCurrency.CurrencyCode)));
to:
builder.AppendFormat("&amount={0}", OrderTotal.ToString("N", new CultureInfo("en-gb")));
builder.AppendFormat("&no_note=1¤cy_code={0}", HttpUtility.UrlEncode(StoreCurr.CurrencyCode));
This works perfectly seeing as my Store Currency is not GBP but the PayPal account is. Of course, you'll need to change GBP to whatever currency you need to pass to PayPal.
Hope this helps.