%2c = , (comma)
File: Store\Cart\Providers\GatewayProviders\PayPalProvider\PayPalPayment.ascx.cs
Lines: 166-168
payPalURL += "&amount=" + HTTPPOSTEncode(orderInfo.OrderTotal.ToString("0.00"));
payPalURL += "&shipping=" + HTTPPOSTEncode(orderInfo.ShippingCost.ToString("0.00"));
payPalURL += "&tax=" + HTTPPOSTEncode(orderInfo.Tax.ToString("0.00"));
I would try it without the encodng first. payPalURL += "&amount=" + orderInfo.OrderTotal.ToString("0.00");
They are all decimal data types but obviously machine regional settings are having an effect on the results. According to the PayPal ASP.NET example they use Single(vb) and float(c#), decimal is just a bigger number.
If you have the store source upzipped into your DNN website in \DesktopModules\Store, simply build the BuildSupport project and you should be able to try it immediately. (BuiildSupport puts the dll in the dnnroot\bin folder for you.)
Here's what happens with a C# console app...
using System;
using System.Threading;
using System.Globalization;
namespace ConsoleApplication1
{
class Program
{
static void dump(float x)
{
Console.WriteLine(x);
Console.WriteLine("{0}", x);
Console.WriteLine(x.ToString("0.00"));
}
static void Main(string[] args)
{
float x = 1.23F;
dump(x);
// Set the culture to French (France)
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");
dump(x);
// wait for keypress
Console.ReadKey();
}
}
}
Output:
1.23
1.23
1.23
1,23
1,23
1,23
Later today I'll try it in the sandbox to see if I can figure it out.