PHP SDK
thông tin
Code demo:
Tài liệu đầy đủ
Để biết thêm chi tiết về các phương thức, tham số và tính năng nâng cao (PSR-18 HTTP client support, automatic retry, error handling, v.v.), vui lòng xem GitHub Repository.
Cài đặt
Cài đặt thư viện payos/payos thông qua Composer:
composer require payos/payos
Khởi tạo
Khởi tạo đối tượng PayOS với Client ID, API Key và Checksum Key:
use PayOS\PayOS;
$payOS = new PayOS(
clientId: getenv('PAYOS_CLIENT_ID'),
apiKey: getenv('PAYOS_API_KEY'),
checksumKey: getenv('PAYOS_CHECKSUM_KEY')
);
Tạo link thanh toán
Sử dụng phương thức paymentRequests->create() để tạo link thanh toán:
$paymentData = [
'orderCode' => 123456,
'amount' => 50000,
'description' => 'Thanh toán đơn hàng',
'items' => [
[
'name' => 'Sản phẩm A',
'quantity' => 1,
'price' => 50000
]
],
'cancelUrl' => 'https://your-domain.com/cancel',
'returnUrl' => 'https://your-domain.com/success'
];
$paymentLink = $payOS->paymentRequests->create($paymentData);
echo $paymentLink['checkoutUrl'];
Xác minh webhook
Sử dụng phương thức webhooks->verify() để xác thực dữ liệu webhook:
// Trong webhook endpoint của bạn
$webhookPayload = $request->getParsedBody(); // từ PSR-7 request
try {
$verified = $payOS->webhooks->verify($webhookPayload);
// $verified là một WebhookData object
error_log('Thanh toán thành công: ' . $verified->orderCode);
http_response_code(200);
echo 'OK';
} catch (\PayOS\Exceptions\WebhookException $e) {
error_log('Webhook không hợp lệ: ' . $e->getMessage());
http_response_code(400);
echo 'Invalid webhook';
}
Tạo payout
Sử dụng phương thức payouts->batch->create() để tạo payout theo lô:
$referenceId = 'payout_' . time();
$payoutBatch = $payOS->payouts->batch->create([
'referenceId' => $referenceId,
'category' => ['salary'],
'validateDestination' => true,
'payouts' => [
[
'referenceId' => $referenceId . '_1',
'amount' => 2000,
'description' => 'Thanh toán lương',
'toBin' => '970422',
'toAccountNumber' => '0123456789'
],
[
'referenceId' => $referenceId . '_2',
'amount' => 3000,
'description' => 'Thanh toán thưởng',
'toBin' => '970422',
'toAccountNumber' => '0987654321'
]
]
]);
echo 'Payout ID: ' . $payoutBatch['id'];