diff --git a/lib/PayPal/Auth/OAuthTokenCredential.php b/lib/PayPal/Auth/OAuthTokenCredential.php index f1d9e60..30749d6 100644 --- a/lib/PayPal/Auth/OAuthTokenCredential.php +++ b/lib/PayPal/Auth/OAuthTokenCredential.php @@ -125,6 +125,10 @@ class OAuthTokenCredential extends PayPalResourceModel */ public function getAccessToken($config) { + // Check if we already have accessToken in Cache + if ($this->accessToken && (time() - $this->tokenCreateTime) < ($this->tokenExpiresIn - self::$expiryBufferTime)) { + return $this->accessToken; + } // Check for persisted data first $token = AuthorizationCache::pull($config, $this->clientId); if ($token) { diff --git a/sample/doc/assets/behavior.js b/sample/doc/assets/behavior.js index ec4deaa..9b43888 100644 --- a/sample/doc/assets/behavior.js +++ b/sample/doc/assets/behavior.js @@ -962,7 +962,77 @@ f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3 "pageTitle": "payments/CreateFuturePayment", "title": "CreateFuturePayment" }, - "depth": 2 + "depth": 2, + "outline": [ + { + "type": "heading", + "data": { + "level": 1, + "title": "Create Payment using PayPal as payment method", + "slug": "create-payment-using-paypal-as-payment-method" + }, + "depth": 1, + "children": [ + { + "type": "heading", + "data": { + "level": 3, + "title": "Payer", + "slug": "payer" + }, + "depth": 3 + }, { + "type": "heading", + "data": { + "level": 3, + "title": "Amount", + "slug": "amount" + }, + "depth": 3 + }, { + "type": "heading", + "data": { + "level": 3, + "title": "Transaction", + "slug": "transaction" + }, + "depth": 3 + }, { + "type": "heading", + "data": { + "level": 3, + "title": "Redirect urls", + "slug": "redirect-urls" + }, + "depth": 3 + }, { + "type": "heading", + "data": { + "level": 3, + "title": "Payment", + "slug": "payment" + }, + "depth": 3 + }, { + "type": "heading", + "data": { + "level": 3, + "title": "Get Refresh Token", + "slug": "get-refresh-token" + }, + "depth": 3 + }, { + "type": "heading", + "data": { + "level": 3, + "title": "Create Future Payment", + "slug": "create-future-payment" + }, + "depth": 3 + } + ] + } + ] }, { "type": "file", "data": { diff --git a/sample/doc/payments/CreateFuturePayment.html b/sample/doc/payments/CreateFuturePayment.html index 75f33bb..0fb1e81 100644 --- a/sample/doc/payments/CreateFuturePayment.html +++ b/sample/doc/payments/CreateFuturePayment.html @@ -34,7 +34,7 @@ the above types and intent set to 'sale'

$payer) ->setRedirectUrls($redirectUrls) ->setTransactions(array($transaction));

Get Refresh Token

-

You need to get a permanent refresh token from the authorization code, retrieved from the mobile sdk.

authorization code from mobile sdk

$authorizationCode = 'EJfRuAqXEE95pdVMmOym_mftTbeJD03RBX-Zjg9pLCAhdLqLeRR6YSKTNsrbQGX7lFoZ3SxwFyxADEZbBOxpn023W9SA0JzSQAy-9eLdON5eDPAyMyKlHyNVS2DqBR2iWVfQGfudbd9MDoRxMEjIZbY';

Client Metadata id from mobile sdk +

You need to get a permanent refresh token from the authorization code, retrieved from the mobile sdk.

authorization code from mobile sdk

$authorizationCode = 'EK7_MAKlB4QxW1dWKnvnr_CEdLKnpH3vnGAf155Eg8yO8e_7VaQonsqIbTK9CR7tUsoIN2eCc5raOfaGbZDCT0j6k_BDE8GkyLgk8ulcQyR_3S-fgBzjMzBwNqpj3AALgCVR03zw1iT8HTsxZXp3s2U';

Client Metadata id from mobile sdk For more information look for PayPal-Client-Metadata-Id in https://developer.paypal.com/docs/api/#authentication--headers

$clientMetadataId = '123123456'; try {

Exchange authorization_code for long living refresh token. You should store @@ -47,7 +47,7 @@ url to which the buyer must be redirected to for payment approval Please note that currently future payments works only with PayPal as a funding instrument.

$payment->create($apiContext, $clientMetadataId); -} catch (Exception $ex) {

NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY

ResultPrinter::printError("Future Payment", "Payment", null, $request, $ex); +} catch (Exception $ex) {

NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY

ResultPrinter::printError("Future Payment", "Payment", null, $payment, $ex); exit(1); }

NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY

ResultPrinter::printResult("Future Payment", "Payment", $payment->getId(), $request, $payment); diff --git a/sample/payments/CreateFuturePayment.php b/sample/payments/CreateFuturePayment.php index 0c1d31c..c3e3f59 100644 --- a/sample/payments/CreateFuturePayment.php +++ b/sample/payments/CreateFuturePayment.php @@ -58,7 +58,7 @@ $payment->setIntent("authorize") // You need to get a permanent refresh token from the authorization code, retrieved from the mobile sdk. // authorization code from mobile sdk -$authorizationCode = 'EJfRuAqXEE95pdVMmOym_mftTbeJD03RBX-Zjg9pLCAhdLqLeRR6YSKTNsrbQGX7lFoZ3SxwFyxADEZbBOxpn023W9SA0JzSQAy-9eLdON5eDPAyMyKlHyNVS2DqBR2iWVfQGfudbd9MDoRxMEjIZbY'; +$authorizationCode = 'EK7_MAKlB4QxW1dWKnvnr_CEdLKnpH3vnGAf155Eg8yO8e_7VaQonsqIbTK9CR7tUsoIN2eCc5raOfaGbZDCT0j6k_BDE8GkyLgk8ulcQyR_3S-fgBzjMzBwNqpj3AALgCVR03zw1iT8HTsxZXp3s2U'; // Client Metadata id from mobile sdk // For more information look for PayPal-Client-Metadata-Id in https://developer.paypal.com/docs/api/#authentication--headers @@ -87,7 +87,7 @@ try { } catch (Exception $ex) { // NOTE: PLEASE DO NOT USE RESULTPRINTER CLASS IN YOUR ORIGINAL CODE. FOR SAMPLE ONLY - ResultPrinter::printError("Future Payment", "Payment", null, $request, $ex); + ResultPrinter::printError("Future Payment", "Payment", null, $payment, $ex); exit(1); }