I've been following this thread for some time.
This fix appears to cover all the necessary bases with the exception of the ability to change the billing address and re-try the charge. When that correction is made by Logan, I would expect to see the following:
Customer makes initial entries into payment checkout.
Payment fails.
Customer can change billing address, card number, card expiration, and/or card CVV values.
Customer can re-try payment.
A limited number of attempts are allowed, after that the order flow reverts to the standard "Problem" status and a dialog informs the user someone will contact them to resolve the issue.
Logan, some points to consider:
1. Authorize.Net has a minimum timer limit on retries - this has caught me several times. It appears to be 45-60 seconds. Retrying any sooner automatically fails regardless of the validity of the payment information. Other gateways may or may not have this limitation - PayPal doesn't seem to care at all
2. Retry attempts should be limited to a specific number, configured in the store settings or payment gateway setup screen. I would suggest 2 as the maximum based on my experience.
Most card issuers will lock down the customer charge card due to repeated failures - it's one of their many attempts at detecting fraud. This has happened to me and my customers. The general public doesn't always understand this and can be quite frustrated to learn Solunar Services got their card locked. Technically it was the customer that did it when they tried 17 times to get the info right, but the card issuer customer service
WILL tell them it was because of Solunar Services. Trust me on that one
I don't know if you knew this or not, but the Authorize.Net AVS system actually does charge the customer even if the AVS fails. First they have to test the card info itself and initiate the charge. When the charge responds as valid, then they test address info. If address info fails, they immediately reverse the charge.
Some card issuer customer service people can see these transactions, others cannot. I had one case where the customer actually had to get the card issuer customer service rep on a conference call so I could educate both of them on how it works. Both of them were convinced the charge went through and the money was transferred. I never did the capture, the initial request was just for an authorization.