-
-
Notifications
You must be signed in to change notification settings - Fork 825
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Move event payment to the confirmation page #24781
Conversation
(Standard links)
|
72b9d59
to
269d1f3
Compare
+1 for this concept [= |
@mattwire I have a client who is dealing with this right now who might be willing to kick in. What is your estimate for number of hours required and a delivery date if you get funding? |
@guyiac I have no idea if this might throw up problems elsewhere (ie. with other payment workflows) but this patch seems to work now for multiple participant registrations. So I'd suggest if you have a client that wants to test then you do that and let me know if there are any issues. To get this into core we need to verify that it doesn't break anything else and look at if we need to add/change any tests. Also need to see if it will work with multiple payment processor selection. |
I saw the post on the Sprint channel (I attended). I could sponsor a part of the development. |
Thanks for doing this! I gave it a test run with IATS: The billing fields are not shown, but you get a bunch of validation errors saying that each of them is required. I also gave it a test with IATS & Pay Later: Payment method selection not show, but you get a validation error saying to please select a payment method. |
Thanks for looking into this @mattwire - Obviously this is quite a big issue for quite a few folk. My understanding is that the "Confirmation" screen for front end event registration is optional in CiviCRM currently. Would this change mean that paid registrations would now always require the Confirmation screen as the last step of the registration process? |
Hi @marcusjwilson the confirmation page is always required for event pages. It is only for contribution pages that it can be disabled (unless you use an extension). |
I have activated the "skip event confirm page" https://github.com/pradpnayak/skipeventconfirmpage/blob/master/README.md |
@mattwire - Thinking around this. Could this also help prevent Stripe card testing attacks, because the Stripe element will not be on the first page? So could it be rolled out to contribution pages somehow? |
@mattwire We've been testing your patch locally with two participants registered with different amounts per registration. It seems to work well - the Stripe processor output appears on the Confirmation screen as expected, with 3D authentication where relevant. Payment works and registrations are recorded to CiviCRM. The only usage issue we saw in our testing is that you still see the payment form on the first screen after you select multiple participants. You actually are not required to fill in the details but, if you do, that is of course useless because you are asked again on the last screen. So maybe a check can be added on the first screen to hide credit card input when we have multiple registrants? Thanks |
I feel Stripe should use a transparent page concept to take only payment details like how Omnipay extension does. Main >> Confirm >> Payment >> [Payment Gateway] >> Thank You. The payment page will have only the credit card details field when submit either it redirects to the Payment gateway or process the params on the server side and redirects to Thank you page. I understand once the user hits confirm page all the necessary entries are created in the database. So using the above method will end up creating payments in Civi before taking card details. Alternatively, we can open a dialog box to enter card details when the user hits confirm the page and before the form is submitted. Either the payment page should be implemented in Civi or in Stripe extension. We have lots of clients with the Confirmation page disabled for Multi-participant because lots of users go to the confirmation page and do not submit the form thinking their registration is confirmed. So probably adding the card details on the Confirmation page will cause a similar issue for us. |
@pradpnayak - We had a similar probably with users forgetting to click to confirm on the final Confirmation screen - but we think it was because they had already entered their payment details on Step 1 of the event registration process. If the payment is not taken until this last screen, then I think the issue of abandoning the registration on the Confirmation should be resolved? Or maybe you could only turn off the Confirmation page conditionally for Free events, where payment is not necesssary |
33a7642
to
1836a7d
Compare
e9ef826
to
bb4da34
Compare
This has now been updated to support multiple payment processors and can be enabled/disabled via an experimental setting on the Administer->CiviEvent->Event component settings. |
bb4da34
to
31e404d
Compare
31e404d
to
5184977
Compare
Tested with live payments (Stripe) and works well including with 3d Secure. My only comment would be that the card details section on the confirm page might be better at the top of the page. With a few participant signups and questions its takes a lot of scrolling down the thank you page to get to the card payment section. |
Test this please |
Tested on CiviCRM 5.60.0 and this now allows us to enable multi-participant registration with Stripe. Hoping this PR is merged soon! 🎉 |
After applying this patch on CiviCRM v5.60.0, the issue with multiple registrations is resolved. However, using CiviDiscount with this patch causes BillingBlock.tpl to throw an error. I managed to fix this issue by adding an additional check to the if blocks causing the issues (PR #26064 ).
|
Update BillingBlock.tpl - Error with CiviDiscount + Patch Issue #24781
It looks to be working for me - once I'd enabled it in the CiviEvent Component settings. Comments: the card details block is right at the bottom of the Confirm page, which does not provide by default any information or hint that this is the page where you need to enter card details - so some thinking about user guidance will be welcome to improve the UX, and it is under a heading that by default is labelled "Billing Name and Address" which is misleading, but apart from that it makes a lot more sense to have things working this way. Looking forward to seeing this in a release very soon. Thanks. |
A further comment: At the top of this thread it states that "This provides a working proof of concept (for the multiple event participant workflow) which puts the payment processor onto the "Confirm" page if multiple participants were selected." In my case at least it is putting the payment processor onto the Confirm page regardless of whether I select multiple participants. |
5184977
to
8b429ff
Compare
We have had some issues with this patch on a Production site today. With the settings enabled to move the Stripe payment to the Confirmation screen, users aren't able to progress past step 1 of the Civi booking process for the event (keep getting redirected to step 1). We have this running on Civi v5.58.1 and Stripe v6.7.14, Payments Shared v1.2.11 Would it help to update anything further at this stage? I can send you steps to recreate if that's useful. Ta! |
Payment details moved to the top of the form and PR description updated per feedback |
8b429ff
to
eaeb1fe
Compare
eaeb1fe
to
7d3506d
Compare
@mattwire Are there any comments above not addressed, or do we think this is good to merge? |
@aydun It's in use on a few production sites and I think I've addressed all comments. So in my opinion good to merge |
Test this please |
I have this working successfully on a production site running 5.56.0. Keen to see it merged and released. |
Test failures look unrelated Test this please |
Ok, we've got multiple good reports of this in production and the new behaviour requires an opt-in per event. Let's merge ... |
Thanks for all the effort on this @mattwire and others - this is one of the 'features' of Civi that is intuitively wrong: no-one wants to put their card details in before knowing the total amount. Hopefully we can change this to the default behaviour before too long. |
👍🏻 |
This is great!
|
Overview
For multiple event registration workflow payment details must be entered before you add the additional participants and before you know the total amount.
This is a very confusing workflow and causes big problems for payment processors such as Stripe which need to authorize the payment and present card security measures (eg. SCA / 3d secure).
It has also been reported by many as a source of confusion because it's not "normal" to put your card details in before completing all details.
This provides the option to move the payment processor onto the "Confirm" page for events.
Before
Payment details must be entered on first page before you add additional participants. Amount is not known.
After
Payment details are entered on the confirmation page when you can see all participants / fee selections and the final/total amount.
Technical Details
Comments
Updated to put payment details section at the top of confirmation page.