I’m having this same issue. My guess is that it has to do with the validation of the information. I still need to test this, but my theory is that the wp-stripe.js file, line 60 is breaking when it encounters a comma in the field. That line is converting the amount to charge into cents.
A quick test in the JS console shows that:
1,000 * 100 = 0
but that:
1000 * 100 = 100000
Again, I still need to test this out, but I sure hope it’s as simple as that.
Ok, my initial theory was only slightly wrong. I thought it was a JS validation issue, when it was really an issue with PHP validation. Yeesh! Follow instructions below to fix the issue.
In your wp-stripe plugin folder open the stripe-functions.php file in the ‘includes’ folder. Go down to lines 118-121 or so, you’ll see something like this:
$public = $_POST['wp_stripe_public'];
$name = $_POST['wp_stripe_name'];
$email = $_POST['wp_stripe_email'];
$amount = str_replace('$', '', $_POST['wp_stripe_amount']) * 100;
$card = $_POST['stripeToken'];
Change that block to:
$public = $_POST['wp_stripe_public'];
$name = $_POST['wp_stripe_name'];
$email = $_POST['wp_stripe_email'];
$amount = str_replace(',', '', $_POST['wp_stripe_amount']);
$amount = str_replace('$', '', $amount) * 100;
$card = $_POST['stripeToken'];
Basically, all we’re doing is stripping out commas from the string before we strip out the dollar signs and convert the dollar amount to cents (that’s how Stripe likes it’s amounts).
To me this is a serious bug!
My client just typed in 1,925 in a live environment and got charged $1.00
The above code from erikfrick fixes the problem. This should be merged into the latest version.