Files
portal-api/app/Http/Services/VNPayService.php
2026-09-28 08:26:29 +07:00

48 lines
1.2 KiB
PHP

<?php
namespace App\Http\Services;
class VNPayService
{
/**
* Verify return data from VNPAY
*
* @param array $data
* @return array
*/
public function verifyPayment(array $data)
{
$vnp_SecureHash = $data['vnp_SecureHash'] ?? '';
$inputData = [];
foreach ($data as $key => $value) {
if (substr($key, 0, 4) == "vnp_") {
$inputData[$key] = $value;
}
}
unset($inputData['vnp_SecureHash']);
ksort($inputData);
$i = 0;
$hashData = "";
foreach ($inputData as $key => $value) {
if ($i == 1) {
$hashData = $hashData . '&' . urlencode($key) . "=" . urlencode($value);
} else {
$hashData = $hashData . urlencode($key) . "=" . urlencode($value);
$i = 1;
}
}
$secureHash = hash_hmac('sha512', $hashData, config('vnpay.hash_secret'));
$result = [
'isValid' => ($secureHash == $vnp_SecureHash),
'data' => $data,
'isSuccess' => (($secureHash == $vnp_SecureHash) && ($data['vnp_ResponseCode'] == '00'))
];
return $result;
}
}