PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.13.3
GiveWP – Donation Plugin and Fundraising Platform v2.13.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 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 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.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / PaymentGateways / PayPalCommerce / RefreshToken.php
give / src / PaymentGateways / PayPalCommerce Last commit date
DataTransferObjects 5 years ago Models 5 years ago Repositories 5 years ago Webhooks 5 years ago AccountAdminNotices.php 5 years ago AdminSettingFields.php 5 years ago AdvancedCardFields.php 5 years ago AjaxRequestHandler.php 5 years ago DonationDetailsPage.php 5 years ago DonationFormPaymentMethod.php 5 years ago DonationProcessor.php 5 years ago PayPalClient.php 5 years ago PayPalCommerce.php 5 years ago RefreshToken.php 5 years ago RefundPaymentHandler.php 5 years ago ScriptLoader.php 5 years ago Utils.php 5 years ago onBoardingRedirectHandler.php 5 years ago
RefreshToken.php
108 lines
1 <?php
2
3 namespace Give\PaymentGateways\PayPalCommerce;
4
5
6 use Give\PaymentGateways\PayPalCommerce\Models\MerchantDetail;
7 use Give\PaymentGateways\PayPalCommerce\Repositories\MerchantDetails;
8 use Give\PaymentGateways\PayPalCommerce\Repositories\PayPalAuth;
9
10 /**
11 * Class RefreshToken
12 *
13 * @since 2.9.0
14 */
15 class RefreshToken {
16 /* @var MerchantDetail */
17 private $merchantDetail;
18
19 /**
20 * @since 2.9.0
21 *
22 * @var MerchantDetails
23 */
24 private $detailsRepository;
25
26 /**
27 * @since 2.9.0
28 *
29 * @var PayPalAuth
30 */
31 private $payPalAuth;
32
33 /**
34 * RefreshToken constructor.
35 *
36 * @since 2.9.0
37 * @since 2.9.6 Add MerchantDetail constructor param.
38 *
39 * @param MerchantDetails $detailsRepository
40 * @param PayPalAuth $payPalAuth
41 * @param MerchantDetail $merchantDetail
42 */
43 public function __construct( MerchantDetails $detailsRepository, PayPalAuth $payPalAuth, MerchantDetail $merchantDetail ) {
44 $this->detailsRepository = $detailsRepository;
45 $this->payPalAuth = $payPalAuth;
46 $this->merchantDetail = $merchantDetail;
47 }
48
49 /**
50 * Return cron json name which uses to refresh token.
51 *
52 * @since 2.9.0
53 *
54 * @return string
55 */
56 private function getCronJobHookName() {
57 return 'give_paypal_commerce_refresh_token';
58 }
59
60 /**
61 * Register cron job to refresh access token.
62 * Note: only for internal use.
63 *
64 * @since 2.9.0
65 *
66 * @param string $tokenExpires
67 *
68 */
69 public function registerCronJobToRefreshToken( $tokenExpires ) {
70 wp_schedule_single_event(
71 time() + ( $tokenExpires - 1800 ), // Refresh token before half hours of expires date.
72 $this->getCronJobHookName()
73 );
74 }
75
76 /**
77 * Delete cron job which refresh access token.
78 * Note: only for internal use.
79 *
80 * @since 2.9.0
81 *
82 */
83 public function deleteRefreshTokenCronJob() {
84 wp_clear_scheduled_hook( $this->getCronJobHookName() );
85 }
86
87 /**
88 * Refresh token.
89 * Note: only for internal use
90 *
91 * @since 2.9.0
92 * @since 2.9.6 Refresh token only if paypal merchant id exist.
93 */
94 public function refreshToken() {
95 // Exit if account is not connected.
96 if ( ! $this->detailsRepository->accountIsConnected() ) {
97 return;
98 }
99
100 $tokenDetails = $this->payPalAuth->getTokenFromClientCredentials( $this->merchantDetail->clientId, $this->merchantDetail->clientSecret );
101
102 $this->merchantDetail->setTokenDetails( $tokenDetails );
103 $this->detailsRepository->save( $this->merchantDetail );
104
105 $this->registerCronJobToRefreshToken( $tokenDetails['expiresIn'] );
106 }
107 }
108