PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.5.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.5.0
4.5.1 4.5.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 months ago Assets 2 weeks ago CLI 2 years ago Cache 2 weeks ago Pages 10 months ago PostTypes 2 months ago Posts 1 year ago Shortcodes 1 month ago Taxonomies 1 year ago Templates 1 year ago Users 2 months ago ActionsService.php 3 years ago CompatibilityService.php 4 months ago CurrencyService.php 4 months ago GoogleMapApiService.php 2 months ago HealthService.php 2 months ago LineItemStateService.php 2 years ago PluginActionLinksService.php 1 year ago PluginService.php 1 year ago PluginServiceProvider.php 1 year ago RecaptchaValidationService.php 2 years ago StateService.php 7 months ago ThemeService.php 4 months ago ThemeServiceProvider.php 7 months ago TranslationsServiceProvider.php 3 months ago UpgradeNoticeService.php 1 year 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