ecomphp/shopee-php

Unofficial Shopee API Client in PHP

v1.3.2 2024-12-01 16:40 UTC

README

Total Downloads Latest Stable Version Latest Unstable Version Build Status License

Shopee Client is a simple SDK implementation of Shopee API.

Installation

Install with Composer

composer require ecomphp/shopee-php

Configure Shopee PHP Client

use EcomPHP\Shopee\Client;

$partner_id = 'your partner id';
$partner_key = 'your partner key';

$client = new Client($partner_id, $partner_key);

Grant token

There is a Auth class to help you getting the token from the shop using oAuth.

$auth = $client->auth();
  1. Create the authentication request
$redirect_uri = 'http://your-redirect-url.com';
$auth->createAuthRequest($redirect_uri);

If you want the function to return the authentication url instead of auto-redirecting, you can set the argument $return (2nd argument) to true.

$authUrl = $auth->createAuthRequest($redirect_uri, true);

// redirect user to auth url
header('Location: '.$authUrl);
  1. Get authentication code when redirected back to Redirect callback URL after app authorization and exchange it for access token
$authorization_code = $_GET['code'];
$shop_id = $_GET['shop_id'];
$token = $auth->getToken($authorization_code, $shop_id);

$access_token = $token['access_token'];
$refresh_token = $token['refresh_token'];

// save your access_token & refresh_token & shop_id for later use
  1. Get authorized Shop cipher
$access_token = 'your access token';
$shop_id = 'your shop id';
$client->setAccessToken($shop_id, $access_token);

Refresh your access token

Access token will be expired soon, so you need refresh new token by using refresh_token

$new_token = $auth->refreshNewToken($refresh_token, $shop_id);

$new_access_token = $new_token['access_token'];
$new_refresh_token = $new_token['refresh_token'];

Usage API Example

You need access_token and shop_id to start using Shopee API

$client = new Client($partner_id, $partner_key);
$client->setAccessToken($shop_id, $access_token);
$products = $client->Product->getItemList([
    'offset' => 0,
    'page_size' => 50,
    'item_status' => 'NORMAL',
]);
$orders = $client->Order->getOrderList([
    'order_status' => 'READY_TO_SHIP',
    'page_size' => 50,
]);