3D Secure Ödeme API Dokümantasyonu
Güvenli ödeme işlemleri ve entegrasyon rehberi
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"
}'