Skip to content

🧾 Ö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

  • referenceCode her işlem için eşsiz olmalıdır.
  • use3d true ise kullanıcı 3D Secure sayfasına yönlendirilir.
  • chargeType: "directSale" ya da "provision" olabilir.
  • extraData analitik 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 returnURL HTTPS olmalıdır.