woocommerce-paypal-payments/modules.local/ppcp-button/services.php

51 lines
2.3 KiB
PHP
Raw Normal View History

2020-04-02 08:38:00 +03:00
<?php
declare(strict_types=1);
namespace Inpsyde\PayPalCommerce\Button;
use Inpsyde\PayPalCommerce\Button\Assets\SmartButton;
use Dhii\Data\Container\ContainerInterface;
use Inpsyde\PayPalCommerce\Button\Endpoint\ApproveOrderEndpoint;
2020-04-02 08:38:00 +03:00
use Inpsyde\PayPalCommerce\Button\Endpoint\ChangeCartEndpoint;
use Inpsyde\PayPalCommerce\Button\Endpoint\CreateOrderEndpoint;
use Inpsyde\PayPalCommerce\Button\Endpoint\RequestData;
use Inpsyde\PayPalCommerce\Button\Exception\RuntimeException;
return [
2020-04-06 11:16:18 +03:00
'button.smart-button' => function (ContainerInterface $container) : SmartButton {
2020-04-02 08:38:00 +03:00
$isSandbox = true;
return new SmartButton($container->get('button.url'), $isSandbox);
},
2020-04-06 11:16:18 +03:00
'button.url' => function (ContainerInterface $container) : string {
return plugins_url(
'/modules/ppcp-button/',
dirname(__FILE__, 3) . '/woocommerce-paypal-commerce-gateway.php'
);
2020-04-02 08:38:00 +03:00
},
2020-04-06 11:16:18 +03:00
'button.request-data' => function (ContainerInterface $container) : RequestData {
2020-04-02 08:38:00 +03:00
return new RequestData();
},
2020-04-06 11:16:18 +03:00
'button.endpoint.change-cart' => function (ContainerInterface $container) : ChangeCartEndpoint {
2020-04-02 08:38:00 +03:00
if (! \WC()->cart) {
throw new RuntimeException('cant initialize endpoint at this moment');
}
$cart = WC()->cart;
$shipping = WC()->shipping();
$requestData = $container->get('button.request-data');
$repository = $container->get('api.cart-repository');
return new ChangeCartEndpoint($cart, $shipping, $requestData, $repository);
},
2020-04-06 11:16:18 +03:00
'button.endpoint.create-order' => function (ContainerInterface $container) : CreateOrderEndpoint {
2020-04-02 08:38:00 +03:00
$requestData = $container->get('button.request-data');
$repository = $container->get('api.cart-repository');
$apiClient = $container->get('api.endpoint.order');
return new CreateOrderEndpoint($requestData, $repository, $apiClient);
2020-04-06 11:16:18 +03:00
},
'button.endpoint.approve-order' => function (ContainerInterface $container) : ApproveOrderEndpoint {
$requestData = $container->get('button.request-data');
$apiClient = $container->get('api.endpoint.order');
$sessionHandler = $container->get('session.handler');
return new ApproveOrderEndpoint($requestData, $apiClient, $sessionHandler);
},
2020-04-02 08:38:00 +03:00
];