1. Go to this page and download the library: Download salla/ouath2-merchant library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
salla / ouath2-merchant example snippets
alla\OAuth2\Client\Provider\Salla;
$provider = new Salla([
'clientId' => '{client-id}', // The client ID assigned to you by Salla
'clientSecret' => '{client-secret}', // The client password assigned to you by Salla
'redirectUrl' => 'https://yourservice.com/callback_url', // the url for current page in your service
]);
/**
* In case the current callback url doesn't have an authorization_code
* Let's redirect the merchant to the installation/authorization app workflow
*/
if (empty($_GET['code'])) {
$authUrl = $provider->getAuthorizationUrl([
'scope' => 'offline_access',
//Important: If you want to generate the refresh token, set this value as offline_access
]);
header('Location: '.$authUrl);
exit;
}
/**
* The merchant completes the installation/authorization app workflow
* And the callback url has an authorization_code as a parameter
* Let's exchange the authorization_code with access token
*/
try {
$token = $provider->getAccessToken('authorization_code', [
'code' => $_GET['code']
]);
//
// ## Access Token
//
// You should store the access token
// which may use in authenticated requests against the Salla's API
echo 'Access Token: '.$token->getToken()."<br>";
//
// ## Refresh Token
//
// You should store the refresh token somewhere in your system because the access token expired after 14 days,
// so you can use the refresh token after that to generate a new access token without asking any access from the merchant
//
// $token = $provider->getAccessToken(new RefreshToken(), ['refresh_token' => $token->getRefreshToken()]);
//
echo 'Refresh Token: '.$token->getRefreshToken()."<br>";
//
// ## Expire date
//
// This helps you to know when the access token will be expired
// so before that date, you should generate a new access token using the refresh token
echo 'Expire Date : '.$token->getExpires()."<br>";
//
// ## Merchant Details
//
// Using the access token, we may look up details about the merchant.
// --- Same request in Curl ---
// curl --request GET --url 'https://accounts.salla.sa/oauth2/user/info' --header 'Authorization: Bearer <access-token>'
/** @var \Salla\OAuth2\Client\Provider\SallaUser $user */
$user = $provider->getResourceOwner($token);
/**
* {
* "id": 1771165749,
* "name": "Test User",
* "email": "[email protected]",
* "mobile": "+966500000000",
* "role": "user",
* "created_at": "2021-12-31 11:36:57",
* "merchant": {
* "id": 1803665367,
* "username": "dev-j8gtzhp59w3irgsw",
* "name": "dev-j8gtzhp59w3irgsw",
* "avatar": "https://i.ibb.co/jyqRQfQ/avatar-male.webp",
* "store_location": "26.989000873354787,49. 62477639657287",
* "plan": "special",
* "status": "active",
* "domain": "https://salla.sa/YOUR-DOMAIN-NAME",
* "created_at": "2021-12-31 11:36:57"
* }
* }
*/
var_export($user->toArray());
echo 'User ID: '.$user->getId()."<br>";
echo 'User Name: '.$user->getName()."<br>";
echo 'Store ID: '.$user->getStoreID()."<br>";
echo 'Store Name: '.$user->getStoreName()."<br>";
//
// 🥳
//
// You can now save the access token and refresh the token in your database
// with the merchant details and redirect him again to Salla dashboard (https://s.salla.sa/apps)
//
// ## Access to authenticated APIs for the merchant
//
// You can also use the same package to call any authenticated APIs for the merchant
// Using the access token, information can be obtained from a list of endpoints.
//
// --- Same request in Curl ---
// curl --request GET --url 'https://api.salla.dev/admin/v2/orders' --header 'Authorization: Bearer <access-token>'
$response = $provider->fetchResource(
'GET',
'https://api.salla.dev/admin/v2/orders',
$token->getToken()
);
var_export($response);
} catch (\League\OAuth2\Client\Provider\Exception\IdentityProviderException $e) {
// Failed to get the access token or merchant details.
// show an error message to the merchant with good UI
exit($e->getMessage());
}
use \Salla\OAuth2\Client\Facade\SallaOauth;
// Generate the authorization URL with the portant: Set this value to 'offline_access' to generate a refresh token
]);
// Retrieve the access token using the authorization code
$token = SallaOauth::getAccessToken('authorization_code', [
'code' => request()->get('code')
]);
auth()->guard('salla-oauth');
// To check if a user is authenticated:
auth()->guard('salla-oauth')->check();
// To get the authenticated user's ID:
auth()->guard('salla-oauth')->id();
// To get the merchant information of the authenticated user:
auth()->guard('salla-oauth')->merchant();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.