https://dev.garantibbva.com.tr/sanal...dli#PRHfKfoA2i

[mdstatus] => 7 [mderrormessage] => Guvenlik Kodu hatali [errmsg] => Guvenlik Kodu hatali [clientid] => 30691297 [oid] => 53913a2f6e800818defb28888d188cc8 [response] => Error [procreturncode] => 99 [successurl] => https://localhost/success

güvenlik hatası alıyorum bilgisi olan varmı ?

<?php
require_once "generateHashData.php";

$payment = new Garanti3DPayment();
$inputs = $payment->getFormInputs();
?>

<form method="post" action="https://sanalposprovtest.garantibbva.com.tr/servlet/gt3dengine">
<input type="hidden" name="mode" value="TEST" />
<input type="hidden" name="apiversion" value="512" />
<input type="hidden" name="secure3dsecuritylevel" value="3D_PAY" />
<input type="hidden" name="terminalprovuserid" value="PROVAUT" />
<input type="hidden" name="terminaluserid" value="GARANTI" />
<input type="hidden" name="companyname" value="GARANTI TEST" />
<input type="hidden" name="lang" value="tr" />
<input type="hidden" name="customeripaddress" value="192.168.0.1" />
<input type="hidden" name="customeremailaddress" value="eticaret@garanti.com.tr" />
<input type="hidden" name="refreshtime" value="1" />
<input type="hidden" name="txntimestamp" value="<?php echo gmdate("Y-m-dTH:i:sZ"); ?>" />

<?php foreach ($inputs as $key => $value): ?>
<input type="hidden" name="<?= htmlspecialchars($key) ?>" value="<?= htmlspecialchars($value) ?>" />
<?php endforeach; ?>

<!-- Kart Bilgileri -->
<input name="cardholdername" value="Test User" />
<input name="cardnumber" value="5406697543211173" />
<input name="cardexpiredatemonth" value="04"/>
<input name="cardexpiredateyear" value="27" />
<input name="cardcvv2" value="423" />

<button type="submit">Ödemeyi Gönder</button>
</form>

<?php
class Garanti3DPayment
{
private $terminalId = "30691297"; // 9 haneli olacak şekilde pad edilecek
private $merchantId = "7000679";
private $provUserPassword = "123qweASD/";
private $storeKey = "12345678";
private $successUrl = "https://localhost/success";
private $errorUrl = "https://.cyou/error.php";
private $amount = "100"; // kuruş cinsinden
private $currencyCode = "949"; // TRY
private $installmentCount = ""; // taksit yoksa boş
private $txntype = "sales";
private $orderId;
private $type = ""; // Boş bırakılabilir

public function __construct()
{
// Sipariş ID’si oluşturuluyor (benzersiz)
$this->orderId = md5(uniqid());
}

private function generateSecurityData()
{
$data = $this->provUserPassword . str_pad((int)$this->terminalId, 9, "0", STR_PAD_LEFT);
$sha1 = sha1($data);
return strtoupper($sha1);
}

public function generateHashData()
{
$securityData = $this->generateSecurityData();

$data = $this->terminalId .
$this->orderId .
$this->amount .
$this->currencyCode .
$this->successUrl .
$this->errorUrl .
$this->type .
$this->installmentCount .
$this->storeKey .
$securityData;

$hash = hash("sha512", $data);
return strtoupper($hash);
}

public function getFormInputs()
{
return [
"terminalid" => $this->terminalId,
"terminalmerchantid" => $this->merchantId,
"orderid" => $this->orderId,
"txnamount" => $this->amount,
"txntype" => $this->txntype,
"txncurrencycode" => $this->currencyCode,
"txninstallmentcount" => $this->installmentCount,
"successurl" => $this->successUrl,
"errorurl" => $this->errorUrl,
"secure3dhash" => $this->generateHashData()
];
}
}
?>