Ödeme Linki Oluştur

POST/partner/1.0/payment/link/create
Gerekli scope: collection:linkIdempotency-Key zorunlu

Alıcıya gönderilebilecek bir tahsilat (ödeme) linki oluşturur. Ödeme sonrası opsiyonel olarak ürün kalemlerinden otomatik sipariş oluşturulabilir.

Yanıttaki paymentUrl müşteriye göndereceğiniz adrestir. Link ödendiğinde transactionRef dolar; o andan sonra işlem uçları ile sorgulanır, gerekirse iade edilir.

Örnek

curl -X POST https://<host>/partner/1.0/payment/link/create \
  -H "X-Api-Key: ..." \
  -H "X-Timestamp: ..." \
  -H "X-Signature: ..." \
  -H "Idempotency-Key: create-ORD-1001" \
  -H "Content-Type: application/json" \
  -d '{
  "amount": 100,
  "currency": "TRY",
  "description": "Sipariş ORD-1001",
  "expiryDate": "2026-09-20T12:00:00Z",
  "enableInstallment": true,
  "availableInstallments": "1,3,6",
  "contactRequired": false,
  "email": "customer@example.com"
}'

İstek Body

AlanTipAçıklama
amountzorunludecimalTahsil edilecek tutar.
Varsayılan: 0
cartAmountdecimalSepet tutarı. Belirtilmezse amount ile aynı kabul edilir.
currencyenumPara birimi.
Varsayılan: TRY
TRYUSDEURGBPJPYCHFRUBAZN
descriptionstringLink açıklaması.
orderNumberstringSizin kendi sipariş numaranız. Link ödendiğinde işlem kaydına yazılır ve transaction/search ile bu numaradan aranabilir. Göndermezseniz sistem üretimli bir referans kullanılır ve ödeme kendi siparişinizle eşleşemez.
expiryDatestringLinkin son geçerlilik tarihi (ISO-8601). Geçmiş bir tarih reddedilir.
enableInstallmentbooleanTaksit imkanını etkinleştirir.
Varsayılan: true
availableInstallmentsstringİzin verilen taksit sayıları, virgülle ayrık (örn. "1,3,6,12"). Verilmezse sınır yok.
contactRequiredbooleanÖdeme sayfasında alıcıdan iletişim bilgisi (ad, soyad, telefon zorunlu; e-posta opsiyonel) istenip istenmeyeceği. ADRES İSTEMEZ.
Varsayılan: false
allowPartialPaymentbooleanKısmi ödemeye izin verir (parçalı/bölünmüş link): link toplam tutara ulaşana dek birden fazla ödemeyle tahsil edilebilir.
Varsayılan: false
itemsarrayOpsiyonel sepet kalemleri. Katalog kalemi için productVariantId + quantity, katalog dışı kalem için name + unitPrice + quantity gönderin. Kalem toplamı amount ile birebir eşleşmelidir.
items[].productVariantIdstringKatalog varyant kimliği. Verilirse fiyat otoritesi varyanttır; varyant işletmenize ait olmalıdır.
items[].namestringKalem adı. productVariantId boşsa zorunludur.
items[].unitPricedecimalBirim fiyat. productVariantId boşsa zorunludur ve 0'dan büyük olmalıdır.
items[].quantityintegerAdet. En az 1.
Varsayılan: 1
items[].specialNotestringKalem bazlı özel not (opsiyonel).
emailstringAlıcı e-posta adresi.
phoneCountryCodestringAlıcı telefon ülke kodu.
phoneNumberstringAlıcı telefon numarası.

Yanıt

AlanAnlamı
idLink kimliği. detail / cancel bu değeri alır.
paymentUrlMüşteriye göndereceğiniz ödeme adresi. Adresi kendiniz kurmanız gerekmez.
transactionRefLink ödendiğinde oluşan işlemin referansı; sorgu / iptal / iade zinciri buradan başlar. Ödenmemiş linkte boştur.
referenceNumberSistem üretimli referans numarası.
orderNumberSizin gönderdiğiniz sipariş numaranız.
amountLinkin toplam tutarı.
paidAmount / remainingAmountTahsil edilen ve kalan tutar — kısmi ödemeye açık linklerde anlamlıdır.
currencyPara birimi.
statusLink durumu (PENDING, COMPLETED, REJECTED, EXPIRED, UNDER_REVIEW).
descriptionLink açıklaması.
allowPartialPaymentKısmi ödemeye açık mı.
enableInstallment / availableInstallmentsTaksit imkanı ve izin verilen taksit sayıları.
email / phoneCountryCode / phoneNumberAlıcı iletişim bilgileri.
expiryDate / completedDate / createdDateGeçerlilik, tamamlanma ve oluşturma tarihleri.
Örnek yanıt (content)
{
  "id": "LINK-55012",
  "referenceNumber": "CLNK-55012",
  "orderNumber": "ORD-1001",
  "paymentUrl": "https://<host>/pay/LINK-55012",
  "transactionRef": null,
  "amount": 100,
  "paidAmount": 0,
  "remainingAmount": 100,
  "currency": "TRY",
  "status": "PENDING",
  "allowPartialPayment": false,
  "enableInstallment": true,
  "availableInstallments": "1,3,6",
  "expiryDate": "2026-09-20T12:00:00Z",
  "completedDate": null,
  "createdDate": "2026-08-17T10:15:30.000Z"
}

Sepet Kalemleri

items iki tip kalem kabul eder:

  • Katalog kalemiproductVariantId + quantity. Fiyat sunucudaki varyant kaydından okunur; istekte fiyat göndermezsiniz ve varyant işletmenize ait olmalıdır.
  • Katalog dışı kalemproductVariantId boş bırakılır, name + unitPrice + quantity gönderilir. Katalogu olmayan entegratörler (hizmet bedeli, fatura, kurs ücreti) için.

Her iki tipte de kalem toplamı amount ile birebir eşleşmelidir; eşleşmezse items.total.mismatch ile 406 döner (beklenen tutar mesajda). Kalemlerin para birimi istekteki currency ile aynı olmalıdır.

Anahtar başına kalem tavanı tanımlıysa (link.max_items) aşılması partner.api.item.limit.exceeded üretir.

Hatalar

Mesaj anahtarıHTTPNeden
items.total.mismatch406Kalem toplamı gönderilen amount ile eşleşmiyor.
items.invalid400Katalog dışı kalemde name veya pozitif unitPrice eksik.
partner.api.amount.limit.exceeded406Tutar, API anahtarınızın üst sınırını aşıyor.
partner.api.item.limit.exceeded406Kalem sayısı, API anahtarınızın üst sınırını aşıyor.
gecerlilik.tarihi.guncel.degil400expiryDate geçmiş bir tarih.

İsteği Dene

İsteği Dene
Önizleme modu — değerler kod örneklerini günceller, gerçek istek atılmaz.
Mock