Merhaba kendim için prestashop tabanlı pos yazıyorken kodlarını da paylaşmak istedim

ödeme yapma formu
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<title>Kredi Kartı ile Ödeme</title>
<script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="bg-gray-100 flex items-center justify-center min-h-screen">

<form action="odeme.php" method="POST" class="bg-white p-8 rounded-2xl shadow-md w-full max-w-md space-y-6">
<h2 class="text-2xl font-bold text-center text-gray-800">Ödeme Yap</h2>

<div>
<label class="block text-gray-600 mb-1">Kart Sahibi Adı</label>
<input type="text" name="cardName" value="Test Kullanıcı" placeholder="Ad Soyad" required class="w-full px-4 py-2 border rounded-xl focus:outline-none focus:ring-2 focus:ring-blue-400" />
</div>

<div>
<label class="block text-gray-600 mb-1">Kart Numarası</label>
<input type="text" name="cardNumber" maxlength="19" value="4355093000315232" placeholder="XXXX XXXX XXXX XXXX" required class="w-full px-4 py-2 border rounded-xl focus:outline-none focus:ring-2 focus:ring-blue-400" oninput="formatCardNumber(this)" />
</div>

<div class="flex space-x-4">
<div class="w-1/2">
<label class="block text-gray-600 mb-1">Son Kullanım</label>
<input type="text" name="expiry" maxlength="5" value="1140" placeholder="MM/YY" required class="w-full px-4 py-2 border rounded-xl focus:outline-none focus:ring-2 focus:ring-blue-400" />
</div>
<div class="w-1/2">
<label class="block text-gray-600 mb-1">CVC</label>
<input type="password" autocomplate="off" name="cvv" value="471" maxlength="4" placeholder="CVC" required class="w-full px-4 py-2 border rounded-xl focus:outline-none focus:ring-2 focus:ring-blue-400" />
</div>
</div>

<button type="submit" class="w-full bg-blue-600 text-white font-semibold py-3 rounded-xl hover:bg-blue-700 transition">₺ Ödeme Yap</button>
</form>

<script>
function formatCardNumber(input) {
let value = input.value.replace(/\D/g, "").substring(0,16);
let formatted = "";
for (let i = 0; i < value.length; i += 4) {
formatted += value.substring(i, i + 4) + " ";
}
input.value = formatted.trim();
}
</script>


<?php
echo '<p>'.$_POST['responseMessage'].'</p>';
/* Buradakiler sonuç olarak dönen veridir bunları kullanabilirsiniz
txnCode "1000"
responseCode "VPS-0000"
responseMessage "BAŞARILI"
hostResponseCode "00"
hostMessage "000+ONAY+KODU+XXXXXX"
txnDateTime "2025-04-05T12:06:02.000"
merchantSafeId "20231008172012760876143660674662"
terminalSafeId "30231008172012760876143660674662"
cardHolderName "EK***+AK***"
orderId "51bbffe2-aaa2-4ecf-a177-740564893429"
authCode "089363"
rrn "509624655937"
batchNumber "582"
stan "65"
amount "500.00"
installCount "1"
additionalInstallCount "0"
deferingMonth "0"
ccbEarnedRewardAmount "3.00"
ccbBalanceRewardAmount "1483646.99"
ccbRewardDesc "CHIP+PARA"
pcbEarnedRewardAmount "39.76"
pcbBalanceRewardAmount "332807.13"
pcbRewardDesc "Divarese+axess+may�s"
xcbEarnedRewardAmount "0.00"
xcbBalanceRewardAmount "28036.04"
xcbRewardDesc "MarkaPuan+PREP"
hashParams "txnCode+responseCode+responseMessage+hostResponseCode+hostMessage+txnDateTime+merchantSafeId+terminalSafeId+orderId+cardHolderName+authCode+rrn+batchNumber+stan+amount+installCount+additionalInstallCount+deferingMonth+ccbEarnedRewardAmount+ccbBalanceRewardAmount+ccbRewardDesc+pcbEarnedRewardAmount+pcbBalanceRewardAmount+pcbRewardDesc+xcbEarnedRewardAmount+xcbBalanceRewardAmount+xcbRewardDesc"
hash "xTP01E7uDWLX2ONOXwjyzWqqNIF5i+2kduRqwrEfw2RCKhDqJO1jUhmNlTFJySoh3W/d9+Hjcijrzu1jqrPhZQ=="
*/
?>
</body>
</html>
odeme.php

