Multiple Participant Event Registration Issue
- We can successfully submit a multi-participant event registration with custom data in the profiles with the dummy processor.
- We cannot do so either with core Paypal Website Payments Pro or Stripe.
- Removing any custom fields from the profiles allowed us to successfully submit a payment for the event with Stripe.
- We can confirm the registration was charged correctly.
- Something with payment processing (core Paypal Website Payments Pro and Stripe extension) is not working properly when custom fields have been added to the CiviEvent registration form.
- This happens both in WordPress and Drupal 7. In WordPress, this occurs whether the registration form is accessed directly or embedded in a page via shortcode.
Details (site 1):
WordPress 6.2.1
CiviCRM ESR 5.57.4
Stripe Extension: 6.7.14 https://lab.civicrm.org/extensions/stripe
Firewall Extension: 1.5.7 https://lab.civicrm.org/extensions/firewall
Paypal Website Payments Pro (core integration)
PHP 8.0
Details (site 2):
Drupal 7.98
CiviCRM ESR 5.57.4
Paypal Website Payments Pro (core integration)
PHP 8.0
To replicate:
- Add a custom field group to the event registration form.
- Go to /civicrm/event/register/?reset=1&action=preview&id=[event_id] and test with multiple participants (2 or more), dummy card # appropriate for the payment processor, any CVV, any date in future
- Critical error after submitting at the end.
WordPress error from log:
[debug] $backTrace = #0 /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Core/Error.php(441): CRM_Core_Error::backtrace("backTrace", TRUE) #1 (closed) /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(39): CRM_Core_Error::handleUnhandledException(Object(CRM_Core_Exception)) #2 (closed) /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm.php(1199): CRM_Core_Invoke::invoke((Array:3)) #3 (closed) /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/includes/civicrm.basepage.php(380): CiviCRM_For_WordPress->invoke() #4 /home/XXXXXXXXXXX/www/www/wp-includes/class-wp-hook.php(308): CiviCRM_For_WordPress_Basepage->basepage_handler(Object(WP)) #5 /home/XXXXXXXXXXX/www/www/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters(NULL, (Array:1)) #6 (closed) /home/XXXXXXXXXXX/www/www/wp-includes/plugin.php(565): WP_Hook->do_action((Array:1)) #7 (closed) /home/XXXXXXXXXXX/www/www/wp-includes/class-wp.php(797): do_action_ref_array("wp", (Array:1)) #8 (closed) /home/XXXXXXXXXXX/www/www/wp-includes/functions.php(1334): WP->main("") #9 (closed) /home/XXXXXXXXXXX/www/www/wp-blog-header.php(16): wp() #10 (closed) /home/XXXXXXXXXXX/www/www/index.php(17): require("/home/XXXXXXXXXXX/www/www/wp-blog-header.php") #11 (closed) {main}
Could this be an issue with PHP 8?
After reviewing the error log, we see:
Warning: Array to string conversion in /wp-content/plugins/civicrm/civicrm/CRM/Contact/BAO/Query.php on line 655
Fatal error: Uncaught TypeError: preg_match(): Argument #2 (closed) ($subject) must be of type string, array given in /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Core/BAO/CustomField.php:692 Stack trace: #0 /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Core/BAO/CustomField.php(692): preg_match('/^custom_(\d+)_...', Array, Array) #1 (closed) /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Contact/BAO/Query.php(655): CRM_Core_BAO_CustomField::getKeyID(Array) #2 (closed) /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Contact/BAO/Query.php(559): CRM_Contact_BAO_Query->buildParamsLookup() #3 (closed) /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Contact/BAO/Query.php(524): CRM_Contact_BAO_Query->initialize(NULL) #4 /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Event/BAO/Event.php(1696): CRM_Contact_BAO_Query->__construct(Array, Array, Array) #5 /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Event/Form/Registration/Confirm.php(1178): CRM_Event_BAO_Event::displayProfile(Array, '263', Array, Array, Array) #6 (closed) /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Event/Form/Registration/Confirm.php(273): CRM_Event_Form_Registration_Confirm::assignProfiles(Object(CRM_Event_Form_Registration_Confirm)) #7 (closed) /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Core/Form.php(689): CRM_Event_Form_Registration_Confirm->buildQuickForm() #8 (closed) /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Core/StateMachine.php(120): CRM_Core_Form->buildForm() #9 (closed) /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Core/QuickForm/Action/Next.php(43): CRM_Core_StateMachine->perform(Object(CRM_Event_Form_Registration_Confirm), 'next', 'Next') #10 (closed) /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Next->perform(Object(CRM_Event_Form_Registration_Confirm), 'next') #11 (closed) /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Event_Form_Registration_Confirm), 'next') #12 (closed) /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Core/Controller.php(355): HTML_QuickForm_Page->handle('next') #13 /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(319): CRM_Core_Controller->run(Array, NULL) #14 (closed) /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(69): CRM_Core_Invoke::runItem(Array) #15 (closed) /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(36): CRM_Core_Invoke::_invoke(Array) #16 (closed) /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm.php(1199): CRM_Core_Invoke::invoke(Array) #17 (closed) /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/includes/civicrm.basepage.php(380): CiviCRM_For_WordPress->invoke() #18 (closed) /home/XXXXXXXXXXX/www/www/wp-includes/class-wp-hook.php(308): CiviCRM_For_WordPress_Basepage->basepage_handler(Object(WP)) #19 (closed) /home/XXXXXXXXXXX/www/www/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters(NULL, Array) #20 (closed) /home/XXXXXXXXXXX/www/www/wp-includes/plugin.php(565): WP_Hook->do_action(Array) #21 (closed) /home/XXXXXXXXXXX/www/www/wp-includes/class-wp.php(797): do_action_ref_array('wp', Array) #22 (closed) /home/XXXXXXXXXXX/www/www/wp-includes/functions.php(1334): WP->main('') #23 (closed) /home/XXXXXXXXXXX/www/www/wp-blog-header.php(16): wp() #24 /home/XXXXXXXXXXX/www/www/index.php(17): require('/home/harrisbur...') #25 (closed) {main} thrown in /home/XXXXXXXXXXX/www/www/wp-content/plugins/civicrm/civicrm/CRM/Core/BAO/CustomField.php on line 692
There has been a critical error on this website.