registerPaymentGateway($container); $this->registerOrderFunctionality($container); $this->registerColumns($container); add_filter( Repository::NOTICES_FILTER, static function ($notices) use ($container): array { $notice = $container->get('wcgateway.notice.connect'); /** * @var ConnectAdminNotice $notice */ $connectMessage = $notice->connectMessage(); if ($connectMessage) { $notices[] = $connectMessage; } $authorizeOrderAction = $container->get('wcgateway.notice.authorize-order-action'); $authorizedMessage = $authorizeOrderAction->message(); if ($authorizedMessage) { $notices[] = $authorizedMessage; } return $notices; } ); } private function registerPaymentGateWay(ContainerInterface $container) { add_filter( 'woocommerce_payment_gateways', static function ($methods) use ($container): array { $methods[] = $container->get('wcgateway.gateway'); return (array)$methods; } ); add_action( 'woocommerce_settings_save_checkout', static function () use ($container) { $listener = $container->get('wcgateway.settings.listener'); $listener->listen(); } ); add_filter( 'woocommerce_form_field', static function ($field, $key, $args, $value) use ($container) { $renderer = $container->get('wcgateway.settings.render'); /** * @var SettingsRenderer $renderer */ return $renderer->renderMultiSelect($field, $key, $args, $value); }, 10, 4 ); add_filter( 'woocommerce_available_payment_gateways', static function ($methods) use ($container): array { $disabler = $container->get('wcgateway.disabler'); /** * @var DisableGateways $disabler */ return $disabler->handler((array)$methods); } ); } private function registerOrderFunctionality(ContainerInterface $container) { add_filter( 'woocommerce_order_actions', static function ($orderActions): array { $orderActions['ppcp_authorize_order'] = __( 'Capture authorized PayPal payment', 'woocommerce-paypal-gateway' ); return $orderActions; } ); add_action( 'woocommerce_order_action_ppcp_authorize_order', static function (\WC_Order $wcOrder) use ($container) { /** * @var WcGateway $gateway */ $gateway = $container->get('wcgateway.gateway'); $gateway->captureAuthorizedPayment($wcOrder); } ); } private function registerColumns(ContainerInterface $container) { add_action( 'woocommerce_order_actions_start', static function ($wcOrderId) use ($container) { /** * @var PaymentStatusOrderDetail $class */ $class = $container->get('wcgateway.admin.order-payment-status'); $class->render(intval($wcOrderId)); } ); add_filter( 'manage_edit-shop_order_columns', static function ($columns) use ($container) { /** * @var OrderTablePaymentStatusColumn $paymentStatusColumn */ $paymentStatusColumn = $container->get('wcgateway.admin.orders-payment-status-column'); return $paymentStatusColumn->register($columns); } ); add_action( 'manage_shop_order_posts_custom_column', static function ($column, $wcOrderId) use ($container) { /** * @var OrderTablePaymentStatusColumn $paymentStatusColumn */ $paymentStatusColumn = $container->get('wcgateway.admin.orders-payment-status-column'); $paymentStatusColumn->render($column, intval($wcOrderId)); }, 10, 2 ); } }