<?php namespace WPForms\Integrations\PayPalCommerce\PaymentMethods\RegionalMethods; use WPForms\Integrations\PayPalCommerce\Frontend\Frontend as MainFrontend; use WPForms\Integrations\PayPalCommerce\Process\Base; /** * Regional payment methods initializer. * * Registers all regional payment methods with the PayPal Commerce process. * * @since 1.10.0 */ final class RegionalMethods { /** * Initialize the regional payment methods. * * @since 1.10.0 */ public function init(): void { $this->hooks(); } /** * Registers the necessary hooks. * * @since 1.10.0 */ private function hooks(): void { add_action( 'wpforms_integrations_paypal_commerce_process_init', [ $this, 'register_process_methods' ] ); if ( is_admin() ) { return; } add_action( 'wpforms_integrations_paypal_commerce_frontend_init', [ $this, 'register_payment_method' ] ); } /** * Register all regional payment process methods. * * @since 1.10.0 * * @param mixed $process The process instance. */ public function register_process_methods( $process ): void { if ( ! ( $process instanceof Base ) ) { return; } // Register payment methods with full contact info (name, country_code, email). $process->add_process_method( new Process\Bancontact() ); $process->add_process_method( new Process\Ideal() ); $process->add_process_method( new Process\MyBank() ); $process->add_process_method( new Process\Trustly() ); // Register payment methods with basic contact info (name, country_code). $process->add_process_method( new Process\Blik() ); $process->add_process_method( new Process\Eps() ); $process->add_process_method( new Process\Multibanco() ); $process->add_process_method( new Process\P24() ); } /** * Register the Venmo payment source with the Frontend class. * * @since 1.10.0 * * @param MainFrontend $frontend The Frontend instance. * * @noinspection PhpMissingParamTypeInspection */ public function register_payment_method( $frontend ): void { if ( ! ( $frontend instanceof MainFrontend ) ) { return; } $payment_methods = [ new Frontend\Bankcontact(), new Frontend\Ideal(), new Frontend\MyBank(), new Frontend\Trustly(), new Frontend\Blik(), new Frontend\Eps(), new Frontend\Multibanco(), new Frontend\P24(), ]; foreach ( $payment_methods as $payment_method ) { $payment_method->set_currency( $frontend->get_currency() ); $frontend->add_payment_method( $payment_method ); } } }