Genel Bakış

OdemeNet 3D Secure Ödeme API, güvenli 3D doğrulama ile ödeme işlemleri gerçekleştirmenizi sağlar. Tüm API çağrıları JWT token ile yetkilendirilmelidir.

Önemli: Tüm ödeme işlemleri için geçerli bir JWT token gereklidir. Authorization header'ında Bearer token kullanın.
Desteklenen Ödeme Türü:
  • 3D Secure Ödeme: Güvenli 3D doğrulama ile ödeme
3D Secure Ödeme API
Endpoint Bilgileri
Method POST
URL /api/Payment/Pay3D
Authorization Bearer {token}
Content-Type application/json
Request Parametreleri
Parametre Tip Zorunlu Açıklama
Amount decimal Evet Ödeme tutarı
Currency string Hayır Para birimi (varsayılan: TRY)
Installment int Hayır Taksit sayısı (varsayılan: 1)
CardNo string Evet Kart numarası
CardHolderName string Evet Kart sahibi adı
ExpireMonth string Evet Son kullanma ayı (MM)
ExpireYear string Evet Son kullanma yılı (YY)
Cvv string Evet CVV kodu
SuccessUrl string Evet Başarılı ödeme dönüş URL'i
FailUrl string Evet Başarısız ödeme dönüş URL'i
OrderNumber string Evet Sipariş numarası
Customer.FullName string Hayır Müşteri tam adı
Customer.Email string Hayır Müşteri e-posta adresi
Customer.Phone string Hayır Müşteri telefon numarası
BillingAddress.Name string Hayır Fatura adresi adı
BillingAddress.City string Hayır Fatura adresi şehir
BillingAddress.Country string Hayır Fatura adresi ülke
BillingAddress.Address string Hayır Fatura adresi detay
BillingAddress.ZipCode string Hayır Fatura adresi posta kodu
ShippingAddress.Name string Hayır Teslimat adresi adı
ShippingAddress.City string Hayır Teslimat adresi şehir
ShippingAddress.Country string Hayır Teslimat adresi ülke
ShippingAddress.Address string Hayır Teslimat adresi detay
ShippingAddress.ZipCode string Hayır Teslimat adresi posta kodu
Request Örneği
JSON
{
  "Amount": 100.50,
  "Currency": "TRY",
  "Installment": 1,
  "CardNo": "4508034508034509",
  "CardHolderName": "John Doe",
  "ExpireMonth": "12",
  "ExpireYear": "25",
  "Cvv": "123",
  "SuccessUrl": "https://example.com/success",
  "FailUrl": "https://example.com/fail",
  "OrderNumber": "ORD-2024-001",
  "Customer": {
    "FullName": "John Doe",
    "Email": "john@example.com",
    "Phone": "+905551234567",
    "Country": "Türkiye",
    "City": "İstanbul",
    "Address": "Test Adresi Sokak No: 123",
    "IdentityNumber": "12345678901",
    "TaxNumber": "1234567890"
  },
  "BillingAddress": {
    "Name": "John Doe",
    "City": "İstanbul",
    "Country": "Türkiye",
    "Address": "Fatura Adresi Sokak No: 123",
    "ZipCode": "34000"
  },
  "ShippingAddress": {
    "Name": "John Doe",
    "City": "İstanbul",
    "Country": "Türkiye",
    "Address": "Teslimat Adresi Sokak No: 123",
    "ZipCode": "34000"
  },
  "Products": [
    {
      "Id": "PROD-001",
      "Name": "Test Ürün",
      "Category": "Elektronik",
      "Description": "Test ürün açıklaması",
      "Amount": 100.50
    }
  ]
}
Başarılı Response
JSON
{
  "Success": true,
  "Message": "Ödeme işlemi başlatıldı",
  "PaymentResult": "BASE64_ILE_SIFRELENMIS_HTML_RESPONSE",
  "TransactionId": "123e4567-e89b-12d3-a456-426614174000",
  "PaymentReferenceNumber": "ON-123456789",
  "BankName": "Garanti BBVA",
  "CardAlias": "****4509",
  "Customer": {
    "Id": "123e4567-e89b-12d3-a456-426614174001",
    "FullName": "John Doe",
    "Email": "john@example.com"
  },
  "BillingAddress": {
    "Id": "123e4567-e89b-12d3-a456-426614174002",
    "Name": "John Doe",
    "City": "İstanbul"
  },
  "ShippingAddress": {
    "Id": "123e4567-e89b-12d3-a456-426614174003",
    "Name": "John Doe",
    "City": "İstanbul"
  },
  "Products": 1
}
Not: PaymentResult alanı, banka servisi tarafından dönen HTML response'unun Base64 ile şifrelenmiş halidir. Bu şifreli veri, 3D Secure yönlendirme sayfası oluşturmak için kullanılır.
Hata Response
JSON
{
  "Success": false,
  "Message": "Geçersiz kart bilgileri",
  "ErrorCode": "INVALID_CARD"
}
Hata Kodları ve Mesajları
Hata Kodu Mesaj Açıklama
INVALID_CARD Geçersiz kart bilgileri Kart numarası, CVV veya son kullanma tarihi hatalı
INSUFFICIENT_FUNDS Yetersiz bakiye Kartta yeterli bakiye bulunmuyor
BANK_ERROR Banka hatası Banka tarafında teknik bir hata oluştu
INVALID_AMOUNT Geçersiz tutar Ödeme tutarı sıfırdan büyük olmalı
Kod Örnekleri
C# HttpClient
var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = 
    new AuthenticationHeaderValue("Bearer", token);

