Sample code for 30+ languages & platforms
Delphi ActiveX Requires Chilkat v11.0.0+

PayPal: Decide when to renew an access token

See more PayPal Examples

Use the UTC request time and expires_in from the token example. Renew five minutes early. This is a cache decision; a revoked token can still receive HTTP 401 before its calculated expiry.

PayPal documentation

Chilkat Delphi ActiveX Downloads

Delphi ActiveX
var
timing: TChilkatJsonObject;
issued: TCkDateTime;
loadedTiming: Integer;
validTimestamp: Integer;
now: TCkDateTime;
age: Integer;
lifetime: Integer;

begin
//  Read the metadata saved by Get a sandbox access token.
timing := TChilkatJsonObject.Create(Self);
issued := TCkDateTime.Create(Self);
loadedTiming := timing.LoadFile('paypal-token-timing.json');
if (loadedTiming <> 1) then
  begin
    Memo1.Lines.Add('No timing metadata. Request a token.');
    Exit;
  end;
validTimestamp := issued.SetFromTimestamp(timing.StringOf('issued_at'));
if (validTimestamp <> 1) then
  begin
    Memo1.Lines.Add('Invalid issue time. Request a token.');
    Exit;
  end;
now := TCkDateTime.Create(Self);
now.SetFromCurrentSystemTime();
age := now.DiffSeconds(issued.ControlInterface);
lifetime := timing.IntOf('expires_in');
if ((age < 0) or (lifetime <= 300) or (age >= (lifetime - 300))) then
  begin
    Memo1.Lines.Add('Request a new client-credentials token.');
    Exit;
  end;
Memo1.Lines.Add('Reuse the matching token from the credential store.');