Skip to content

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 đó.

  1. Truy cập vào AllPay ở mục Webhooks tạo hook mới, chọn Loại Webhook sau đó điền Webhook URL tạo Token

    allpay document lark

    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" => "+"
// ]