PHP
PHP ile Paylox API entegrasyonu. cURL kullanarak temel işlemleri gösterir.
Gereksinimler
- PHP 7.4+
- cURL extension (genellikle varsayılan olarak yüklüdür)
Yardımcı Fonksiyon
<?php
function payloxRequest(string $endpoint, array $body): array
{
$apiUrl = getenv('PAYLOX_API_URL') ?: 'https://api.jetcheckout.com/api/v1';
$ch = curl_init($apiUrl . $endpoint);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode($body),
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$data = json_decode($response, true);
if ($httpCode >= 400) {
throw new Exception($data['detail'] ?? "HTTP $httpCode");
}
return $data;
}
Session Oluşturma
<?php
function createSession(int $amount, array $customer, array $urls): array
{
return payloxRequest('/embedded/session', [
'merchant_api_key' => getenv('PAYLOX_API_KEY'),
'amount' => $amount,
'currency' => 'TRY',
'customer' => $customer,
'success_url' => $urls['success'],
'fail_url' => $urls['fail'],
]);
}
$session = createSession(15000, [
'name' => 'Ahmet',
'surname' => 'Yılmaz',
'email' => '[email protected]',
], [
'success' => 'https://yoursite.com/payment/success',
'fail' => 'https://yoursite.com/payment/fail',
]);
$sessionId = $session['session_id'];
$checkoutUrl = $session['checkout_url'];
Ödeme Durumu Doğrulama
<?php
function verifyPayment(string $orderId, string $sessionId): array
{
$apiUrl = getenv('PAYLOX_API_URL') ?: 'https://api.jetcheckout.com/api/v1';
$url = "$apiUrl/payment/status/$orderId?session_id=$sessionId";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
$status = verifyPayment($_GET['order_id'], $_GET['session_id']);
if ($status['success'] && $status['status'] === 'completed') {
echo "Ödeme başarılı!";
} else {
echo "Ödeme doğrulanamadı.";
}
Laravel Örneği
<?php
use Illuminate\Http\Request;
Route::post('/api/checkout', function (Request $request) {
$session = createSession(
$request->input('amount'),
$request->input('customer'),
[
'success' => url('/payment/success'),
'fail' => url('/payment/fail'),
]
);
return response()->json([
'session_id' => $session['session_id'],
'checkout_url' => $session['checkout_url'],
]);
});
Route::get('/payment/success', function (Request $request) {
$status = verifyPayment($request->query('order_id'), $request->query('session_id'));
if ($status['success'] && $status['status'] === 'completed') {
return view('payment.success');
}
return view('payment.error');
});