48 lines
1.2 KiB
PHP
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;
|
|
}
|
|
}
|