PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.16.9
GiveWP – Donation Plugin and Fundraising Platform v4.16.9
4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 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 All 255 releases
← All changes | src/Framework/PaymentGateways/DataTransferObjects/GatewayRouteData.php +29 -13 4.16.54.16.9 View file →
@@ -32,12 +32,37 @@
32 32 /**
33 33 * @var string|null
34 34 */
35 35 public $routeSignatureExpiration;
36 + /**
37 + * Keys of the query args the signature covers.
38 + *
39 + * @since 4.16.8
40 + * @var string[]
41 + */
42 + public $routeSignatureArgKeys = [];
36 43
37 44 /**
45 + * Query args the route framework itself sets. A gateway arg with one of these names would be
46 + * overwritten on the URL and excluded from queryParams on the way back, so a signature covering
47 + * it could never validate.
48 + *
49 + * @since 4.16.8
50 + */
51 + const ROUTE_PARAMS = [
52 + 'give-listener',
53 + 'give-gateway-id',
54 + 'give-gateway-method',
55 + 'give-route-signature',
56 + 'give-route-signature-id',
57 + 'give-route-signature-expiration',
58 + 'give-route-signature-args',
59 + ];
60 +
61 + /**
38 62 * Convert data from request into DTO
39 63 *
64 + * @since 4.16.8 add routeSignatureArgKeys
40 65 * @since 2.19.5 add routeSignatureExpiration
41 66 * @since 2.19.4 add give-route-signature-id
42 67 * @since 2.18.0
43 68 *
@@ -51,22 +76,13 @@
51 76 $self->gatewayMethod = $request['give-gateway-method'];
52 77 $self->routeSignature = isset($request['give-route-signature']) ? $request['give-route-signature'] : null;
53 78 $self->routeSignatureId = isset($request['give-route-signature-id']) ? $request['give-route-signature-id'] : null;
54 79 $self->routeSignatureExpiration = isset($request['give-route-signature-expiration']) ? $request['give-route-signature-expiration'] : null;
80 + $self->routeSignatureArgKeys = empty($request['give-route-signature-args'])
81 + ? []
82 + : explode(',', $request['give-route-signature-args']);
55 83
56 - $self->queryParams = array_filter($request, static function ($param) {
57 - return ! in_array(
58 - $param,
59 - [
60 - 'give-listener',
61 - 'give-gateway-id',
62 - 'give-gateway-method',
63 - 'give-route-signature',
64 - 'give-route-signature-id',
65 - 'give-route-signature-expiration',
66 - ]
67 - );
68 - }, ARRAY_FILTER_USE_KEY);
84 + $self->queryParams = array_diff_key($request, array_flip(self::ROUTE_PARAMS));
69 85
70 86 return $self;
71 87 }
72 88 }