<?php
if ($_POST)
{
$amount = number_format((float)500, 2, '.', ''); // Ödeme miktarı
$paymentModel = '3D_PAY';
$txnCode = '3000';
$merchantSafeId = '20231008172012760876143660674662'; // Test Kullanıcısı örnek bilgi
$terminalSafeId = '30231008172012760876143660674662'; // Test Kullanıcısı örnek bilgi
$orderId = date('YmdHis'); // Anlık sipariş numarası örnek ECZ-00021
$lang = 'TR';
$ccbRewardAmount = '1.00';
$pcbRewardAmount = '1.00';
$xcbRewardAmount = '1.00';
$currencyCode = '949';
$installCount = '1';
$okUrl = 'https://eoksijen.com/ivirzivir/akbank/';
$failUrl = 'https://eoksijen.com/ivirzivir/akbank/';
$emailAddress = 'test@test.com';
$creditCard = str_replace(' ', '', $_POST['cardNumber']);
$expiredDate = $_POST['expiry'];
$cvv = $_POST['cvc'];
$randomNumber = '4b202386c89c63dc45b60c525c387d5150bb89a48dbbedf8b357296b5f877f7a94005cc6eed80647b8b0a25751c0e09e68ee3208b4bdeedd9f418ddfa9f92b46';
$requestDateTime = '2025-04-05T11:00:55.314';
$secretKey = '32303232303432313136333632303233363567733773355f6731385f72375f6733337437726773335f7674383738763567387437335f5f737272763137736735'; // Test Kullanıcısı örnek bilgi
$data = $paymentModel.$txnCode.$merchantSafeId.$terminalSafeId.$orderId.$lang.$amount.$ccbRewardAmount.$pcbRewardAmount.$xcbRewardAmount.$currencyCode.$installCount.$okUrl.$failUrl.$emailAddress.$creditCard.$expiredDate.$cvv.$randomNumber.$requestDateTime;
function hashToString($data, $secretKey){
$hash = hash_hmac('sha512', $data, $secretKey, true);
return base64_encode($hash);
}
$hash = hashToString($data, $secretKey);
echo '
<html>
<head></head>
<body>
<form id="paymentForm" action="https://virtualpospaymentgatewaypre.akbank.com/securepay" method="POST">
<input type="hidden" name="paymentModel" value="'.$paymentModel.'">
<input type="hidden" name="txnCode" value="'.$txnCode.'">
<input type="hidden" name="merchantSafeId" value="'.$merchantSafeId.'">
<input type="hidden" name="terminalSafeId" value="'.$terminalSafeId.'">
<input type="hidden" name="orderId" value="'.$orderId.'">
<input type="hidden" name="lang" value="'.$lang.'">
<input type="hidden" name="amount" value="'.$amount.'">
<input type="hidden" name="ccbRewardAmount" value="'.$ccbRewardAmount.'">
<input type="hidden" name="pcbRewardAmount" value="'.$pcbRewardAmount.'">
<input type="hidden" name="xcbRewardAmount" value="'.$xcbRewardAmount.'">
<input type="hidden" name="currencyCode" value="'.$currencyCode.'">
<input type="hidden" name="installCount" value="'.$installCount.'">
<input type="hidden" name="okUrl" value="'.$okUrl.'">
<input type="hidden" name="failUrl" value="'.$failUrl.'">
<input type="hidden" name="emailAddress" value="'.$emailAddress.'">
<input type="hidden" name="creditCard" value="'.$creditCard.'">
<input type="hidden" name="expiredDate" value="'.$expiredDate.'">
<input type="hidden" name="cvv" value="'.$cvv.'">
<input type="hidden" name="randomNumber" value="'.$randomNumber.'">
<input type="hidden" name="requestDateTime" value="'.$requestDateTime.'">
<input type="hidden" name="hash" value="'.$hash.'">
<noscript><input type="submit" value="'.$amount.'₺ Ödeme Yap"></noscript>
</form>
<script>
// Sayfa yüklendiğinde form otomatik olarak gönderilsin
window.onload = function() {
document.getElementById("paymentForm").submit();
};
</script>
</body>
</html>';

}
?>
Örnek çalışan kod : https://eoksijen.com/ivirzivir/akbank/

İstek üzerinde farklı sistemlere entegre edilmesi konusunda ücretli destek olabilirim