Download the PHP package antavo/loyalty-sdk-php without Composer
On this page you can find all versions of the php package antavo/loyalty-sdk-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package loyalty-sdk-php
Antavo Loyalty SDK for PHP
Table of Contents
- Requirements
- Usage
- Including the Library
- The REST Client
- Customer Token
- Validating Webhook Messages
Requirements
- PHP 5.5
- PHP cURL extension
Usage
Including the Library
Using the Phar package
require 'phar://antavo-loyalty-sdk.phar';
// Now you can use the classes inside the archive.
The REST client
The Antavo API REST client is a small client to perform requests to the API.
It uses two other libraries:
Antavo\SignedToken
to handle web tokens.Escher
is a library to sign HTTP requests, also to validate them. It generalizes the signature method used by AWS.Pakard\RestClient
is a small, generic REST client.
Creating an instance
$client = new Antavo\Loyalty\Sdk\RestClient('REGION', 'API KEY', 'API SECRET');
Where:
REGION
is part of the credential scope (used to sign the request), it is determined by the account;API KEY
identifies the account itself;API SECRET
used to sign the request.
API endpoint base URL is calculated using REGION
(though it can be changed via the setBaseUrl()
method).
Sending a request
The underlying client has a send()
method with the following signature:
public function send(string $method, string $url, mixed $data = NULL): mixed;
It makes possible to perform any kind of REST request:
$response = $client->send('GET', '/customer/' . $customer->id);
$response
will hold the parsed JSON response.
$response = $client->send(
'POST',
'/events',
[
'customer' => $customer->id,
'action' => 'profile',
'data' => [
'email' => $customer->email,
]
]
);
Shorthands
Sending an event
// Assuming $customer is some kind of model object instance.
$client->sendEvent(
$customer->id,
'profile',
[
'email' => $customer->email,
'custom_field' => get_custom_value(),
]
);
Error Handling
Note that the API may return a HTTP status code other than 2xx, in which case the client throws an exception.
Because of that it is strongly recommended to wrap all requests in try-catch:
try {
$result = $client->send('GET', '/customer');
} catch (\Pakard\RestClient\StatusCodeException $e) {
// You can still retrieve the original (error) response:
$result = $client->getResponse()->getBody();
}
There may occur other kind of exceptions, all descendants of Pakard\RestClient\Exception
:
Pakard\RestClient\ResponseParserException
on malformed response body;Pakard\RestClient\TransportException
on any error produced by the PHP cURL extension.
Customer Token
Antavo\Loyalty\Sdk\CustomerToken
is used to create & validate web tokens to authenticate the customer in the embedded loyalty hub.
Creating an instance
// Initializing a new token with the secret and with expiration time.
$token = new Antavo\Loyalty\Sdk\CustomerToken('API SECRET', $expires_in);
API SECRET
used to attach a hash to the token, so later it can be validated.$expires_in
is an integer value: the number of seconds the token considered valid. 0 means no expiration, values smaller than 30 days (in seconds) considered as time-to-live, anything bigger is taken as a Unix timestamp.
Upon instantiation the token sets itself a default cookie domain from the environment, that can be override via setCookieDomain()
.
Creating a new token
It can be retrieved by setting a customer ID, then simply casting the token object to string:
echo (string) (new Antavo\Loyalty\Sdk\CustomerToken('API SECRET', $expires_in))
->setCustomer($customer->id);
Customer token in cookie
Setting a customer token cookie:
$token = (new Antavo\Loyalty\Sdk\CustomerToken('API SECRET', $expires_in))
->setCustomer($customer->id);
if (!$token->setCookie()) {
// Couldn't set the cookie...
}
Then unsetting it:
$token->unsetCookie();
Retrieving cookie value
$token = new Antavo\Loyalty\Sdk\CustomerToken('API SECRET', $expires_in);
try {
if (isset($_COOKIE[$token->getCookieName()]) {
$token->setToken($_COOKIE[$token->getCookieName()]);
}
} catch (Antavo\SignedToken\Exceptions\Exception $e) {
// The token is either expired or invalid...
}
Validating Webhook Messages
There are cases when you need to handle webhook messages sent by Antavo. You can also use the REST client to authenticate such requests:
// Creating a REST client with valid region and credentials
// (though credentials won't be used for authentication -- see below).
$client = new Antavo\Loyalty\Sdk\RestClient('REGION', 'API KEY', 'API SECRET');
// Obtaining a configured Escher client from the REST client.
$escher = $client->createEscher();
// Authenticating current request using credential key-value pairs.
$escher->authenticate(
[
'API KEY' => 'API SECRET'
]
);
For further details see the EscherPHP documentation page.
All versions of loyalty-sdk-php with dependencies
antavo/escher-php Version ^0.2.13
pakard/rest-client-php Version ^1.0
antavo/signed-token Version ^1.0