🧾 Ödeme Almak
🔐 1. Token Oluşturmak
Endpoint
GET /api/cardPayment/token
Açıklama
Güvenlik amaçlı token üretir. Diğer işlemler öncesinde bu token kullanılır. Ödeme almanın ilk adımı tek seferlik güvenlik tokeni oluşturmaktır.
Response: PrepareToken
json
{
"token": "string"
}Notlar
- Token her işlem için tek kullanımlıktır.
- Token süresi sınırlıdır, 5 dakika içinde kullanılmalıdır.
🛠 2. Kart Ödemesine Hazırlık
Endpoint
POST /api/cardPayment/prepare
Açıklama
Kart bilgilerinin ön doğrulaması yapılır. Asıl ödeme işlemi bu adımdan sonra başlatılır.
Request: PrepareCardPaymentRequest
json
{
"creditCard": {
"cardNumber": "string",
"cvv": "string",
"expireMonth": 1,
"expireYear": 2025,
"cardHolderName": "string"
}
}Response: HTTP 200 OK
(Başarılıysa tekrar bu istek döner. Aksi halde ProblemDetails döner.)
İpucu
- Bu adım fraud kontrolü ve BIN analizi gibi işlemler için kullanılır.
💸 3. Kart Ödemesi
Endpoint
POST /api/cardPayment
Açıklama
Karttan ödeme işlemi yapılır. 3D Secure desteklidir.
Request: CardPaymentRequest
json
{
"token": "string",
"amount": 1.0,
"installment": 1,
"referenceCode": "unique-ref-123",
"card": {
"cardNumber": "string",
"cvv": "string",
"expireMonth": 12,
"expireYear": 2025,
"cardHolderName": "string"
},
"useStoredCard": false,
"reward": {
"amount": 1.0,
"useReward": true
},
"invoice": { ... },
"shipping": { ... },
"explanation": "Açıklama",
"use3d": true,
"extraData": {
"property1": "extra1"
},
"currency": "TRY",
"email": "[email protected]",
"phone": "5551234567",
"returnURL": "https://example.com/return",
"chargeType": "directSale",
"paymentSystemId": "UUID",
"nationalNumber": "12345678901",
"products": [
{
"id": "prod-1",
"category": "electronics",
"quantity": 1,
"code": "PRD001",
"description": "Product desc",
"price": 1.0
}
]
}Notlar
referenceCodeher işlem için eşsiz olmalıdır.use3dtrue ise kullanıcı 3D Secure sayfasına yönlendirilir.chargeType:"directSale"ya da"provision"olabilir.extraDataanalitik ya da özel uygulama verileri için uygundur.
🧾 4. Provizyon İşleminin Tamamlanması
Endpoint
POST /api/cardPayment/provisionCommit
Açıklama
Ön provizyon işlemlerinde bloklanan tutarın gerçekten çekilmesini sağlar.
Request: ProvisionCommitRequest
json
{
"referenceCode": "unique-ref-123",
"amount": 1.0
}Notlar
- Sadece
chargeType = "provision"olan işlemler için geçerlidir. - Tutar, ilk provizyon tutarından küçük ya da eşit olmalıdır.
❌ Ortak Hata Formatı: ProblemDetails
json
{
"type": "Error",
"title": "Unauthorized",
"status": 401,
"detail": "API key missing or invalid.",
"instance": "/api/cardPayment"
}İpucu
- Uygulamada her hata bu standart yapı ile yakalanabilir.
📌 Kullanılan Şemalar
🎴 CreditCard
json
{
"cardNumber": "string",
"cvv": "string",
"expireMonth": 1,
"expireYear": 2025,
"cardHolderName": "string"
}🎁 Reward
json
{
"amount": 1.0,
"useReward": true
}🧾 Invoice / Shipping
json
{
"name": "string",
"surname": "string",
"countryCode": "TR",
"city": "string",
"district": "string",
"street1": "string",
"street2": "string",
"number": "string",
"postalCode": "string",
"company": "string",
"phone": "string",
"fax": "string"
}📦 Product
json
{
"id": "string",
"category": "string",
"quantity": 1,
"code": "string",
"description": "string",
"price": 1.0
}📝 Ekstra İpuçları
- Sandbox testleri için test kartları sağlayın (örnek: 4111 1111 1111 1111).
- Rate Limiting uygulanabilir, aşırı istekler throttling ile engellenir.
- Loglama yaparken kart bilgilerini (PAN, CVV) kesinlikle maskeleyin ya da loglamayın.
- 3D Secure işlemleri için
returnURLHTTPS olmalıdır.

