Missing paymentIntentID when using backend form to create recurring contributions
Adding recurring contributions through the backend form results in "Unable to complete payment! Missing paymentIntentID" like in issue #233 (closed).
If I understand correctly though, that issue affected payment pages. This only affects the backend form, and only for recurring payments. I've only tested it in test mode, by opening the page in a new tab and replacing "mode=live" with "mode=test" in the URL.
- CiviCRM version: 5.33.5
- CMS: Drupal 7.80
- civicrm-Stripe version: 6.6
- firewall version: 1.1.3
- mjwshared version: 1.0
- SweetAlert version: 1.4.1
Adding recurring payments through a payment page works on our test and production sites (in test mode), just not through the backend page.
In the javascript console on the affected backend page, I see a few warnings when selecting Stripe as the payment processor, but they seem unlikely to cause this issue:
- [Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/
- Elements requires "width=device-width" be set in your page's viewport meta tag. For more information: https://stripe.com/docs/js/appendix/viewport_meta_requirements
- The fontSize style you specified (1.1em) is not in px. We do not recommend using relative css units, as they will be calculated relative to our iframe's styles rather than your site's.
I noted this entry in the change log for release 6.3: "For forms that have multiple submit buttons (eg. Save, Save and New) override the submit handler on all of them (This fixes some more instances of missing PaymentIntentID on the backend forms)."
I found what I believe is the relevant commit (110c9b) and the equivalent code seems to be working still, though it has changed a bit since that commit. The disabling of the "Save" and "Save and New" buttons works as expected when I press "Save".