Laravel Zain is Zain DSP API integration with Laravel, made to simplify the the process and API calls and let developers focus on other integration parts and logic.
- PHP >=
7.4.x
- Laravel >=
7.x
composer require alkhatibdev/laravel-zain
php artisan vendor:publish --tag=laravel-zain-config
A laravel-zain.php
config file will be published on your configs
directory, with the following content:
<?php
return [
'base_url' => env('ZAIN_SERVER_BASE_API_URL'),
'product_code' => env('ZAIN_PRODUCT_CODE'),
'username' => env('ZAIN_USERNAME'),
'password' => env('ZAIN_PASSWORD'),
'remember_token' => env('ZAIN_REMEMBER_TOKEN', false),
'enable_logging' => false,
];
Don't forget to set all these variable on your .env
file
ZAIN_SERVER_BASE_API_URL=https://test.zaindsp.com:3030/api/v1/json/
ZAIN_PRODUCT_CODE=xxxxxx
ZAIN_USERNAME=xxxxx
ZAIN_PASSWORD=xxxxx
ZAIN_REMEMBER_TOKEN=false
use AlkhatibDev\LaravelZain\Facades\Zain;
// Initiate payment request
$response = Zain::initiate($phone)
When initiate
payment request successfully sent, a SMS with OTP
code will be send to the $phone
number, and $response
will contain a subscribe_request_id
and you should save it to the next step verify
.
$response = Zain::verify($otp, $requestId)
$response = Zain::checkSubscription($phone)
$response = Zain::unsubscribe($phone)
// cacheToken($response['token'])
Out of the box the package will login automatically and get the token
and use it for each action initiate
, verify
..etc per request.
If you want cache the token and use it for furthor requests of whole day, you request token
like this:
$token = Zain::token()
And you can cache it and use for next requests for the next 24 hours.
If you set ZAIN_REMEMBER_TOKEN=true
token will be expired after 30 days.
Example of using cached token:
// $token = getCachedToken()
$response = Zain::withToken($token)->initiate($phone)
$response = Zain::withToken($token)->verify($phone)
...
You can enable logging from package config file
'enable_logging' => true,
-
Laravel Sudani SPay API Integration
Laravel Zain is open-sourced software licensed under the MIT license.