woocommerce-paypal-payments/modules/ppcp-subscription/src/class-subscriptionmodule.php

86 lines
1.9 KiB
PHP
Raw Normal View History

2020-07-28 12:27:42 +03:00
<?php
/**
* The subscription module.
*
2020-09-11 14:11:10 +03:00
* @package WooCommerce\PayPalCommerce\Subscription
*/
2020-07-28 12:27:42 +03:00
declare(strict_types=1);
2020-09-11 14:11:10 +03:00
namespace WooCommerce\PayPalCommerce\Subscription;
2020-07-28 12:27:42 +03:00
use Dhii\Container\ServiceProvider;
use Dhii\Modular\Module\ModuleInterface;
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\PaymentTokenEndpoint;
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
2020-09-11 14:11:10 +03:00
use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
2020-07-28 12:27:42 +03:00
use Interop\Container\ServiceProviderInterface;
use Psr\Container\ContainerInterface;
/**
* Class SubscriptionModule
*/
2020-08-27 11:08:36 +03:00
class SubscriptionModule implements ModuleInterface {
2020-07-28 12:27:42 +03:00
/**
* Setup the module.
*
* @return ServiceProviderInterface
*/
2020-08-27 11:08:36 +03:00
public function setup(): ServiceProviderInterface {
return new ServiceProvider(
require __DIR__ . '/../services.php',
require __DIR__ . '/../extensions.php'
);
}
/**
* Runs the module.
*
2020-09-16 10:18:45 +03:00
* @param ContainerInterface|null $container The container.
2020-08-27 11:08:36 +03:00
*/
2020-09-16 10:18:45 +03:00
public function run( ContainerInterface $container = null ) {
2020-08-27 11:08:36 +03:00
add_action(
'woocommerce_scheduled_subscription_payment_' . PayPalGateway::ID,
function ( $amount, $order ) use ( $container ) {
$this->renew( $order, $container );
2020-08-27 11:08:36 +03:00
},
10,
2
);
add_action(
'woocommerce_scheduled_subscription_payment_' . CreditCardGateway::ID,
function ( $amount, $order ) use ( $container ) {
$this->renew( $order, $container );
},
10,
2
);
}
/**
* @param $order
* @param ContainerInterface|null $container
* @return void
*/
protected function renew( $order, ?ContainerInterface $container ) {
if ( ! is_a( $order, \WC_Order::class ) ) {
return;
}
/** @var RenewalHandler $handler */
$handler = $container->get( 'subscription.renewal-handler' );
$handler->renew( $order );
2020-08-27 11:08:36 +03:00
}
2020-09-16 10:18:45 +03:00
/**
* Returns the key for the module.
*
* @return string|void
*/
public function getKey() {
}
2020-07-28 12:27:42 +03:00
}