Ana içeriğe geç

Hosted Checkout (Yönlendirme)

En kolay entegrasyon yöntemi. Müşteriyi Paylox'un hazır ödeme sayfasına yönlendirirsiniz; ödeme tamamlandığında müşteri sitenize geri döner.

Bu Yöntem Kimler İçin?

  • Hızlı entegrasyon isteyenler
  • Ödeme sayfası tasarımıyla uğraşmak istemeyenler
  • PCI DSS uyumluluğu gereksinimi olanlar
  • Yazılım bilgisi sınırlı olanlar

Genel Akış

Aşağıdaki şema, hosted checkout entegrasyonunun tüm akışını gösterir:


Adım 1: Sunucunuzda Session Oluşturun

Müşteri sitenizde "Ödeme Yap" butonuna tıkladığında, sunucunuzdan (backend) Paylox API'ye bir istek göndererek ödeme oturumu oluşturursunuz.

Neden sunucu tarafından?

API Key'iniz bu istekte gönderilir. Güvenlik açısından bu bilgi asla müşterinin tarayıcısından gönderilmemelidir. Bu yüzden isteği kendi sunucunuzdan yaparsınız.

Python (Flask / Django)

import requests

def create_payment(request):
# 1. Paylox'a "bu tutar için ödeme hazırla" deyin
response = requests.post(
"https://api.jetcheckout.com/api/v1/embedded/session",
json={
"merchant_api_key": "BURAYA_API_KEYINIZI_YAZIN",
"amount": 15000, # 150.00 TL = 15000 kuruş
"currency": "TRY",
"customer": {
"name": "Ahmet",
"surname": "Yılmaz",
"email": "[email protected]",
"phone": "+905551234567",
},
"success_url": "https://yoursite.com/payment/success",
"fail_url": "https://yoursite.com/payment/fail",
"metadata": {
"order_id": "SIP-2025-001", # Kendi sipariş numaranız
}
}
)

data = response.json()

# 2. Müşteriyi Paylox ödeme sayfasına yönlendirin
return redirect(data["checkout_url"])

Node.js (Express)

app.post("/checkout", async (req, res) => {
// 1. Paylox'a "bu tutar için ödeme hazırla" deyin
const response = await fetch("https://api.jetcheckout.com/api/v1/embedded/session", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
merchant_api_key: process.env.PAYLOX_API_KEY,
amount: 15000, // 150.00 TL = 15000 kuruş
currency: "TRY",
customer: {
name: req.body.name,
email: req.body.email
},
success_url: "https://yoursite.com/payment/success",
fail_url: "https://yoursite.com/payment/fail"
})
});

const data = await response.json();

// 2. Müşteriyi Paylox ödeme sayfasına yönlendirin
res.redirect(data.checkout_url);
});

PHP

$ch = curl_init("https://api.jetcheckout.com/api/v1/embedded/session");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: application/json"]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
"merchant_api_key" => "BURAYA_API_KEYINIZI_YAZIN",
"amount" => 15000,
"currency" => "TRY",
"customer" => ["name" => "Ahmet", "email" => "[email protected]"],
"success_url" => "https://yoursite.com/payment/success",
"fail_url" => "https://yoursite.com/payment/fail"
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
$data = json_decode($response, true);

// Müşteriyi Paylox ödeme sayfasına yönlendirin
header("Location: " . $data["checkout_url"]);
exit;

Adım 2: Müşteri Ödeme Yapar

Müşteri, Paylox'un hazır ödeme sayfasına yönlendirilir. Bu sayfada:

  1. Ödeme yöntemini seçer — Kredi kartı, havale/EFT, alışveriş kredisi, vb.
  2. Bilgilerini girer — Kart numarası, son kullanma tarihi, CVC
  3. Taksit seçer (varsa) — Uygun taksit seçenekleri otomatik gösterilir
  4. Ödemeyi tamamlar — 3D Secure doğrulaması gerekirse otomatik yönlendirilir
ipucu

Bu adımda sizin hiçbir şey yapmanıza gerek yok. Ödeme sayfasının tasarımı, güvenliği ve tüm ödeme yöntemleri Paylox tarafından yönetilir.


Adım 3: Sonucu İşleyin

Ödeme tamamlandığında müşteri, sizin belirlediğiniz adrese yönlendirilir:

✅ Başarılı: https://yoursite.com/payment/success?order_id=ORD-xxx&status=success&session_id=ses_xxx
❌ Başarısız: https://yoursite.com/payment/fail?order_id=ORD-xxx&status=failed&session_id=ses_xxx
Güvenlik: Ödemeyi Mutlaka Doğrulayın!

URL'deki parametrelere doğrudan güvenmeyin! Kötü niyetli bir kişi bu URL'i elle oluşturabilir. Mutlaka sunucunuzdan Paylox API'ye sorgu yaparak ödemeyi doğrulayın:

GET /api/v1/payment/status/{order_id}?session_id=ses_xxx

Doğrulama Kodu (Node.js)

app.get("/payment/success", async (req, res) => {
const { order_id, session_id } = req.query;

// Paylox API'den ödeme durumunu doğrulayın
const check = await fetch(
`https://api.jetcheckout.com/api/v1/payment/status/${order_id}?session_id=${session_id}`
);
const result = await check.json();

if (result.success && result.status === "completed") {
// ✅ Ödeme gerçekten başarılı — siparişi onaylayın
res.send("Ödemeniz başarıyla tamamlandı!");
} else {
// ❌ Ödeme doğrulanamadı
res.send("Ödeme doğrulanamadı. Lütfen tekrar deneyin.");
}
});

Doğrulama Kodu (Python)

def payment_success(request):
order_id = request.GET.get("order_id")
session_id = request.GET.get("session_id")

# Paylox API'den ödeme durumunu doğrulayın
resp = requests.get(
f"https://api.jetcheckout.com/api/v1/payment/status/{order_id}",
params={"session_id": session_id}
)
data = resp.json()

if data.get("success") and data.get("status") == "completed":
# ✅ Ödeme gerçekten başarılı
return render(request, "payment_success.html")
else:
# ❌ Ödeme doğrulanamadı
return render(request, "payment_error.html")

Canlı Demo

Bu entegrasyon yöntemini denemek için Playground sayfasını ziyaret edin.