Cancelled payments and missing contact records
Hi. I'm having big problems with Stripe payment processor in relation to people booking onto CiviCRM events. People have been turning up to events thinking themselves to be fully booked, without there being any record of them whatsoever in CiviCRM.
I upgraded to latest version of the Stripe payment processor on Apr 5th and enabled the “CiviCRM: access AJAX API” permission.
Since then there are 10 out of a total of 30 attempted payments that have a cancelled status on Stripe.com.
9 out of 10 of the cancelled payments (on Stripe) do not have a payment description, or a customer. For some reason though just one of the cancelled payments has, and shows the name of the event in the description, and the name and email address of the customer. (The creation time of this contact in Civi is 3 minutes after the creation of the payment in Stripe which is interesting.)
A typical timeline and activity log for a cancelled payment looks like this:
Timeline
Payment cancelled 21 Apr 2022, 13:32
3D Secure authentication succeeded This transaction has been authenticated with 3D Secure 2. The customer was authenticated via a challenge flow, and shown a challenge window from their bank. 21 Apr 2022, 12:29
Payment started 21 Apr 2022, 12:29
Payment activity log
A payment pi_.. for £x was cancelled 21/04/2022, 13:32:03
PaymentIntent status: canceled
200 OK A request to cancel a PaymentIntent completed 21/04/2022, 13:32:03
PaymentIntent status: requires_payment_method
An attempt to fulfil the payment pi_.. for £x failed 21/04/2022, 13:30:46
The payment pi_.. for £x requires you to take action in order to complete the payment 21/04/2022, 12:29:03
A new payment pi_.. for £x was created 21/04/2022, 12:29:02
PaymentIntent status: requires_action
200 OK A request to create a PaymentIntent completed
...
When I look in CiviCRM, there is no corresponding event registration (participant), or contact record for any of the failed payments. This is really bad because the event organisers have no idea that these people have booked, let alone that the payment has failed.
I would like to know if what I am describing normal behaviour for Civi / Stripe, i.e. for cancelled payments to not have a customer / description in Stripe.com, and also for there to be no contact record, or participant in Civi for the failed attempts?
My priority at the moment is for Civi to record a participant in these instances, so that even if the payment is cancelled the client can see that the event registration was made, and chase up with the participant to get payment and complete the registration through another means.
I’m trying to work out if the problem is with Stripe, or with this extension, or some other code on the site which is interfering with it, or possibly a web server hosting environmental issue.
There are no records in the Civi logs that match the times that the cancelled payments are created.
The most probable thing at the moment seems that something is going wrong at checkout, which is causing the contact record not to be created, which is causing the event participant not to be created, and the payment is getting cancelled because Civi is not passing on sufficient info about the customer. The Activity Log above though shows that 3D Secure Auth is succeeding and the payment is not getting cancelled until about an hour later, and I do not have enough knowledge of these things to know whether this is consistent with my theory or not.
Any help on this issue would be greatly appreciated. Thanks.