PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.19.2
GiveWP – Donation Plugin and Fundraising Platform v2.19.2
4.16.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
Actions 4 years ago DataTransferObjects 4 years ago Exceptions 4 years ago Models 4 years ago Repositories 4 years ago Webhooks 4 years ago AccountAdminNotices.php 4 years ago AdminSettingFields.php 4 years ago AdvancedCardFields.php 4 years ago AjaxRequestHandler.php 4 years ago DonationDetailsPage.php 4 years ago DonationFormPaymentMethod.php 4 years ago PayPalClient.php 4 years ago PayPalCommerce.php 4 years ago RefreshToken.php 4 years ago RefundPaymentHandler.php 4 years ago ScriptLoader.php 4 years ago Utils.php 4 years ago onBoardingRedirectHandler.php 4 years ago
RefreshToken.php
119 lines
1 <?php
2
3 namespace Give\PaymentGateways\PayPalCommerce;
4
5 use Give\PaymentGateways\PayPalCommerce\Models\MerchantDetail;
6 use Give\PaymentGateways\PayPalCommerce\Repositories\MerchantDetails;
7 use Give\PaymentGateways\PayPalCommerce\Repositories\PayPalAuth;
8
9 /**
10 * Class RefreshToken
11 *
12 * @since 2.9.0
13 */
14 class RefreshToken
15 {
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(
44 MerchantDetails $detailsRepository,
45 PayPalAuth $payPalAuth,
46 MerchantDetail $merchantDetail
47 ) {
48 $this->detailsRepository = $detailsRepository;
49 $this->payPalAuth = $payPalAuth;
50 $this->merchantDetail = $merchantDetail;
51 }
52
53 /**
54 * Return cron json name which uses to refresh token.
55 *
56 * @since 2.9.0
57 *
58 * @return string
59 */
60 private function getCronJobHookName()
61 {
62 return 'give_paypal_commerce_refresh_token';
63 }
64
65 /**
66 * Register cron job to refresh access token.
67 * Note: only for internal use.
68 *
69 * @since 2.9.0
70 *
71 * @param string $tokenExpires
72 *
73 */
74 public function registerCronJobToRefreshToken($tokenExpires)
75 {
76 wp_schedule_single_event(
77 time() + ($tokenExpires - 1800), // Refresh token before half hours of expires date.
78 $this->getCronJobHookName()
79 );
80 }
81
82 /**
83 * Delete cron job which refresh access token.
84 * Note: only for internal use.
85 *
86 * @since 2.9.0
87 *
88 */
89 public function deleteRefreshTokenCronJob()
90 {
91 wp_clear_scheduled_hook($this->getCronJobHookName());
92 }
93
94 /**
95 * Refresh token.
96 * Note: only for internal use
97 *
98 * @since 2.9.0
99 * @since 2.9.6 Refresh token only if paypal merchant id exist.
100 */
101 public function refreshToken()
102 {
103 // Exit if account is not connected.
104 if ( ! $this->detailsRepository->accountIsConnected()) {
105 return;
106 }
107
108 $tokenDetails = $this->payPalAuth->getTokenFromClientCredentials(
109 $this->merchantDetail->clientId,
110 $this->merchantDetail->clientSecret
111 );
112
113 $this->merchantDetail->setTokenDetails($tokenDetails);
114 $this->detailsRepository->save($this->merchantDetail);
115
116 $this->registerCronJobToRefreshToken($tokenDetails['expiresIn']);
117 }
118 }
119