PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 4.0.0
Tutor LMS – eLearning and online course solution v4.0.0
4.0.1 4.0.0 3.9.15 3.9.14 3.9.13 3.9.12 3.9.11 trunk 1.0.0 1.0.0-alpha 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.2.0 1.2.1 1.2.11 1.2.12 1.2.13 1.2.20 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.15 1.9.16 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.0 2.4.0 2.5.0 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.1.0 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.8.0 3.8.1 3.8.2 3.8.3 3.9.0 3.9.1 3.9.10 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9
tutor / ecommerce / PaymentGateways / Paypal / src / PaymentHub.php
tutor / ecommerce / PaymentGateways / Paypal / src Last commit date
Config 1 year ago Contracts 1 year ago Core 11 months ago Exceptions 1 year ago Payments 8 months ago layouts 11 months ago PaymentHub.php 11 months ago
PaymentHub.php
118 lines
1 <?php
2 namespace Ollyo\PaymentHub;
3
4 use Ollyo\PaymentHub\Core\Factory;
5 use Ollyo\PaymentHub\Core\Application;
6 use Ollyo\PaymentHub\Core\Support\Uri;
7 use Ollyo\PaymentHub\Core\Support\System;
8 use Ollyo\PaymentHub\Core\Payment\BaseConfig;
9 use Ollyo\PaymentHub\Core\Payment\BasePayment;
10 use Ollyo\PaymentHub\Exceptions\InvalidConfigurationException;
11
12 define('PAYMENT_HUB_ROOT', __DIR__);
13
14 class PaymentHub
15 {
16 /**
17 * the payment class name
18 *
19 * @var object
20 */
21 protected $payment;
22
23 /**
24 * The payment config class associate with the payment
25 *
26 * @var object
27 */
28 protected $config;
29
30 public function __construct($payment, $config)
31 {
32 $this->payment = $payment;
33 $this->config = $config;
34
35 $this->boot();
36 }
37
38 /**
39 * Boot the payment client along with the config and setting the container services.
40 *
41 * @return void
42 */
43 protected function boot()
44 {
45
46 $container = Factory::getContainer();
47 $container->set(Application::class, function() {
48 $app = new Application();
49 $app->makeRepository(Application::class);
50
51 return $app;
52 });
53
54 $container->set($this->payment, function() {
55 /** @var BaseConfig */
56 $configInstance = System::createClassInstance($this->config);
57 $configInstance->createConfig();
58
59 /** @var BasePayment */
60 $paymentInstance = System::createClassInstance($this->payment);
61 $paymentInstance->setConfigInstance($configInstance);
62
63 // Set the Repository version of the ConfigContract to the payment instance
64 $paymentInstance->setConfig(
65 $configInstance->toRepository()
66 );
67
68 if (!$paymentInstance->check()) {
69 throw new InvalidConfigurationException( esc_html( sprintf('%s payment method is not configured properly! Contact with Site Administrator.', ucfirst($configInstance->getName() ) ) ) );
70 }
71
72 $paymentInstance->setup();
73
74 return $paymentInstance;
75 });
76 }
77
78
79
80 /**
81 * Make and return the payment class instance stored into the container
82 *
83 * @return BasePayment
84 */
85 public function make(): BasePayment
86 {
87 return Factory::getContainer()->get($this->payment);
88 }
89
90 /**
91 * Make the payment instance with order ID and return the instance.
92 *
93 * @return BasePayment
94 */
95 public function makeWith($orderId = null): BasePayment
96 {
97 $payment = $this->make();
98
99 if (!is_null($orderId)) {
100 $config = $payment->getConfig();
101 $configInstance = $payment->getConfigInstance();
102
103 $successUrl = Uri::getInstance($config->get('success_url'));
104 $successUrl->setVar('order_id', $orderId);
105
106 $cancelUrl = Uri::getInstance($config->get('cancel_url'));
107 $cancelUrl->setVar('order_id', $orderId);
108
109 $configInstance->updateConfig([
110 'success_url' => $successUrl->toString(),
111 'cancel_url' => $cancelUrl->toString(),
112 ]);
113 }
114
115 return $payment;
116 }
117 }
118