Appearance
Gửi thông báo đến Mã nguồn PHP
Thời gian gửi giao dịch
Mặc định giao dịch sẽ quét 60 giây/lần và được gửi đến webhook ngay sau đó.
Truy cập vào AllPay ở mục
Webhooks
tạo hook mới, chọn Loại Webhook sau đó điềnWebhook URL
tạoToken
Lưu ý
Bạn cần lưu lại Token này để dùng trong việc kiểm tra tính hợp lệ, request được gửi từ AllPay đến endpoint.
AllPay sẽ gửi kèm Token này ở headers với key name là
ALLPAY-TOKEN
Kiểm tra token
Đối với Laravel Framework
php
<?php
use Illuminate\Http\Request;
public function endpoint(Request $request){
// Token đã lưu ở bước tạo webhook
$token = 'vEfSiiWYGVo36rWiKMn1e0B....'; //thay thế bằng token của bạn
$allPayToken = $request->header('ALLPAY-TOKEN');
if ($token !== $allPayToken) {
return response([
'success' => false,
'message' => 'Token missmatch !'
], 400);
}
}
Đối với PHP thuần
php
<?php
function getHeader($header) {
foreach ($_SERVER as $name => $value) {
if (substr($name, 0, 5) == 'HTTP_') {
if (str_replace(' ', '-', ucwords(str_replace('_', ' ', substr($name, 5)))) == $header)
return $value;
}
}
return false;
}
// Token đã lưu ở bước tạo webhook
$token = 'vEfSiiWYGVo36rWiKMn1e0B....'; //thay thế bằng token của bạn
$allPayToken = getHeader('ALLPAY-TOKEN');
if ($token !== $allPayToken) {
echo 'Token not match!';
return;
}
Lấy dữ liệu giao dịch
Đối với Laravel Framework
php
<?php
use Illuminate\Http\Request;
public function endpoint(Request $request){
// Token đã lưu ở bước tạo webhook
$token = 'vEfSiiWYGVo36rWiKMn1e0B....'; //thay thế bằng token của bạn
$allPayToken = $request->header('ALLPAY-TOKEN');
if ($token !== $allPayToken) {
return response([
'success' => false,
'message' => 'Token missmatch !'
], 400);
}
dd($request->all());
// result:
// {
// "bank_code": "vcb",
// "amount": 20000,
// "time": "05-06-2024 13:08:22",
// "description": "799893.050624.130821.IBFT TRUONG PHUC DUY KHANG chuyen tien",
// "reference": "5215 - 63864",
// "type": "+"
// }
}
Đối với PHP thuần
php
<?php
function getHeader($header) {
foreach ($_SERVER as $name => $value) {
if (substr($name, 0, 5) == 'HTTP_') {
if (str_replace(' ', '-', ucwords(str_replace('_', ' ', substr($name, 5)))) == $header)
return $value;
}
}
return false;
}
// Token đã lưu ở bước tạo webhook
$token = 'vEfSiiWYGVo36rWiKMn1e0B....'; //thay thế bằng token của bạn
$allPayToken = getHeader('ALLPAY-TOKEN');
if ($token !== $allPayToken) {
echo 'Token not match!';
return;
}
$rawInput = file_get_contents('php://input');
$transaction = json_decode($rawInput, true);
if (json_last_error() != JSON_ERROR_NONE) {
echo 'No data found!';
return;
}
var_dump($transaction);
// result:
// [
// "bank_code" => "vcb",
// "amount" => 20000,
// "time" => "05-06-2024 13:08:22",
// "description" => "799893.050624.130821.IBFT TRUONG PHUC DUY KHANG chuyen tien",
// "reference" => "5215 - 63864",
// "type" => "+"
// ]