PHP code example of laraditz / tiktok

1. Go to this page and download the library: Download laraditz/tiktok 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/ */

    

laraditz / tiktok example snippets


use Laraditz\TikTok\Facades\TikTok;

// Using facade (recommended)
$shops = TikTok::seller()->shops();

// Using service container
$seller = app('tiktok')->seller()->shops();

// Get all products
$products = TikTok::product()->list(
    query: [
        'page_size' => 20
    ],
    body: [
        'status' => 'ALL',
        'update_time_ge' => 1758211200  // Unix timestamp
    ]
);

// Get specific product
$product = TikTok::product()->get(
    params: [
        'product_id' => 'your_product_id'
    ]
);

// Update SKU quantity of a product
$updateInventory = TikTok::product()->updateInventory(
    params: [
        'product_id' => 'your_product_id'
    ],
    body: [
        'skus' => [
            [
                'id' => 'your_product_sku_id',
                'inventory' => [
                    [
                        'warehouse_id' => 'your_warehouse_id',
                        'quantity' => 17,
                    ]
                ]
            ]
        ]
    ],
);

// Search orders
$orders = TikTok::order()->list(
    query: [
        'page_size' => 50
    ],
    body: [
        'order_status' => 'UNPAID',
        'create_time_ge' => 1758211200,
        'create_time_lt' => 1758297600
    ]
);

// Get order details
$orderDetails = TikTok::order()->detail(
    query: [
        'ids' => 'order_id_1,order_id_2'
    ]
);

// Get order pricing details
$pricing = TikTok::order()->priceDetail(
    params: [
        'order_id' => 'your_order_id'
    ]
);

// Get returns
$returns = TikTok::return()->list(
    query: [
        'page_size' => 20
    ],
    body: [
        'create_time_ge' => 1758211200
    ]
);

// Get specific return records
$returnRecords = TikTok::return()->get(
    params: [
        'return_id' => '168129934203XXXX' // A unique identifier for a TikTok Shop return request.
    ]
);

// Get statements
$statements = TikTok::finance()->statements(
    query: [
        'page_size' => 20,
        'sort_field' => 'statement_time'
    ]
);

// Get transactions for an order
$orderTransactions = TikTok::finance()->transactionsByOrder(
    params: [
        'order_id' => 'your_order_id'
    ]
);

// Get transactions for a statement
$statementTransactions = TikTok::finance()->transactionsByStatement(
    params: [
        'statement_id' => 'your_statement_id'
    ]
);

// Get unsettled transactions
$unsettled = TikTok::finance()->unsettledTransactions(
    query: [
        'page_size' => 20
    ]
);

// Get payments
$payments = TikTok::finance()->payments(
    query: [
        'page_size' => 20
    ]
);

// Get withdrawals
$withdrawals = TikTok::finance()->withdrawals(
    query: [
        'page_size' => 20
    ]
);

// Method 1: Using make() with shop_id
$products = TikTok::make(shop_id: '7010123456556XXXXXX')
    ->product()
    ->list(
        query: ['page_size' => 10],
        body: ['status' => 'ACTIVATE']
    );

// Method 2: Using shopId() method
$orders = TikTok::shopId('7010123456556XXXXXX')
    ->order()
    ->list(
        query: ['page_size' => 50],
        body: ['order_status' => 'UNPAID', 'create_time_ge' => 1758211200]
    );

// You also can set shop context and reuse
$tiktok = TikTok::make(shop_id: '7010123456556XXXXXX');
$products = $tiktok->product()->list(/* ... */);
$orders = $tiktok->order()->list(/* ... */);

use Laraditz\TikTok\Exceptions\TikTokAPIError;

try {
    $products = TikTok::product()->list(
        query: ['page_size' => 10],
        body: ['status' => 'ALL']
    );

    // Handle successful response
    $data = $products['data'];

} catch (TikTokAPIError $e) {
    // Handle API errors
    $errorCode = $e->getCode();
    $errorMessage = $e->getMessage();
    $errorData = $e->getData();

    logger()->error('TikTok API Error', [
        'code' => $errorCode,
        'message' => $errorMessage,
        'data' => $errorData
    ]);
}

// app/Listeners/TikTokWebhookListener.php


namespace App\Listeners;

use Laraditz\TikTok\Events\WebhookReceived;

class TikTokWebhookListener
{
    public function handle(WebhookReceived $event)
    {
        $eventType = $event->eventType;
        $data = $event->data;

        match ($eventType) {
            'ORDER_STATUS_CHANGE' => $this->handleOrderStatusChange($eventType, $data),
            'RETURN_STATUS_CHANGE' => $this->handleReturnStatusChange($eventType, $data),
            // Handle other event types
        }
    }

    private function handleOrderStatusChange(string $eventType, array $data)
    {
        // Your order status change logic here
    }

    private function handleReturnStatusChange(string $eventType, array $data)
    {
        // Your return order logic here
    }
}

// app/Providers/EventServiceProvider.php
protected $listen = [
    \Laraditz\TikTok\Events\WebhookReceived::class => [
        \App\Listeners\TikTokWebhookListener::class,
    ],
    \Laraditz\TikTok\Events\TikTokRequestFailed::class => [
        \App\Listeners\TikTokRequestFailedListener::class,
    ],
];

// Register webhook for order status changes
TikTok::event()->updateWebhook(
    body: [
        'event_type' => 'ORDER_STATUS_CHANGE',
        'address' => 'https://your-app-url.com/tiktok/webhooks/order-status',
    ]
);

// Register webhook for product updates
TikTok::event()->updateWebhook(
    body: [
        'event_type' => 'PRODUCT_UPDATE',
        'address' => 'https://your-app-url.com/tiktok/webhooks/product-update',
    ]
);

// List all registered webhooks
$webhooks = TikTok::event()->webhookList();

// Delete a specific webhook
TikTok::event()->deleteWebhook(
    body: [
        'event_type' => 'ORDER_STATUS_CHANGE'
    ]
);

protected function schedule(Schedule $schedule)
{
    // Refresh tokens daily (tokens expire in 7 days)
    $schedule->command('tiktok:refresh-token')
             ->daily()
             ->withoutOverlapping()
             ->onFailure(function () {
                 // Log failures or send notifications
             });

    // Clean up expired tokens weekly
    $schedule->command('tiktok:flush-expired-token')
             ->weekly();
}

// In your EventServiceProvider
use Laraditz\TikTok\Events\TikTokRequestFailed;

protected $listen = [
    TikTokRequestFailed::class => [
        function (TikTokRequestFailed $event) {
            logger()->error('TikTok API Request Failed', [
                'method' => $event->fqcn . '::' . $event->methodName,
                'query' => $event->query,
                'body' => $event->body,
                'message' => $event->message,
            ]);
        }
    ],
];
bash
php artisan vendor:publish --provider="Laraditz\TikTok\TikTokServiceProvider" --tag="migrations"
bash
php artisan migrate
bash
php artisan vendor:publish --provider="Laraditz\TikTok\TikTokServiceProvider" --tag="config"