tingee/sdk-php

Tingee Open API SDK for PHP

Maintainers

Package info

github.com/tingeehub/tingee-php

Homepage

Chat

Documentation

pkg:composer/tingee/sdk-php

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 6

Open Issues: 0

0.2.3 2026-04-09 09:24 UTC

This package is auto-updated.

Last update: 2026-05-09 09:43:13 UTC


README

SDK chính thức tích hợp Tingee Open API cho PHP 8.0+

Packagist PHP License: ISC

Cài đặt

composer require tingee/sdk-php

Bắt đầu nhanh

<?php
require_once 'vendor/autoload.php';

use Tingee\Sdk\TingeeClient;

$client = new TingeeClient(
    secretKey:   $_ENV['TINGEE_SECRET_KEY'],
    clientId:    $_ENV['TINGEE_CLIENT_ID'],
    environment: 'prod',  // 'prod' | 'uat', mặc định 'prod'
    timeout:     90,      // giây, mặc định 90
    // baseUrl: 'https://uat-open-api.tingee.vn', // tùy chọn, ghi đè environment
);

$result = $client->merchant->getPaging(
    filter: null, sorting: null, skipCount: 0, maxResultCount: 10
);

if ($result->isSuccess()) {
    print_r($result->getData());
} else {
    echo "Lỗi {$result->getCode()}: {$result->getMessage()}";
}

Cấu hình

Tham số Kiểu Mặc định Mô tả
secretKey string Bắt buộc. Secret key từ Tingee Dashboard
clientId string Bắt buộc. Client ID từ Tingee Dashboard
environment string 'prod' 'prod' | 'uat'
timeout int 90 Timeout (giây)
baseUrl string|null Ghi đè URL (bỏ qua environment)

Laravel

// AppServiceProvider.php
$this->app->singleton(TingeeClient::class, fn () => new TingeeClient(
    secretKey:   config('services.tingee.secret_key'),
    clientId:    config('services.tingee.client_id'),
    environment: config('services.tingee.environment', 'prod'),
));

Gọi API

Các phương thức được nhóm theo tính năng ($client-><group>-><method>()):

// Merchant — lấy danh sách
$result = $client->merchant->getPaging(
    filter: null, sorting: null, skipCount: 0, maxResultCount: 10
);
if ($result->isSuccess()) {
    foreach ($result->getData()->items as $merchant) echo $merchant->name . PHP_EOL;
}

// Shop — lấy danh sách
$result = $client->shop->getPaging(
    filter: null, sorting: null, skipCount: 0, maxResultCount: 10
);

// Direct Debit
$sub = $client->directDebit->getSubscriptionStatus(
    requestId: 'uuid-here',
    subscriptionId: 'uuid-here',
    tokenRef: 'token-ref'
);

Lưu ý: SDK trả về TingeeApiResponse với codemessage. Dùng isSuccess() hoặc kiểm tra getCode() === '00' để xác định thành công — SDK không tự throw khi code !== '00'.

Xác thực Webhook

// index.php / route handler
$signature = $_SERVER['HTTP_X_SIGNATURE']          ?? '';
$timestamp  = $_SERVER['HTTP_X_REQUEST_TIMESTAMP'] ?? '';
$body       = json_decode(file_get_contents('php://input'), true);

$result = $client->verifyWebhookSignature($signature, $timestamp, $body);

if ($result->isError()) {
    http_response_code(401);
    echo json_encode(['error' => $result->message]);
    exit;
}

// Xử lý giao dịch...
echo json_encode(['received' => true]);
// Laravel
Route::post('/webhook/tingee', function (Request $request, TingeeClient $client) {
    $result = $client->verifyWebhookSignature(
        $request->header('x-signature'),
        $request->header('x-request-timestamp'),
        $request->all()
    );
    if ($result->isError()) abort(401, $result->message);
    // Xử lý...
    return response()->json(['received' => true]);
});

Bank Constants

use Tingee\Sdk\Types\BankNameEnum;
use Tingee\Sdk\Types\BankConstants;

BankConstants::getBin(BankNameEnum::VIETCOMBANK)       // "970436"
BankConstants::getShortName(BankNameEnum::VIETCOMBANK) // "Vietcombank"
BankConstants::getFullName(BankNameEnum::VIETCOMBANK)  // "Ngân hàng TMCP Ngoại Thương Việt Nam"

Xem thêm