2020-04-02 08:38:00 +03:00
|
|
|
<?php
|
2020-04-13 22:30:57 +03:00
|
|
|
|
2020-04-02 08:38:00 +03:00
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
|
|
namespace Inpsyde\PayPalCommerce\WcGateway;
|
|
|
|
|
|
|
|
use Dhii\Container\ServiceProvider;
|
|
|
|
use Dhii\Modular\Module\ModuleInterface;
|
2020-04-28 11:42:23 +03:00
|
|
|
use Inpsyde\PayPalCommerce\AdminNotices\Repository\Repository;
|
2020-04-22 16:07:02 +03:00
|
|
|
use Inpsyde\PayPalCommerce\WcGateway\Admin\OrderDetail;
|
2020-04-23 11:19:09 +03:00
|
|
|
use Inpsyde\PayPalCommerce\WcGateway\Admin\OrderTablePaymentStatusColumn;
|
|
|
|
use Inpsyde\PayPalCommerce\WcGateway\Admin\PaymentStatusOrderDetail;
|
2020-04-02 08:38:00 +03:00
|
|
|
use Inpsyde\PayPalCommerce\WcGateway\Checkout\DisableGateways;
|
2020-04-13 14:25:20 +03:00
|
|
|
use Inpsyde\PayPalCommerce\WcGateway\Gateway\WcGateway;
|
2020-04-13 22:30:57 +03:00
|
|
|
use Inpsyde\PayPalCommerce\WcGateway\Notice\AuthorizeOrderActionNotice;
|
2020-04-10 12:36:42 +03:00
|
|
|
use Inpsyde\PayPalCommerce\WcGateway\Notice\ConnectAdminNotice;
|
2020-07-02 09:37:07 +03:00
|
|
|
use Inpsyde\PayPalCommerce\WcGateway\Settings\SettingsRenderer;
|
2020-04-02 08:38:00 +03:00
|
|
|
use Interop\Container\ServiceProviderInterface;
|
|
|
|
use Psr\Container\ContainerInterface;
|
|
|
|
|
|
|
|
class WcGatewayModule implements ModuleInterface
|
|
|
|
{
|
|
|
|
public function setup(): ServiceProviderInterface
|
|
|
|
{
|
|
|
|
return new ServiceProvider(
|
2020-04-13 22:30:57 +03:00
|
|
|
require __DIR__ . '/../services.php',
|
|
|
|
require __DIR__ . '/../extensions.php'
|
2020-04-02 08:38:00 +03:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2020-04-06 11:16:18 +03:00
|
|
|
public function run(ContainerInterface $container)
|
2020-04-02 08:38:00 +03:00
|
|
|
{
|
2020-07-02 12:48:40 +03:00
|
|
|
$this->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)
|
|
|
|
{
|
|
|
|
|
2020-04-02 08:38:00 +03:00
|
|
|
add_filter(
|
|
|
|
'woocommerce_payment_gateways',
|
2020-04-28 12:31:12 +03:00
|
|
|
static function ($methods) use ($container): array {
|
2020-04-06 11:16:18 +03:00
|
|
|
$methods[] = $container->get('wcgateway.gateway');
|
2020-04-13 22:30:57 +03:00
|
|
|
return (array)$methods;
|
2020-04-02 08:38:00 +03:00
|
|
|
}
|
|
|
|
);
|
|
|
|
|
2020-07-02 09:37:07 +03:00
|
|
|
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
|
|
|
|
);
|
|
|
|
|
2020-04-02 08:38:00 +03:00
|
|
|
add_filter(
|
|
|
|
'woocommerce_available_payment_gateways',
|
2020-04-28 12:31:12 +03:00
|
|
|
static function ($methods) use ($container): array {
|
2020-04-06 11:16:18 +03:00
|
|
|
$disabler = $container->get('wcgateway.disabler');
|
2020-04-02 08:38:00 +03:00
|
|
|
/**
|
|
|
|
* @var DisableGateways $disabler
|
|
|
|
*/
|
2020-04-13 22:30:57 +03:00
|
|
|
return $disabler->handler((array)$methods);
|
2020-04-02 08:38:00 +03:00
|
|
|
}
|
|
|
|
);
|
2020-07-02 12:48:40 +03:00
|
|
|
}
|
2020-04-13 12:39:34 +03:00
|
|
|
|
2020-07-02 12:48:40 +03:00
|
|
|
private function registerOrderFunctionality(ContainerInterface $container)
|
|
|
|
{
|
2020-04-13 12:39:34 +03:00
|
|
|
add_filter(
|
|
|
|
'woocommerce_order_actions',
|
2020-04-28 12:31:12 +03:00
|
|
|
static function ($orderActions): array {
|
2020-04-13 12:39:34 +03:00
|
|
|
$orderActions['ppcp_authorize_order'] = __(
|
2020-04-22 16:05:59 +03:00
|
|
|
'Capture authorized PayPal payment',
|
2020-04-13 12:39:34 +03:00
|
|
|
'woocommerce-paypal-gateway'
|
|
|
|
);
|
|
|
|
return $orderActions;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
add_action(
|
|
|
|
'woocommerce_order_action_ppcp_authorize_order',
|
2020-04-28 12:31:12 +03:00
|
|
|
static function (\WC_Order $wcOrder) use ($container) {
|
2020-04-13 12:39:34 +03:00
|
|
|
/**
|
2020-04-13 14:25:20 +03:00
|
|
|
* @var WcGateway $gateway
|
2020-04-13 12:39:34 +03:00
|
|
|
*/
|
2020-04-13 14:25:20 +03:00
|
|
|
$gateway = $container->get('wcgateway.gateway');
|
2020-04-14 19:19:29 +03:00
|
|
|
$gateway->captureAuthorizedPayment($wcOrder);
|
2020-04-13 12:39:34 +03:00
|
|
|
}
|
|
|
|
);
|
2020-07-02 12:48:40 +03:00
|
|
|
}
|
2020-04-13 22:30:57 +03:00
|
|
|
|
2020-07-02 12:48:40 +03:00
|
|
|
private function registerColumns(ContainerInterface $container)
|
|
|
|
{
|
2020-04-22 16:07:02 +03:00
|
|
|
add_action(
|
|
|
|
'woocommerce_order_actions_start',
|
2020-04-28 12:31:12 +03:00
|
|
|
static function ($wcOrderId) use ($container) {
|
2020-04-22 16:07:02 +03:00
|
|
|
/**
|
2020-04-23 11:19:09 +03:00
|
|
|
* @var PaymentStatusOrderDetail $class
|
2020-04-22 16:07:02 +03:00
|
|
|
*/
|
2020-04-23 11:19:09 +03:00
|
|
|
$class = $container->get('wcgateway.admin.order-payment-status');
|
2020-04-22 19:27:07 +03:00
|
|
|
$class->render(intval($wcOrderId));
|
2020-04-22 16:07:02 +03:00
|
|
|
}
|
|
|
|
);
|
2020-04-22 19:27:07 +03:00
|
|
|
|
|
|
|
add_filter(
|
|
|
|
'manage_edit-shop_order_columns',
|
2020-04-28 12:31:12 +03:00
|
|
|
static function ($columns) use ($container) {
|
2020-04-22 19:27:07 +03:00
|
|
|
/**
|
2020-04-23 11:19:09 +03:00
|
|
|
* @var OrderTablePaymentStatusColumn $paymentStatusColumn
|
2020-04-22 19:27:07 +03:00
|
|
|
*/
|
2020-04-23 11:19:09 +03:00
|
|
|
$paymentStatusColumn = $container->get('wcgateway.admin.orders-payment-status-column');
|
2020-04-22 19:27:07 +03:00
|
|
|
return $paymentStatusColumn->register($columns);
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
add_action(
|
|
|
|
'manage_shop_order_posts_custom_column',
|
2020-04-28 12:31:12 +03:00
|
|
|
static function ($column, $wcOrderId) use ($container) {
|
2020-04-22 19:27:07 +03:00
|
|
|
/**
|
2020-04-23 11:19:09 +03:00
|
|
|
* @var OrderTablePaymentStatusColumn $paymentStatusColumn
|
2020-04-22 19:27:07 +03:00
|
|
|
*/
|
2020-04-23 11:19:09 +03:00
|
|
|
$paymentStatusColumn = $container->get('wcgateway.admin.orders-payment-status-column');
|
2020-04-22 19:27:07 +03:00
|
|
|
$paymentStatusColumn->render($column, intval($wcOrderId));
|
|
|
|
},
|
|
|
|
10,
|
|
|
|
2
|
|
|
|
);
|
2020-04-02 08:38:00 +03:00
|
|
|
}
|
2020-04-06 11:16:18 +03:00
|
|
|
}
|