PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / trunk
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments vtrunk
4.7.0 4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.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 1 month ago Assets 1 week ago CLI 2 years ago Cache 1 month ago Pages 1 year ago PostTypes 4 months ago Posts 1 year ago Shortcodes 1 month ago Taxonomies 1 year ago Templates 1 year ago Users 4 days ago ActionsService.php 4 years ago CompatibilityService.php 1 week ago CurrencyService.php 6 months ago GoogleMapApiService.php 4 months ago HealthService.php 4 months ago LineItemStateService.php 2 years ago PluginActionLinksService.php 1 year ago PluginService.php 1 week ago PluginServiceProvider.php 1 year ago RecaptchaValidationService.php 2 years ago StateService.php 8 months ago ThemeService.php 5 months ago ThemeServiceProvider.php 8 months ago TranslationsServiceProvider.php 4 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