Note: I cross-posted this on the Drupal Commerce forums. I'm not sure if this is a DC core issue or a commerce_paypal issue, but posting here anyway. Here goes:
I'm having this issue with a Drupal Commerce store (http://www.rebelmagazine.com) in which if a user completes the one-page checkout (note: I've placed the shipping address, billing address, and payment on one page) but incorrectly completes a shipping or payment field, the credit card is charged even though the page returns errors to the customer. The problem that then occurs is that the customer fixes the incorrect/empty field and resubmits the form, but then receives an error saying something to the effect of "your card cannot be charged at this time."
To the customer, it's a vexing and seemingly illogical problem, since they filled everything out correctly that second time. In fact, looking at the Drupal logs, what's happening is that the payment goes through the first time, and then subsequent requests are denied on grounds that "the amount to be charged is 0". I sometimes see 8-10 requests to PayPal WPP (our processor) being denied on these grounds.
It seems that DC's checkout page should wait to fire the payment processor rule until it's checked to see whether the checkout page is returning any errors or not.
This is not only annoying for the site's customers, but it's also a security risk because it allows credit card thieves to process a card even if the address does not match (or, in fact, is not filled out at all).
I suppose I could fix this problem somewhat by placing the credit card payment on a subsequent page, after the address has been validated, but to many store owners, this is not a good solution, since e-Commerce stores experience lower conversion rates with every additional checkout page.
Comments
Comment #1
mrfelton commentedI'm seeing this exact same problem. It's a pretty serious problem, hence upgrading the priority.
Comment #2
pcambraThis may be related #1380310: Optionally require all panes on a checkout page to validate before processing them
Comment #3
andyg5000I'm closing this as duplicate #1415670: Some CIM Orders Stuck In Checkout Once that patch or something similar is applied to Commerce core the issue will be resolved. Also be aware that the credit card form HAS to be on the last checkout pane before completion (currently). Basically, the credit card is captured when the credit card is submitted. If you have a review page after your credit card is entered then the card has already been charged.