registerGateways(); } catch (Exception $e) { Log::error('Error Registering Gateways', [ 'message' => $e->getMessage() ]); } } /** * @since 4.16.8 register TestOffsiteGateway when GIVEWP_ENABLE_TEST_OFFSITE_GATEWAY is set * @since 3.0.0 * * @throws Exception * @throws OverflowException */ private function registerGateways() { add_action('givewp_register_payment_gateway', static function (PaymentGatewayRegister $registrar) { // Not for production: it completes donations without charging anyone. The e2e suite turns it // on through .wp-env.json to walk an offsite redirect end to end. if (defined('GIVEWP_ENABLE_TEST_OFFSITE_GATEWAY') && GIVEWP_ENABLE_TEST_OFFSITE_GATEWAY) { $registrar->registerGateway(TestOffsiteGateway::class); } $registrar->registerGateway(StripePaymentElementGateway::class); $registrar->registerGateway(PayPalCommerceGateway::class); }); $this->addLegacyStripeAdapter(); $this->addStripeWebhookListeners(); $this->addStripeFormBuilderHooks(); $this->addStripeTransactionMetadata(); $this->bootOfflineDonations(); } /** * @since 4.16.7 */ private function addStripeTransactionMetadata() { Hooks::addFilter('give_stripe_prepare_metadata', AddExtraMetadataToPaymentIntent::class, '__invoke', 10, 2); } /** * @since 3.0.0 */ private function addStripeWebhookListeners() { Hooks::addAction( 'give_stripe_processing_payment_intent_succeeded', PaymentIntentSucceeded::class ); Hooks::addAction( 'give_stripe_processing_payment_intent_failed', PaymentIntentPaymentFailed::class ); Hooks::addAction( 'give_stripe_processing_charge_refunded', ChargeRefunded::class ); Hooks::addAction( 'give_recurring_stripe_processing_invoice_payment_succeeded', InvoicePaymentSucceeded::class ); Hooks::addAction( 'give_recurring_stripe_processing_invoice_payment_failed', InvoicePaymentFailed::class ); Hooks::addAction( 'give_recurring_stripe_processing_customer_subscription_created', CustomerSubscriptionCreated::class ); Hooks::addAction( 'give_recurring_stripe_processing_customer_subscription_deleted', CustomerSubscriptionDeleted::class ); Hooks::addAction( 'give_recurring_stripe_processing_customer_subscription_updated', CustomerSubscriptionUpdated::class ); Hooks::addAction( 'give_recurring_stripe_processing_customer_subscription_resumed', CustomerSubscriptionResumed::class ); } /** * @since 3.0.0 */ private function addLegacyStripeAdapter() { /** @var LegacyStripeAdapter $legacyStripeAdapter */ $legacyStripeAdapter = give(LegacyStripeAdapter::class); $legacyStripeAdapter->addDonationDetails(); $legacyStripeAdapter->loadLegacyStripeWebhooksAndFilters(); } /** * @since 3.0.0 */ private function addStripeFormBuilderHooks() { Hooks::addAction('givewp_form_builder_enqueue_scripts', EnqueueStripeFormBuilderScripts::class); Hooks::addAction('givewp_form_builder_new_form', AddStripeAttributesToNewForms::class); Hooks::addAction('givewp_form_builder_updated', UpdateStripeFormBuilderSettingsMeta::class); } private function bootOfflineDonations() { Hooks::addAction('givewp_form_builder_enqueue_scripts', EnqueueOfflineFormBuilderScripts::class); Hooks::addAction('givewp_form_builder_updated', UpdateOfflineMetaFromFormBuilder::class); Hooks::addFilter( 'givewp_donation_form_enabled_gateways', DisableGatewayWhenDisabledPerForm::class, '__invoke', 10, 2 ); } }