- **Drupal 12 compatibility.** `core_version_requirement` on the module and all three submodules, and the Composer `drupal/core` and `drupal/core-dev` constraints, now accept `^12` alongside the existing `^10.3 || ^11`.
Hardening for the standalone payment form, two payer-facing message fixes, and a friendlier settings page. Backward compatible: nothing marked @api changed.
Maintenance release — no functional or public API changes.
Fixed:
- Serialization safety: injected services on the settings form, transaction list builder and reconciliation queue worker are now protected and no longer readonly, matching the DependencySerializationTrait contract on PHP 8.3.
- Documented that TapPaymentInterface::verifyPayment() can throw ConfigurationException, matching its real behaviour.
Tap Payments hosted-checkout gateway built on a reusable payment-gateway plugin API that any Drupal module can drive — no dependency on Drupal Commerce. Signed, webhook-authoritative confirmation; a transaction ledger with an idempotency key; and no card data stored on the site. Optional integration submodules for Drupal Commerce, Webform, and custom flows.
Requires Drupal 10.3+ or Drupal 11 and PHP 8.3+. A Tap Payments account and API keys are needed to process payments.