v1.0

Possi Pay Bridge

PayTR iFrame ödeme entegrasyonu için köprü API. Kendi projenizden API anahtarıyla çağırın, ödeme sonucunu callback ile alın.

● Canlı PayTR iFrame v2 JSON + Form POST Callback bildirim

Base URL

HOST https://lisans.possi.com.tr

Kimlik Doğrulama

Her istekte HTTP header olarak API anahtarı gönderin. Anahtarlar proje bazlı verilir.

X-Api-Key: pk_your_project_key
API anahtarı almak için: Possi ile iletişime geçin. Her proje için ayrı anahtar verilir.
POST /api/pay/initiate Ödeme oturumu başlat

Yeni bir ödeme başlatır. PayTR iFrame token ve URL döner. Bu token'ı kendi sayfanızda iFrame içinde gösterin.

İstek Parametreleri

ParametreTürZorunluAçıklama
oidstringProjenizin ürettiği benzersiz sipariş numarası
tutarintÖdeme tutarı kuruş cinsinden (100 = 1 TL)
emailstringÖdeyenin e-posta adresi
adstringÖdeyenin adı soyadı
telstringÖdeyenin telefon numarası
urunstringÜrün/hizmet adı (PayTR sepetinde görünür)
callback_urlstringÖdeme tamamlandığında POST atılacak URL
user_ipstringSon kullanıcının IP adresi (boş bırakılırsa köprü tespit eder)

İstek Örneği — JSON

POST /api/pay/initiate
X-Api-Key: pk_your_project_key
Content-Type: application/json

{
  "oid":          "BAYI-2026-00421",
  "tutar":        50000,
  "email":        "musteri@example.com",
  "ad":           "Ahmet Yılmaz",
  "tel":          "05321234567",
  "urun":         "QR Menü Lisansı - 1 Yıllık",
  "callback_url": "https://sizin-projeniz.com/odeme/sonuc"
}

İstek Örneği — Form POST

POST /api/pay/initiate
X-Api-Key: pk_your_project_key
Content-Type: application/x-www-form-urlencoded

oid=BAYI-2026-00421&tutar=50000&email=musteri%40example.com
  &ad=Ahmet+Y%C4%B1lmaz&urun=QR+Men%C3%BC+Lisans%C4%B1

Başarılı Yanıt 200 OK

{
  "ok":           true,
  "oid":          "BAYI-2026-00421",
  "iframe_token": "abc123xyz...",
  "iframe_url":   "https://www.paytr.com/odeme/guvenli/abc123xyz..."
}

iFrame Gösterimi

<iframe
  src="https://www.paytr.com/odeme/guvenli/{iframe_token}"
  id="paytriframe"
  frameborder="0"
  scrolling="no"
  style="width:100%;height:560px;border:none;"
></iframe>

<script>
window.addEventListener("message", function(e) {
  if (!e.data || typeof e.data !== "object") return;
  if (e.data.func === "iFrameResize") {
    document.getElementById("paytriframe").style.height = e.data.args[0] + "px";
  }
  if (e.data.func === "iFrameCallback") {
    // args.status: "success" | "fail"
    // args.oid: sipariş numarası
    window.location.href = e.data.args.status === "success"
      ? "/odeme-basarili?oid=" + e.data.args.oid
      : "/odeme-basarisiz";
  }
});
</script>
GET /api/pay/status/{oid} Ödeme durumu sorgula

Verilen sipariş numarasının ödeme durumunu döner.

Başarılı Yanıt 200 OK

{
  "ok":          true,
  "oid":         "BAYI-2026-00421",
  "status":      "Odendi",   // Beklemede | Odendi | Iptal
  "tutar":       50000,
  "urun":        "QR Menü Lisansı - 1 Yıllık",
  "email":       "musteri@example.com",
  "odeme_tarih": "2026-07-31T14:22:00Z",
  "kayit_tarih": "2026-07-31T14:15:00Z"
}

Callback Bildirimi

PayTR ödemeyi onayladıktan sonra köprü, callback_url adresinize aşağıdaki form verisiyle POST atar:

AlanDeğer
oidSipariş numarası
statussuccess veya fail
tutarKuruş cinsinden ödenen tutar
Güvenlik notu: Callback'i doğrulamak için ayrıca GET /api/pay/status/{oid} ile durumu teyit edin. Callback içinde gelen veriyi tek başına güvenilir saymayın.

Hata Yanıtları

HTTPKodAçıklama
401UnauthorizedX-Api-Key eksik veya geçersiz
400Bad RequestZorunlu parametre eksik veya hatalı
404Not FoundSipariş bulunamadı (status endpoint)
502Bad GatewayPayTR'den token alınamadı
{
  "ok":    false,
  "error": "'oid' zorunludur."
}