PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.18.0
GiveWP – Donation Plugin and Fundraising Platform v2.18.0
4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Framework / PaymentGateways / Routes / GatewayRoute.php
give / src / Framework / PaymentGateways / Routes Last commit date
GatewayRoute.php 4 years ago
GatewayRoute.php
90 lines
1 <?php
2
3 namespace Give\Framework\PaymentGateways\Routes;
4
5 use Give\Framework\PaymentGateways\Contracts\OffsiteGatewayInterface;
6 use Give\Framework\PaymentGateways\DataTransferObjects\GatewayRouteData;
7 use Give\Framework\PaymentGateways\Exceptions\PaymentGatewayException;
8 use Give\Framework\PaymentGateways\PaymentGateway;
9 use Give\Framework\PaymentGateways\PaymentGatewayRegister;
10
11 /**
12 * @since 2.18.0
13 */
14 class GatewayRoute
15 {
16 /**
17 * @since 2.18.0
18 *
19 * @return void
20 * @throws PaymentGatewayException
21 */
22 public function __invoke()
23 {
24 if ($this->isValidListener()) {
25 /** @var PaymentGatewayRegister $paymentGatewaysRegister */
26 $paymentGatewaysRegister = give(PaymentGatewayRegister::class);
27 $paymentGateways = $paymentGatewaysRegister->getPaymentGateways();
28 $gatewayIds = array_keys($paymentGateways);
29
30 if (!$this->isValidRequest($gatewayIds)) {
31 throw new PaymentGatewayException('This route is not valid.');
32 }
33
34 $data = GatewayRouteData::fromRequest($_GET);
35
36 /** @var PaymentGateway $gateway */
37 $gateway = give($paymentGateways[$data->gatewayId]);
38
39 $allowedGatewayMethods = $gateway->routeMethods;
40
41 if (is_a($gateway, OffsiteGatewayInterface::class)) {
42 $allowedGatewayMethods = array_merge(
43 $allowedGatewayMethods,
44 OffsiteGatewayInterface::defaultRouteMethods
45 );
46 }
47
48 if (
49 !in_array($data->gatewayMethod, $allowedGatewayMethods, true) ||
50 !method_exists($gateway, $data->gatewayMethod)
51 ) {
52 throw new PaymentGatewayException('The gateway method does not exist.');
53 }
54
55 $gateway->handleGatewayRouteMethod($data->donationId, $data->gatewayMethod);
56 }
57 }
58
59 /**
60 * Check if the request is valid
61 *
62 * @since 2.18.0
63 *
64 * @param array $gatewayIds
65 *
66 * @return bool
67 * @example ?give-listener=give-gateway&give-gateway-id=test-gateway&give-donation-id=1&give-gateway-method=returnFromOffsiteRedirect
68 *
69 */
70 private function isValidRequest($gatewayIds)
71 {
72 $isset = isset($_GET['give-gateway-id'], $_GET['give-gateway-method'], $_GET['give-donation-id']);
73 $idValid = in_array($_GET['give-gateway-id'], $gatewayIds, true);
74
75 return $isset && $idValid;
76 }
77
78 /**
79 * Check if the listener is valid
80 *
81 * @since 2.18.0
82 *
83 * @return bool
84 */
85 private function isValidListener()
86 {
87 return isset($_GET['give-listener']) && $_GET['give-listener'] === 'give-gateway';
88 }
89 }
90