Ana içeriğe geç

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');
});