PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.13.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.13.0
4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 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.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / WordPress / RecaptchaValidationService.php
surecart / app / src / WordPress Last commit date
Admin 2 years ago Assets 2 years ago Pages 3 years ago PostTypes 2 years ago Shortcodes 2 years ago Sitemap 2 years ago Templates 2 years ago Users 3 years ago ActionsService.php 3 years ago CompatibilityService.php 2 years ago HealthService.php 2 years ago LineItemStateService.php 2 years ago PluginService.php 3 years ago PluginServiceProvider.php 2 years ago RecaptchaValidationService.php 2 years ago StateService.php 2 years ago ThemeService.php 2 years ago ThemeServiceProvider.php 3 years ago TranslationsServiceProvider.php 3 years ago
RecaptchaValidationService.php
111 lines
1 <?php
2
3 namespace SureCart\WordPress;
4
5 /**
6 * Recaptcha Validation Service.
7 */
8 class RecaptchaValidationService {
9 /**
10 * Is recaptcha Enabled?
11 *
12 * @return boolean
13 */
14 public function isEnabled() {
15 return (bool) get_option( 'surecart_recaptcha_enabled', false );
16 }
17
18 /**
19 * Get reCaptcha min score.
20 *
21 * @return string
22 */
23 public function getMinScore() {
24 return apply_filters( 'surecart_recaptcha_min_score', 0.5 );
25 }
26
27 /**
28 * Get reCaptcha secret key.
29 *
30 * @return string
31 */
32 public function getSecretKey() {
33 return get_option( 'surecart_recaptcha_secret_key', '' );
34 }
35
36 /**
37 * Get reCaptcha secret key.
38 *
39 * @return string
40 */
41 public function getSiteKey() {
42 return get_option( 'surecart_recaptcha_site_key', '' );
43 }
44
45 /**
46 * Get reCaptcha response data.
47 *
48 * @param string $grecaptcha recaptcha token.
49 * @return object
50 */
51 public function makeRequest( $grecaptcha ) {
52 $recaptcha_verify = wp_remote_post(
53 'https://www.google.com/recaptcha/api/siteverify',
54 [
55 'method' => 'POST',
56 'body' => [
57 'secret' => $this->getSecretKey(),
58 'response' => $grecaptcha,
59 ],
60 ]
61 );
62 return json_decode( wp_remote_retrieve_body( $recaptcha_verify ) );
63 }
64
65 /**
66 * Check is validate token.
67 *
68 * @param object $verify_data recaptcha token.
69 * @return bool
70 */
71 public function isTokenValid( $verify_data ) {
72 if ( empty( $verify_data->success ) ) {
73 return false;
74 }
75 return (bool) $verify_data->success;
76 }
77
78 /**
79 * Check is validate score.
80 *
81 * @param object $verify_data recaptcha token.
82 * @return bool
83 */
84 public function isValidScore( $verify_data ) {
85 return $verify_data->score && $verify_data->score >= $this->getMinScore();
86 }
87
88 /**
89 * Validate the recaptcha.
90 *
91 * @param string $grecaptcha_token The recaptcha token
92 *
93 * @return true|\WP_Error
94 */
95 public function validate( $grecaptcha_token ) {
96 $response = $this->makeRequest( $grecaptcha_token );
97
98 // recaptcha failed.
99 if ( ! $this->isTokenValid( $response ) ) {
100 return new \WP_Error( 'invalid_recaptcha', __( 'Invalid recaptcha check. Please try again.', 'surecart' ) );
101 }
102
103 // score is not valid.
104 if ( apply_filters( 'surecart_recaptcha_needed_validation_score', false ) && ! $this->isValidScore( $response ) ) {
105 return new \WP_Error( 'invalid_recaptcha_score', __( 'Invalid recaptcha score. Please try again.', 'surecart' ) );
106 }
107
108 return true;
109 }
110 }
111