webleit / revisoapi
Reviso Api - PHP SDK
Requires
- php: ^8.0
- ext-json: *
- illuminate/collections: ^8.0 || ^9.0
- php-http/discovery: ^1.0
- php-http/httplug: ^2.0
- php-http/message-factory: ^1.0
- psr/http-client-implementation: ^1.0
- psr/http-message: ^1.0
Requires (Dev)
- ext-curl: *
- dms/phpunit-arraysubset-asserts: ^0.3.1
- friendsofphp/php-cs-fixer: ^3.5
- guzzlehttp/psr7: ^2.1
- php-http/curl-client: ^2.2
- php-http/message: ^1.12
- php-http/mock-client: ^1.0
- phpstan/phpstan: ^1.4
- phpunit/phpunit: ^9.0
- rector/rector: ^0.12.15
This package is auto-updated.
Last update: 2024-12-09 07:08:08 UTC
README
This Library is a SDK in PHP that simplifies the usage of the Reviso REST API (http://api-docs.reviso.com)
It provides both an interface to ease the interaction with the APIs without bothering with the actual REST request, while packaging the various responses using very simple Model classes that can be then uses with any other library or framework.
Installation
composer require webleit/revisoapi
HTTP Clients
In order to talk to Reviso APIs, you need an HTTP Client library. Since v2 of this package, the HTTP Client is not included, allowing you to choose the one you like the best, and avoiding any potential dependency conflict.
You can use any library to send HTTP messages that implements php-http/client-implementation.
Here is a list of all officially supported clients and adapters: http://docs.php-http.org/en/latest/clients.html
You can read more on the HTTPlug docs.
Usage
In order to use the library, just require the composer autoload file, and then fire up the library itself.
require './vendor/autoload.php'; $reviso = new \Webleit\RevisoApi\Reviso($appSecretToken, $agreementGrantToken);
This way, the library will try to find any HTTP Client implementation that you may already have. If you want, you can pass a specific Http Client instance to the library like this:
require './vendor/autoload.php'; $reviso = new \Webleit\RevisoApi\Reviso($appSecretToken, $agreementGrantToken, $yourHttpClient);
If you want to use the demo account, just don't specify the auth parameters, and you'll be able to use any GET request.
$reviso = new \Webleit\RevisoApi\Reviso();
API calls
To call any Api, just use the same name reported in the api docs. You can get the list of supported apis using the getEndpoints() method
$reviso->getEndpoints();
You can, for example, get the list of customers by using:
$customers = $reviso->customers->get();
or the list of customer groups
$groups = $reviso->customerGroups->get();
List calls
To get a list of resources from a module, use the get() method
$customers = $reviso->customers->get();
In order to navigate the pages, just use the "page" and "perPage" methods
$customers = $reviso->customers->page(1)->perPage(100)->get();
Filters
To filter a list of resources from a module, use the where()
method before calling get()
$customers = $reviso->customers->where('corporateIdentificationNumber', '=', '123456789')->get();
In order to navigate the pages, just use the "page" and "perPage" methods
$customers = $reviso->customers->page(1)->perPage(100)->get();
Return Types
Any "list" api call returns a Collection object, which contains information on the list itself, allows for further pagination,
and stores the list of items in a Laravel Collection package (Illuminate\Support\Collection
).
You can therefore use the result as Collection, which allows mapping, reducing, serializing, etc
$customers = $reviso->customers->get(); $data = $customers->toArray(); $json = $customers->toJson(); // After fetch filtering in php $filtered = $customers->where('accountNumber', '>', 200); // Grouping $filtered = $customers->groupBy('country');
Any "resource" api call returns a Model object of a class dedicated to the single resource you're fetching. For example, calling
$customer = $reviso->customers->get($accuntNumber); $data = $customer->toArray(); $name = $customer->name;
will return a \Weble\RevisoApi\Model
object, which is Arrayable and Jsonable, and that can be therefore used in many ways.
CRUD
You can create / Read / Update / Delete a resource from the Endpoint class or on the model itself.
Create
$data = [ /** Data of the customer */ ]; $customer = $reviso->customers->create($data);
Read
$customer = $reviso->customers->find($accountNumber);
Update
$data = [ /** Data of the customer */ ]; $customer = $reviso->customers->find($accountNumber); $customer->save($data);
Delete
$data = [ /** Data of the customer */ ]; $customer = $reviso->customers->find($accountNumber); $customer->delete();
Test
This package contains some tests to test the basic functionalities of the package.
In order to run the tests also on the "CRUD" methods, you need to create a config.json
file in the"tests/
directory, with the authentication details of an app you want to use as a test base.
You may copy if from the config.example.json
in the same directory.
composer test
Upgrade from V1 to V2
Contributing
Finding bugs, sending pull requests or improving the docs - any contribution is welcome and highly appreciated
Versioning
Semantic Versioning Specification (SemVer) is used.
Copyright and License
Copyright Weble Srl under the MIT license.