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