Skip to main content
3DS (3D Secure) ödeme, güvenli kart ödemelerini desteklemek için geliştirilmiş bir protokoldür. Tahsilat API’de 3DS ödemeler, tek bir istek ile başlatılır.
Ödeme tutarı ile ürünler arasındaki toplam tutarın eşleşmesi gerekmektedir. Aksi takdirde, ödeme reddedilir.
Ödeme işlemi başlatırken products parametresi yerine product_ids ya da customer_id kullanarak tanımlı ürün ya da müşteri bilgilerini kullanabilirsiniz.

1. Doğrudan Ürün Bilgileri ile Ödeme

Ürün bilgilerini doğrudan ödeme isteği içerisinde tanımlayabilirsiniz:
curl -L 'https://api.tahsilat.com/v1/payment/3ds' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Accept-Language: tr' \
-H 'Authorization: Bearer {access_token}' \
-d 'amount=2000' \
-d 'currency=TRY' \
-d 'redirect_url=https://example.com' \
-d 'products=[{"product_name": "test", "price": 1000, "description": "Test Açıklaması 1" }, { "product_name": "Test Ürünü 2", "price": 1000, "description": "Test Açıklaması 2" }]' \
-d 'metadata[0][key]=order_id' \
-d 'metadata[0][value]=order_521234125' \
-d 'metadata[1][key]=description' \
-d 'metadata[1][value]=Test'

2. Ürün ID’leri ile Ödeme

Önceden oluşturulmuş ürünlerin ID’lerini kullanarak ödeme başlatabilirsiniz bu durumda ürünleriniz hakkında raporlama ve analiz yapabilirsiniz: Ürünlerin toplam tutarı, ödeme tutarı ile eşleşmelidir. Eğer ürünlerinizin toplam tutarı ödeme tutarından düşükse, ödeme reddedilir. Ürün oluşturmak için Ürünler sayfasını ziyaret edebilirsiniz.
curl -L 'https://api.tahsilat.com/v1/payment/3ds' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Accept-Language: tr' \
-H 'Authorization: Bearer {access_token}' \
-d 'amount=2000' \
-d 'currency=TRY' \
-d 'redirect_url=https://example.com' \
-d 'product_ids[0]=55437751141488' \
-d 'product_ids[1]=84920468860151' \
-d 'metadata[0][key]=order_id' \
-d 'metadata[0][value]=order_521234125' \
-d 'metadata[1][key]=description' \
-d 'metadata[1][value]=Test'

3. Müşteri ile İlişkilendirilmiş Ödeme

Mevcut bir müşteriyi ödeme ile ilişkilendirmek için customer_id parametresini kullanabilirsiniz. Bu durumda ödeme esnasında müşteri bilgileri tekrardan alınmaz: Müşteri oluşturmak için Müşteriler sayfasını ziyaret edebilirsiniz.
curl -L 'https://api.tahsilat.com/v1/payment/3ds' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Accept-Language: tr' \
-H 'Authorization: Bearer {access_token}' \
-d 'customer_id=20585467989184' \
-d 'amount=2000' \
-d 'currency=TRY' \
-d 'redirect_url=https://example.com' \
-d 'product_ids[0]=55437751141488' \
-d 'product_ids[1]=84920468860151' \
-d 'metadata[0][key]=order_id' \
-d 'metadata[0][value]=order_521234125' \
-d 'metadata[1][key]=description' \
-d 'metadata[1][value]=Test'

4. Başarılı İstek Sonucu

{
    "status": true,
    "message": "Ödeme işlemi başarılı bir şekilde oluşturuldu.",
    "errors": [],
    "error_code": null,
    "data": {
        "transaction_id": 71118888539024,
        "payment_page_url": "https://payment.tahsilat.com/9ee2a500-894c-44ef-b376-f51e5e86c934-1749678957",
        "expires_at": "2025-06-12T01:10:57+03:00"
    }
}

5. Hatalı İstek Sonucu

{
    "status": false,
    "message": "Doğrulama hataları oluştu.",
    "errors": {
        "customer_id": [
            "Girilen customer id kayıtlarımızda bulunmamaktadır."
        ]
    },
    "error_code": 901,
    "data": null
}

Zorunlu ve İsteğe Bağlı Parametreler

customer_id
integer
Ödeme ile ilişkilendirilecek müşteri ID’si. Bu parametre isteğe bağlıdır, ancak müşteri takibi için önerilir.
amount
integer
required
Ödeme tutarı, kuruş cinsinden belirtilmelidir. Örneğin, 10.00 TL için 1000 olarak girilmelidir. Son 2 hane her zaman kuruş olarak kabul edilir.
currency
string
required
Ödeme para birimi. 3 haneli ISO 4217 kodu olarak belirtilmelidir (örn. “TRY” - Türk Lirası).
redirect_url
string
Ödeme sonrası yönlendirilecek URL. Bu parametre boş bırakılır ya da gönderilmezse, varsayılan olarak Tahsilat ödeme sonuç sayfasına yönlendirilir.Query paremetresi olarak sadece “transaction_id” içermelidir. Örneğin: https://www.example.com/odeme-sonucu?transaction_id=1234567890
pre_auth
bool
Ödeme ön provizyon olarak başlatılacaksa true, normal ödeme için false olarak belirtilmelidir. Varsayılan değer false’dir.
products
array
required
Ödeme ile ilişkilendirilecek ürünlerin bilgilerini içeren JSON string formatında dizi. Eğer product_ids gönderilmiyorsa, bu parametre zorunludur.Format: JSON string olarak gönderilmelidir.Ürün alanları:
  • product_name (string, zorunlu): Ürün adı
  • price (integer, zorunlu): Ürün fiyatı (kuruş cinsinden)
  • description (string, isteğe bağlı): Ürün açıklaması
Örnek:
products=[{"product_name":"Premium Üyelik","price":10000,"description":"Aylık premium üyelik"}]
Birden fazla ürün:
products=[{"product_name":"Ürün 1","price":5000},{"product_name":"Ürün 2","price":3000}]
product_ids
array
required
Ödeme ile ilişkilendirilecek ürünlerin ID’lerini içeren dizi. Eğer products gönderilmiyorsa, bu parametre zorunludur. Her ürün için Tahsilat API’de önceden oluşturulmuş ürün ID’leri kullanılmalıdır.
metadata
array
Ödeme ile ilişkilendirilecek ek verileri içeren dizi. Bu parametre isteğe bağlıdır, ancak ödeme raporlaması için önerilir. Örneğin, müşteri türü gibi bilgiler burada saklanabilir.
description
string
Ödeme ile ilgili açıklama. Bu parametre isteğe bağlıdır ve ödeme hakkında ek bilgi sağlamak için kullanılabilir.