PluginProbe ʕ •ᴥ•ʔ
WooCommerce / 10.9.3
WooCommerce v10.9.3
10.9.4 10.9.3 10.9.2 10.9.1 10.9.0 10.9.0-rc.1 10.9.0-beta.2 10.9.0-beta.1 10.8.1 10.8.0 10.8.0-rc.1 10.8.0-beta.2 10.8.0-beta.1 7.8.0-beta.1 7.8.0-beta.2 7.8.0-rc.1 7.8.0-rc.2 7.8.1 7.8.2 7.8.3 7.8.4 7.9.0 7.9.0-beta.1 7.9.0-beta.2 7.9.0-rc.2 7.9.0-rc.3 7.9.1 7.9.2 8.0.0 8.0.0-beta.1 8.0.0-beta.2 8.0.0-rc.1 8.0.0-rc.2 8.0.1 8.0.2 8.0.3 8.0.4 8.0.5 8.1.0 8.1.0-beta.1 8.1.0-rc.1 8.1.0-rc.2 8.1.1 8.1.2 8.1.3 8.1.4 8.2.0 8.2.0-beta.1 8.2.0-rc.1 8.2.0-rc.2 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.3.0 8.3.0-beta.1 8.3.0-rc.1 8.3.0-rc.2 8.3.1 8.3.2 8.3.3 8.3.4 8.4.0 8.4.0-beta.1 8.4.0-rc.1 8.4.1 8.4.2 8.4.3 8.5.0 8.5.0-beta.1 8.5.0-rc.1 8.5.1 8.5.2 8.5.3 8.5.4 8.5.5 8.6.0 8.6.0-beta.1 8.6.0-rc.1 8.6.1 8.6.2 8.6.3 8.6.4 8.7.0 8.7.0-beta.1 8.7.0-beta.2 8.7.0-rc.1 8.7.1 8.7.2 8.7.3 8.8.0 8.8.0-beta.1 8.8.0-rc.1 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.8.6 8.8.7 8.9.0 8.9.0-beta.1 8.9.0-rc.1 8.9.1 8.9.2 8.9.3 8.9.4 8.9.5 9.0.0 9.0.0-beta.1 9.0.0-beta.2 9.0.0-rc.1 9.0.1 9.0.2 9.0.3 9.0.4 9.1.0 9.1.0-beta.1 9.1.0-rc.1 9.1.1 9.1.2 9.1.3 9.1.4 9.1.5 9.1.6 9.2.0 9.2.0-beta.1 9.2.0-rc.1 9.2.1 9.2.2 9.2.3 9.2.4 9.2.5 9.3.0 9.3.0-beta.1 9.3.0-rc.1 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.3.6 9.4.0 9.4.0-beta.1 9.4.0-beta.2 9.4.0-rc.1 9.4.0-rc.2 9.4.0-rc.3 9.4.0-rc.4 9.4.1 9.4.2 9.4.3 9.4.4 9.4.5 9.5.0 9.5.0-beta.1 9.5.0-beta.2 9.5.0-rc.1 9.5.1 9.5.2 9.5.3 9.5.4 9.6.0 9.6.0-beta.1 9.6.0-beta.2 9.6.0-rc.1 9.6.1 9.6.2 9.6.3 9.6.4 9.7.0 9.7.0-beta.1 9.7.0-rc.1 9.7.1 9.7.2 9.7.3 9.8.0 9.8.0-beta.1 9.8.0-rc.1 9.8.1 9.8.2 9.8.3 9.8.4 9.8.5 9.8.6 9.8.7 9.9.0 9.9.0-beta.1 9.9.0-rc.1 9.9.1 9.9.2 9.9.3 9.9.4 9.9.5 9.9.6 9.9.7 3.7.3 7.1.2 3.8.0 7.2.0 3.8.0-beta.1 7.2.0-beta.1 3.8.0-rc.1 7.2.0-beta.2 3.8.0-rc.2 7.2.0-rc.1 3.8.1 7.2.0-rc.2 3.8.2 7.2.1 3.8.3 7.2.2 3.9.0 7.2.3 3.9.0-beta.1 7.2.4 3.9.0-beta.2 7.3.0 3.9.0-rc.1 7.3.0-beta.1 3.9.0-rc.2 7.3.0-beta.2 3.9.0-rc.3 7.3.0-rc.1 3.9.0-rc.4 7.3.0-rc.2 3.9.1 7.3.1 3.9.2 7.4.0 3.9.3 7.4.0-beta.1 3.9.4 7.4.0-beta.2 3.9.5 7.4.0-rc.1 4.0.0 7.4.0-rc.2 4.0.0-beta.1 7.4.1 4.0.0-rc.1 7.4.2 4.0.0-rc.2 7.5.0 4.0.1 7.5.0-beta.1 4.0.2 7.5.0-beta.2 4.0.3 7.5.0-rc.1 4.0.4 7.5.1 4.1.0 7.5.2 4.1.0-beta.1 7.6.0 4.1.0-beta.2 7.6.0-beta.1 4.1.0-rc.1 7.6.0-beta.2 4.1.0-rc.2 7.6.0-rc.1 4.1.1 7.6.0-rc.2 4.1.2 7.6.0-rc.3 4.1.3 7.6.1 4.1.4 7.6.2 4.2.0 7.7.0 4.2.0-RC.1 7.7.0-beta.1 4.2.0-RC.2 7.7.0-beta.2 4.2.0-beta.1 7.7.0-rc.1 4.2.1 7.7.1 4.2.2 7.7.2 4.2.3 7.7.3 4.2.4 7.8.0 4.2.5 4.3.0 4.3.0-beta.1 4.3.0-rc.1 4.3.0-rc.2 4.3.0-rc.3 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.4.0 4.4.0-beta.1 4.4.0-rc.1 4.4.1 4.4.2 4.4.3 4.4.4 4.5.0 4.5.0-beta.1 4.5.0-rc.1 4.5.0-rc.3 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.6.0-beta.1 4.6.0-rc.1 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.7.0 4.7.0-beta.1 4.7.0-beta.2 4.7.0-rc.1 4.7.1 4.7.1-beta.1 4.7.2 4.7.3 4.7.4 4.8.0 4.8.0-beta.1 4.8.0-rc.1 4.8.0-rc.2 4.8.1 4.8.2 4.8.3 4.9.0 4.9.0-beta.1 4.9.0-rc.1 4.9.0-rc.2 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 5.0.0 5.0.0-beta.1 5.0.0-beta.2 5.0.0-rc.1 5.0.0-rc.2 5.0.0-rc.3 5.0.1 5.0.2 5.0.3 5.1.0 5.1.0-beta.1 5.1.0-rc.1 trunk 5.1.1 10.0.0 5.1.2 10.0.0-rc.1 5.1.3 10.0.0-rc.2 5.2.0 10.0.1 5.2.0-beta.1 10.0.2 5.2.0-rc.1 10.0.3 5.2.0-rc.2 10.0.4 5.2.1 10.0.5 5.2.2 10.0.6 5.2.3 10.1.0 5.2.4 10.1.0-rc.1 5.2.5 10.1.0-rc.2 5.3.0 10.1.0-rc.3 5.3.0-beta.1 10.1.0-rc.4 5.3.0-rc.1 10.1.1 5.3.0-rc.2 10.1.2 5.3.1 10.1.3 5.3.2 10.1.4 5.3.3 10.2.0 5.4.0 10.2.0-beta.1 5.4.0-beta.1 10.2.0-beta.2 5.4.0-rc.1 10.2.0-rc.1 5.4.1 10.2.1 5.4.2 10.2.2 5.4.3 10.2.3 5.4.4 10.2.4 5.4.5 10.3.0 5.5.0 10.3.0-beta.1 5.5.0-beta.1 10.3.0-beta.2 5.5.0-rc.1 10.3.0-rc.1 5.5.0-rc.2 10.3.0-rc.2 5.5.1 10.3.1 5.5.2 10.3.2 5.5.3 10.3.3 5.5.4 10.3.4 5.5.5 10.3.5 5.6.0 10.3.6 5.6.0-beta.1 10.3.7 5.6.0-rc.1 10.3.8 5.6.0-rc.2 10.4.0 5.6.1 10.4.0-beta.1 5.6.2 10.4.0-beta.2 5.6.3 10.4.0-rc.1 5.7.0 10.4.1 5.7.0-beta.1 10.4.2 5.7.0-rc.1 10.4.3 5.7.1 10.4.4 5.7.2 10.5.0 5.7.3 10.5.0-beta.1 5.8.0 10.5.0-beta.2 5.8.0-beta.1 10.5.0-rc.1 5.8.0-beta.2 10.5.0-rc.2 5.8.0-rc.1 10.5.0-rc.3 5.8.1 10.5.1 5.8.2 10.5.2 5.9.0 10.5.3 5.9.0-beta.1 10.6.0 5.9.0-rc.1 10.6.0-beta.1 5.9.0-rc.2 10.6.0-beta.2 5.9.1 10.6.0-rc.1 5.9.2 10.6.1 6.0.0 10.6.2 6.0.0-beta.1 10.7.0 6.0.0-rc.1 10.7.0-beta.1 6.0.1 10.7.0-beta.2 6.0.2 10.7.0-rc.1 6.1.0 3.0.0 6.1.0-beta.1 3.0.1 6.1.0-rc.1 3.0.2 6.1.0-rc.2 3.0.3 6.1.1 3.0.4 6.1.2 3.0.5 6.1.3 3.0.6 6.2.0 3.0.7 6.2.0-beta.1 3.0.8 6.2.0-rc.1 3.0.9 6.2.0-rc.2 3.1.0 6.2.1 3.1.1 6.2.2 3.1.2 6.2.3 3.2.0 6.3.0 3.2.1 6.3.0-beta.1 3.2.2 6.3.0-rc.1 3.2.3 6.3.0-rc.2 3.2.4 6.3.1 3.2.5 6.3.2 3.2.6 6.4.0 3.3.0 6.4.0-beta.1 3.3.1 6.4.0-rc.1 3.3.2 6.4.1 3.3.2-rc.1 6.4.2 3.3.3 6.5.0 3.3.4 6.5.0-beta.1 3.3.5 6.5.0-rc.1 3.3.6 6.5.0-rc.2 3.4.0 6.5.1 3.4.0-beta.1 6.5.2 3.4.0-rc.2 6.6.0 3.4.1 6.6.0-beta.1 3.4.2 6.6.0-rc.1 3.4.3 6.6.0-rc.2 3.4.4 6.6.1 3.4.5 6.6.2 3.4.6 6.7.0 3.4.7 6.7.0-beta.1 3.4.8 6.7.0-beta.2 3.5.0 6.7.0-rc.1 3.5.0-beta.1 6.7.1 3.5.0-rc.1 6.8.0 3.5.0-rc.2 6.8.0-beta.1 3.5.1 6.8.0-beta.2 3.5.10 6.8.0-rc.1 3.5.2 6.8.1 3.5.3 6.8.2 3.5.4 6.8.3 3.5.5 6.9.0 3.5.6 6.9.0-beta.1 3.5.7 6.9.0-beta.2 3.5.8 6.9.0-rc.1 3.5.9 6.9.1 3.6.0 6.9.2 3.6.0-beta.1 6.9.3 3.6.0-rc.1 6.9.4 3.6.0-rc.2 6.9.5 3.6.0-rc.3 7.0.0 3.6.1 7.0.0-beta.1 3.6.2 7.0.0-beta.2 3.6.3 7.0.0-beta.3 3.6.4 7.0.0-rc.1 3.6.5 7.0.0-rc.2 3.6.6 7.0.1 3.6.7 7.0.2 3.7.0 7.1.0 3.7.0-beta.1 7.1.0-beta.1 3.7.0-rc.1 7.1.0-beta.2 3.7.0-rc.2 7.1.0-rc.1 3.7.1 7.1.0-rc.2 3.7.2 7.1.1
woocommerce / src / Gateways / PayPal / AddressRequirements.php
woocommerce / src / Gateways / PayPal Last commit date
AddressRequirements.php 8 months ago Buttons.php 5 months ago Constants.php 3 months ago Helper.php 3 months ago Notices.php 5 months ago Request.php 2 months ago TransactAccountManager.php 5 months ago WebhookHandler.php 3 months ago
AddressRequirements.php
367 lines
1 <?php
2
3 declare( strict_types=1 );
4
5 namespace Automattic\WooCommerce\Gateways\PayPal;
6
7 /**
8 * Class AddressRequirements
9 *
10 * This helper class checks country-specific address requirements.
11 * This was built based on {@see https://developer.paypal.com/api/rest/reference/orders/v2/country-address-requirements/}
12 */
13 class AddressRequirements {
14 /**
15 * The single instance of the class.
16 *
17 * @var AddressRequirements
18 */
19 protected static $instance = null;
20
21 /**
22 * Countries that require a city in the address.
23 *
24 * @var array
25 */
26 private const COUNTRIES_REQUIRING_CITY = array(
27 'AD',
28 'AE',
29 'AF',
30 'AG',
31 'AI',
32 'AL',
33 'AM',
34 'AN',
35 'AO',
36 'AQ',
37 'AR',
38 'AS',
39 'AT',
40 'AU',
41 'AW',
42 'AZ',
43 'BA',
44 'BB',
45 'BD',
46 'BE',
47 'BF',
48 'BG',
49 'BH',
50 'BI',
51 'BJ',
52 'BM',
53 'BN',
54 'BO',
55 'BR',
56 'BS',
57 'BT',
58 'BV',
59 'BW',
60 'BY',
61 'BZ',
62 'CA',
63 'CC',
64 'CD',
65 'CF',
66 'CG',
67 'CH',
68 'CI',
69 'CK',
70 'CL',
71 'CM',
72 'CN',
73 'CO',
74 'CR',
75 'CS',
76 'CU',
77 'CV',
78 'CX',
79 'CY',
80 'CZ',
81 'DE',
82 'DJ',
83 'DK',
84 'DM',
85 'DO',
86 'DZ',
87 'EC',
88 'EE',
89 'EG',
90 'EH',
91 'ER',
92 'ES',
93 'ET',
94 'FI',
95 'FJ',
96 'FK',
97 'FM',
98 'FO',
99 'FR',
100 'GA',
101 'GB',
102 'GD',
103 'GE',
104 'GF',
105 'GG',
106 'GH',
107 'GI',
108 'GL',
109 'GM',
110 'GN',
111 'GP',
112 'GQ',
113 'GR',
114 'GS',
115 'GT',
116 'GU',
117 'GW',
118 'GY',
119 'HK',
120 'HM',
121 'HN',
122 'HR',
123 'HT',
124 'HU',
125 'ID',
126 'IE',
127 'IL',
128 'IM',
129 'IN',
130 'IO',
131 'IQ',
132 'IR',
133 'IS',
134 'IT',
135 'JE',
136 'JM',
137 'JO',
138 'JP',
139 'KE',
140 'KG',
141 'KH',
142 'KI',
143 'KM',
144 'KN',
145 'KR',
146 'KW',
147 'KY',
148 'KZ',
149 'LA',
150 'LB',
151 'LC',
152 'LI',
153 'LK',
154 'LR',
155 'LS',
156 'LT',
157 'LU',
158 'LV',
159 'LY',
160 'MA',
161 'MC',
162 'MD',
163 'ME',
164 'MG',
165 'MH',
166 'MK',
167 'ML',
168 'MM',
169 'MN',
170 'MO',
171 'MP',
172 'MQ',
173 'MR',
174 'MS',
175 'MT',
176 'MU',
177 'MV',
178 'MW',
179 'MX',
180 'MY',
181 'MZ',
182 'NA',
183 'NC',
184 'NE',
185 'NF',
186 'NG',
187 'NI',
188 'NL',
189 'NO',
190 'NP',
191 'NR',
192 'NU',
193 'NZ',
194 'OM',
195 'PA',
196 'PE',
197 'PF',
198 'PG',
199 'PH',
200 'PK',
201 'PL',
202 'PM',
203 'PN',
204 'PR',
205 'PS',
206 'PT',
207 'PW',
208 'PY',
209 'QA',
210 'RE',
211 'RO',
212 'RS',
213 'RU',
214 'RW',
215 'SA',
216 'SB',
217 'SC',
218 'SD',
219 'SE',
220 'SG',
221 'SH',
222 'SI',
223 'SJ',
224 'SK',
225 'SL',
226 'SM',
227 'SN',
228 'SO',
229 'SR',
230 'ST',
231 'SV',
232 'SY',
233 'SZ',
234 'TC',
235 'TD',
236 'TF',
237 'TG',
238 'TH',
239 'TJ',
240 'TL',
241 'TM',
242 'TN',
243 'TO',
244 'TP',
245 'TR',
246 'TT',
247 'TV',
248 'TW',
249 'TZ',
250 'UA',
251 'UG',
252 'UM',
253 'US',
254 'UY',
255 'UZ',
256 'VA',
257 'VC',
258 'VE',
259 'VG',
260 'VI',
261 'VN',
262 'VU',
263 'WF',
264 'WS',
265 'YE',
266 'YT',
267 'YU',
268 'ZA',
269 'ZM',
270 'ZW',
271 'ZR',
272 'C2',
273 );
274
275 /**
276 * Countries that require a postal code in the address.
277 *
278 * @var array
279 */
280 private const COUNTRIES_REQUIRING_POSTAL_CODE = array(
281 'AR',
282 'AT',
283 'AU',
284 'BR',
285 'BT',
286 'CA',
287 'C2',
288 'CC',
289 'CH',
290 'CN',
291 'DE',
292 'DK',
293 'EH',
294 'ES',
295 'FK',
296 'FM',
297 'FO',
298 'FR',
299 'GB',
300 'GL',
301 'GM',
302 'IT',
303 'JP',
304 'KG',
305 'KI',
306 'KM',
307 'MR',
308 'MX',
309 'NE',
310 'NL',
311 'NO',
312 'NR',
313 'NU',
314 'NF',
315 'PL',
316 'PM',
317 'PN',
318 'SE',
319 'SG',
320 'SH',
321 'SJ',
322 'SM',
323 'SR',
324 'TF',
325 'TH',
326 'TK',
327 'TV',
328 'UM',
329 'US',
330 'VA',
331 'WF',
332 'YT',
333 );
334
335 /**
336 * Get class instance.
337 *
338 * @return AddressRequirements Instance.
339 */
340 final public static function instance() {
341 if ( null === static::$instance ) {
342 static::$instance = new static();
343 }
344 return static::$instance;
345 }
346
347 /**
348 * Check if a country requires a city in the address.
349 *
350 * @param string $country_code The ISO 3166-1 alpha-2 country code.
351 * @return bool
352 */
353 public function country_requires_city( string $country_code ) {
354 return in_array( strtoupper( $country_code ), self::COUNTRIES_REQUIRING_CITY, true );
355 }
356
357 /**
358 * Check if a country requires a postal code in the address.
359 *
360 * @param string $country_code The ISO 3166-1 alpha-2 country code.
361 * @return bool
362 */
363 public function country_requires_postal_code( string $country_code ) {
364 return in_array( strtoupper( $country_code ), self::COUNTRIES_REQUIRING_POSTAL_CODE, true );
365 }
366 }
367