var paymentData = new
{
    Amount = 100.50m,
    Currency = "TRY",
    Installment = 1,
    CardNo = "4508034508034509",
    CardHolderName = "John Doe",
    ExpireMonth = "12",
    ExpireYear = "25",
    Cvv = "123",
    SuccessUrl = "https://example.com/success",
    FailUrl = "https://example.com/fail",
    OrderNumber = "ORD-2024-001",
    Customer = new
    {
        FullName = "John Doe",
        Email = "john@example.com",
        Phone = "+905551234567",
        Country = "Türkiye",
        City = "İstanbul",
        Address = "Test Adresi Sokak No: 123",
        IdentityNumber = "12345678901",
        TaxNumber = "1234567890"
    },
    BillingAddress = new
    {
        Name = "John Doe",
        City = "İstanbul",
        Country = "Türkiye",
        Address = "Fatura Adresi Sokak No: 123",
        ZipCode = "34000"
    },
    ShippingAddress = new
    {
        Name = "John Doe",
        City = "İstanbul",
        Country = "Türkiye",
        Address = "Teslimat Adresi Sokak No: 123",
        ZipCode = "34000"
    },
    Products = new[]
    {
        new
        {
            Id = "PROD-001",
            Name = "Test Ürün",
            Category = "Elektronik",
            Description = "Test ürün açıklaması",
            Amount = 100.50m
        }
    }
};

var json = JsonSerializer.Serialize(paymentData);
var content = new StringContent(json, Encoding.UTF8, "application/json");

var response = await client.PostAsync(
    "https://api.odemenet.com/api/Payment/Pay3D", content);
var result = await response.Content.ReadAsStringAsync();
JavaScript Fetch
const paymentData = {
    Amount: 100.50,
    Currency: 'TRY',
    Installment: 1,
    CardNo: '4508034508034509',
    CardHolderName: 'John Doe',
    ExpireMonth: '12',
    ExpireYear: '25',
    Cvv: '123',
    SuccessUrl: 'https://example.com/success',
    FailUrl: 'https://example.com/fail',
    OrderNumber: 'ORD-2024-001'
};

fetch('https://api.odemenet.com/api/Payment/Pay3D', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${token}`
    },
    body: JSON.stringify(paymentData)
})
.then(response => response.json())
.then(data => {
    if (data.Success) {
        window.location.href = data.Data.RedirectUrl;
    } else {
        console.error('Payment error:', data.Message);
    }
});
cURL
curl -X POST "https://api.odemenet.com/api/Payment/Pay3D" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{
    "Amount": 100.50,
    "Currency": "TRY",
    "Installment": 1,
    "CardNo": "4508034508034509",
    "CardHolderName": "John Doe",
    "ExpireMonth": "12",
    "ExpireYear": "25",
    "Cvv": "123",
    "SuccessUrl": "https://example.com/success",
    "FailUrl": "https://example.com/fail",
    "OrderNumber": "ORD-2024-001"
  }'