Delphi ActiveX Requires Chilkat v11.0.0+
Delphi ActiveX
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.
Chilkat Delphi ActiveX Downloads
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.');