İçeriğe geç

Ödeme Oluştur

Bir ödeme başlatmak için POST /v1/payments çağrılır. Bu istekle bir ödeme isteği oluşturursunuz (tutar, terminal, returnUrl); istek kartsızdır, kart bu çağrıda yer almaz. Yanıtta, alıcının tarayıcısını yönlendireceğiniz bir handoffUrl ve buna bağlı bir paymentRef döner. Kart, sonraki adımda alıcının tarayıcısından handoff sayfasına taşınır; bkz. Kart Handoff.

POST /v1/payments
Authorization: Bearer ptk_live_…
Content-Type: application/json
{
"amount": 125050,
"partnerTxCode": "ORD-2026-8841",
"terminalId": "trm_3Kd9x",
"installment": 1,
"description": "Sipariş #8841",
"returnUrl": "https://magazan.example/odeme/sonuc"
}
AlanZorunluAçıklama
amountEvetTahsil edilecek tutar, kuruş cinsinden tamsayı (1.250,50 TL → 125050). Bkz. Tutar ve Para Birimi.
partnerTxCodeEvetSizin tarafınızda üretilen benzersiz işlem kodu. Idempotency anahtarı olarak kullanılır (aşağıya bkz.).
terminalIdEvetÖdemenin yönlendirileceği terminal. Size ait ve aktif olmalıdır; aksi halde terminal_not_allowed döner. Bugün terminalleri Paytalya sizin için sağlar; size verilen terminalId’yi kullanırsınız (kendi panelinizden self-servis terminal oluşturma ileriki bir sürümde planlanıyor).
installmentHayırTaksit sayısı; tek çekim için 1 (varsayılan).
descriptionHayırİşlem açıklaması.
returnUrlEvet3D dönüşünden sonra alıcının 303 ile yönlendirileceği adres. Paytalya bu adresi doğrular (open-redirect koruması).

201 Created: yanıtta kart ya da banka 3D form verisi bulunmaz; bir paymentRef ve bir handoffUrl döner:

{
"paymentCode": "pay_7Hq2bL",
"status": "initiated",
"paymentRef": "pr_3Kd9xQ1w2E",
"handoffUrl": "https://pay.paytalya.example/checkout"
}
AlanAçıklama
paymentCodeÖdemenin kalıcı kimliği; sorgu ve iade çağrılarında kullanılır.
statusBaşlangıç durumu daima initiated. Bkz. Ödeme Yaşam Döngüsü.
paymentRefTek-kullanımlık ödeme referansı; handoff POST’unda kartla birlikte taşınır. paymentCode’dan ayrıdır; sorgu/iade çağrılarında kullanılmaz.
handoffUrlAlıcının tarayıcısının/WebView’inin kart + paymentRef ile yönlendirileceği handoff sayfası adresi.

Yanıttaki handoffUrl’e, kendi checkout’unuzda topladığınız kartı ve paymentRef’i taşıyacak şekilde alıcının tarayıcısını/WebView’ini yönlendirirsiniz. Banka 3D formunu siz kurmazsınız; auto-submit formunu handoff sayfası üretir. Detay (web form-POST ve mobil WebView): Kart Handoff.

Ödemenin 3D’yi tamamlamak için geçerli süresi 30 dakikadır. Alıcı bu süre içinde tamamlamazsa ödeme expired durumuna geçer.

partnerTxCode sizin tarafınızda benzersiz olmalıdır. Aynı kodla zaten aktif veya başarılı bir ödeme varsa istek duplicate_partner_tx_code hatası ile reddedilir. Bu, ağ tekrarları ya da çift tıklama gibi durumlarda mükerrer tahsilatı önler.

Aynı partnerTxCode ile daha önce oluşturduğunuz ödemeyi GET /v1/payments?partnerTxCode=… ile sorgulayabilirsiniz.

KodSebep
duplicate_partner_tx_codeAynı partnerTxCode ile aktif/başarılı ödeme var.
terminal_not_allowedTerminal size ait değil ya da pasif.
amount_limit_exceededTutar min/maks sınır dışında.
installment_not_allowedKart taksite uygun değil ya da terminalin taksit izni yok.

Tam liste: Hata Kodları.