PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.4.1
GiveWP – Donation Plugin and Fundraising Platform v3.4.1
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 / DonationForms / Routes / DonateRoute.php
give / src / DonationForms / Routes Last commit date
AuthenticationRoute.php 2 years ago DonateRoute.php 2 years ago DonateRouteSignature.php 2 years ago ValidationRoute.php 2 years ago
DonateRoute.php
105 lines
1 <?php
2
3 namespace Give\DonationForms\Routes;
4
5
6 use Give\DonationForms\Controllers\DonateController;
7 use Give\DonationForms\DataTransferObjects\DonateFormRouteData;
8 use Give\DonationForms\DataTransferObjects\DonateRouteData;
9 use Give\DonationForms\Exceptions\DonationFormFieldErrorsException;
10 use Give\DonationForms\ValueObjects\DonationFormErrorTypes;
11 use Give\Framework\PaymentGateways\Exceptions\PaymentGatewayException;
12 use Give\Framework\PaymentGateways\Traits\HandleHttpResponses;
13 use Give\Log\Log;
14 use WP_Error;
15
16 /**
17 * @since 3.0.0
18 */
19 class DonateRoute
20 {
21 use HandleHttpResponses;
22
23 /**
24 * @var DonateController
25 */
26 private $donateController;
27
28 /**
29 * @since 3.0.0
30 *
31 * @param DonateController $donateController
32 */
33 public function __construct(DonateController $donateController)
34 {
35 $this->donateController = $donateController;
36 }
37
38 /**
39 * @since 3.0.0
40 *
41 * @return void
42 */
43 public function __invoke(array $request)
44 {
45 // create DTO from GET request
46 $routeData = DonateRouteData::fromRequest(give_clean($_GET));
47
48 // validate signature
49 $routeData->validateSignature();
50
51 // create DTO from POST request
52 $formData = DonateFormRouteData::fromRequest($request);
53
54 try {
55 $data = $formData->validated();
56 $this->donateController->donate($data, $data->getGateway());
57 } catch (DonationFormFieldErrorsException $exception) {
58 $type = DonationFormErrorTypes::VALIDATION;
59 $this->logError($type, $exception->getMessage(), $formData);
60 $this->sendJsonError($type, $exception->getError());
61 } catch (PaymentGatewayException $exception) {
62 $type = DonationFormErrorTypes::GATEWAY;
63 $this->logError($type, $exception->getMessage(), $formData);
64 $this->sendJsonError($type, new WP_Error($type, $exception->getMessage()));
65 } catch (\Exception $exception) {
66 $type = DonationFormErrorTypes::UNKNOWN;
67 $this->logError($type, $exception->getMessage(), $formData);
68 $this->sendJsonError($type, new WP_Error($type, $exception->getMessage()));
69 }
70
71 exit;
72 }
73
74 /**
75 * @since 3.0.0
76 */
77 private function logError(
78 string $type,
79 string $exceptionMessage,
80 DonateFormRouteData $formData
81 ) {
82 Log::error(
83 "Donation Route Error: $type",
84 [
85 'error_type' => $type,
86 'exceptionMessage' => $exceptionMessage,
87 'formData' => $formData->toArray(),
88 ]
89 );
90 }
91
92 /**
93 * @param string $type
94 * @param array|string|WP_Error $errors
95 * @return void
96 */
97 protected function sendJsonError(string $type, WP_Error $errors)
98 {
99 wp_send_json_error([
100 'type' => $type,
101 'errors' => $errors,
102 ]);
103 }
104 }
105