alkhatibdev / laravel-zain
Zain DSP API integration
Installs: 25
Dependents: 0
Suggesters: 0
Security: 0
Stars: 11
Watchers: 1
Forks: 1
Open Issues: 0
Type:package
pkg:composer/alkhatibdev/laravel-zain
This package is auto-updated.
Last update: 2025-10-12 14:53:22 UTC
README
Zain DSP API integration with Laravel
Introduction
Laravel Zain is Zain DSP API integration with Laravel, made to simplify the process and API calls and let developers focus on other integration parts and logic. See also Laravel Sudani.
Installation
Requirements
- PHP >=
7.4.x - Laravel >=
7.x
install via composer
composer require alkhatibdev/laravel-zain
Publish Configs
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
Usage
Initial Payment/Subscription
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.
Verify Payment/Subscription
$response = Zain::verify($otp, $requestId)
Check Subscription
$response = Zain::checkSubscription($phone)
Unsubscribe
$response = Zain::unsubscribe($phone) // cacheToken($response['token'])
Login and Cache DSP 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 to cache the token and use it for furthor requests, you can request token like this:
$token = Zain::token()
And you can cache it and use it for each request 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) ...
Logging
You can enable logging from package config file
'enable_logging' => true,
Other Packages
-
Laravel Sudani SPay API Integration
License
Laravel Zain is open-sourced software licensed under the MIT license.
