Ödeme Akışı
PF Gateway API ile uçtan uca ödeme akışının adım adım açıklaması.
PF Gateway API ile iki farklı ödeme yöntemi desteklenmektedir. Aşağıdaki diyagramda akışları seçerek her adımı inceleyebilirsiniz.
Toplam 7 adım — her adıma tıklayarak API referansına gidin.
Her API çağrısı için yeni bir imza oluşturmanız gerekir. Aynı
Nonce/Signature çifti tekrar kullanılamaz. Detaylı bilgi: Kimlik
Doğrulama
Canlı Playground
Aşağıda uçtan uca ödeme akışını gerçek API çağrıları ile çalıştırabilirsiniz. Kart bilgilerini girin, akış tipini seçin ve Tüm Akışı Başlat butonuna tıklayın. Her adımın isteği ve yanıtı anlık olarak görüntülenir.
Playground yalnızca test ortamında çalışır. Test kartlarını kullanın.
7 adım — 3DS doğrulamada duraklar
Kimlik Doğrulama
Kart Bilgileri
Ödeme & 3DS
Callback URL localhost içermemeli — banka public bir adrese yönlendirir.
Adım Adım Detaylı Açıklama
1. İmza Oluşturma
Her API isteğinden önce kimlik doğrulama değerlerini hazırlayın. Production kendi sunucunuzda HMAC-SHA256 ile oluşturun, test ortamında aşağıdaki endpoint'i kullanın:
POST /v1/Signatures/generate-test-signature
Content-Type: application/json
{
"publicKey": "your-public-key",
"merchantNumber": "000001",
"conversationId": "conv-001"
}{
"publicKey": "your-public-key",
"nonce": "1770629965755",
"signature": "dZspDJX18zdC1MnX4d0mhIX0F3IitK0+DQb5ZyxqR3U=",
"conversationId": "conv-001",
"merchantId": "e7051f0d-..."
}Yanıttaki publicKey, nonce, signature, conversationId değerlerini sonraki tüm adımlarda kullanacaksınız.
Kimlik Doğrulama Rehberi
İmza oluşturma algoritması, kod örnekleri ve detaylı açıklama
2. Kart Tokenizasyon
Müşterinin kart bilgilerini güvenli bir token'a dönüştürün. Auth bilgileri form field olarak gönderilir:
POST /v1/Tokens
Content-Type: multipart/form-data
CardNumber=4111111111111111
ExpireMonth=12
ExpireYear=2026
Cvv=123
PublicKey=your-public-key
Nonce=1770629965755
Signature=dZspDJX18zdC1MnX4d0mhIX0F3IitK0+DQb5ZyxqR3U=
ConversationId=conv-001
MerchantNumber=000001{
"cardToken": "w2maVeYtMJeQ8lMeB0RLbzZuHt+H5OWGywvTRphsu5k=",
"signature": "RYYzgryrAzTXxVK7Kor2tDfDsrhn851Efrv94iuITDo=",
"isSucceed": true,
"conversationId": "conv-001"
}Dönen cardToken değerini saklayın. 3D Secure oturum oluşturma ve
ödeme adımlarında kullanılacak.
Kart Token Oluştur
Playground'da deneyin
3. Taksit Sorgulama (Opsiyonel)
Kartın desteklediği taksit seçeneklerini ve komisyon oranlarını sorgulayın. Auth bilgileri header olarak gönderilir:
GET /v1/Installment?BinNumber=411111&Amount=100.00
PublicKey: your-public-key
Nonce: unique-nonce
Signature: hmac-signature
ConversationId: conv-002
MerchantNumber: 000001Taksit Sorgulama
Playground'da deneyin
4. 3D Secure Oturum Oluşturma
Kart token'ı kullanarak 3D Secure oturumu başlatın. Auth bilgileri header olarak gönderilir:
POST /v1/ThreeDS/getthreedsession
Content-Type: application/json
PublicKey: your-public-key
Nonce: unique-nonce
Signature: hmac-signature
ConversationId: conv-003
MerchantNumber: 000001
{
"amount": 100.00,
"pointAmount": 0,
"cardToken": "w2maVeYtMJeQ8lMeB0RLbzZuHt+H5OWGywvTRphsu5k=",
"currency": "TRY",
"paymentType": "Auth",
"installmentCount": 1,
"languageCode": "tr"
}{
"threeDSessionId": "3ds_session_abc123",
"isSucceed": true,
"conversationId": "conv-003"
}Dönen threeDSessionId değerini saklayın. 3D Secure başlatma, sonuç
kontrol ve ödeme adımlarında kullanılacak.
3D Secure Oturum Oluştur
Playground'da deneyin
5. 3D Secure Başlatma
Kullanıcıyı banka doğrulama sayfasına yönlendirin. Auth bilgileri form field olarak gönderilir:
POST /v1/ThreeDS/init3ds
Content-Type: multipart/form-data
ThreeDSessionId=3ds_session_abc123
CallbackUrl=https://yoursite.com/3ds-callback
LanguageCode=tr
ClientIpAddress=192.168.1.1
CardHolderName=John Doe
PublicKey=your-public-key
Nonce=unique-nonce
Signature=hmac-signature
ConversationId=conv-004
MerchantNumber=000001Yanıttan dönen htmlContent'i kullanıcının tarayıcısında render edin. Kullanıcı banka doğrulamasını tamamladığında CallbackUrl'e yönlendirilir.
3D Secure Başlatma
Playground'da deneyin
6. 3D Secure Sonuç Kontrolü
Callback sonrası 3DS doğrulama sonucunu kontrol edin. Auth bilgileri header olarak gönderilir:
POST /v1/ThreeDS/getthreedsessionresult
Content-Type: application/json
PublicKey: your-public-key
Nonce: unique-nonce
Signature: hmac-signature
ConversationId: conv-005
MerchantNumber: 000001
{
"threeDSessionId": "3ds_session_abc123",
"languageCode": "tr"
}Yanıttaki mdStatus değerini kontrol edin. mdStatus = 1 başarılı doğrulama anlamına gelir. Başarılıysa ödeme adımına geçin.
3D Secure Sonuç Sorgulama
Playground'da deneyin
7. Ödeme (Provizyon)
3DS doğrulaması başarılıysa threeDSessionId ile ödemeyi gerçekleştirin. Auth bilgileri header olarak gönderilir:
POST /v1/Payments/provision
Content-Type: application/json
PublicKey: your-public-key
Nonce: unique-nonce
Signature: hmac-signature
ConversationId: conv-006
MerchantNumber: 000001
{
"amount": 100.00,
"pointAmount": 0,
"cardToken": "w2maVeYtMJeQ8lMeB0RLbzZuHt+H5OWGywvTRphsu5k=",
"currency": "TRY",
"paymentType": "Auth",
"integrationMode": "Api",
"installmentCount": 1,
"threeDSessionId": "3ds_session_abc123",
"languageCode": "tr",
"cardHolderName": "John Doe"
}{
"isSucceed": true,
"orderId": "ORD-123456",
"provisionNumber": "PV-789",
"description": "Islem basarili"
}Ödeme (Provizyon)
Playground'da deneyin
3D Secure'suz ödeme sadece belirli üye iş yerleri için aktiftir. Bu yöntemi kullanabilmek için banka/PSP tarafından yetkilendirilmeniz gerekir.
1. İmza Oluşturma
3D Secure'lu akışla aynıdır. Her API isteğinden önce kimlik doğrulama değerlerini hazırlayın:
POST /v1/Signatures/generate-test-signature
Content-Type: application/json
{
"publicKey": "your-public-key",
"merchantNumber": "000001",
"conversationId": "conv-001"
}{
"publicKey": "your-public-key",
"nonce": "1770629965755",
"signature": "dZspDJX18zdC1MnX4d0mhIX0F3IitK0+DQb5ZyxqR3U=",
"conversationId": "conv-001",
"merchantId": "e7051f0d-..."
}Kimlik Doğrulama Rehberi
İmza oluşturma algoritması, kod örnekleri ve detaylı açıklama
2. Kart Tokenizasyon
3D Secure'lu akışla aynıdır. Kart bilgilerini token'a dönüştürün:
POST /v1/Tokens
Content-Type: multipart/form-data
CardNumber=4111111111111111
ExpireMonth=12
ExpireYear=2026
Cvv=123
PublicKey=your-public-key
Nonce=1770629965755
Signature=dZspDJX18zdC1MnX4d0mhIX0F3IitK0+DQb5ZyxqR3U=
ConversationId=conv-001
MerchantNumber=000001{
"cardToken": "w2maVeYtMJeQ8lMeB0RLbzZuHt+H5OWGywvTRphsu5k=",
"signature": "RYYzgryrAzTXxVK7Kor2tDfDsrhn851Efrv94iuITDo=",
"isSucceed": true,
"conversationId": "conv-001"
}Dönen cardToken değerini saklayın. Ödeme adımında kullanılacak.
Kart Token Oluştur
Playground'da deneyin
3. Taksit Sorgulama (Opsiyonel)
3D Secure'lu akışla aynıdır. Taksit seçeneklerini sorgulayabilirsiniz:
GET /v1/Installment?BinNumber=411111&Amount=100.00
PublicKey: your-public-key
Nonce: unique-nonce
Signature: hmac-signature
ConversationId: conv-002
MerchantNumber: 000001Taksit Sorgulama
Playground'da deneyin
4. Ödeme (Provizyon) — Doğrudan
3D Secure adımları atlanır. cardToken ile doğrudan ödemeyi tamamlayın. threeDSessionId göndermenize gerek yoktur:
POST /v1/Payments/provision
Content-Type: application/json
PublicKey: your-public-key
Nonce: unique-nonce
Signature: hmac-signature
ConversationId: conv-003
MerchantNumber: 000001
{
"amount": 100.00,
"pointAmount": 0,
"cardToken": "w2maVeYtMJeQ8lMeB0RLbzZuHt+H5OWGywvTRphsu5k=",
"currency": "TRY",
"paymentType": "Auth",
"integrationMode": "Api",
"installmentCount": 1,
"languageCode": "tr",
"cardHolderName": "John Doe"
}{
"isSucceed": true,
"orderId": "ORD-123456",
"provisionNumber": "PV-789",
"description": "Islem basarili"
}3D Secure'suz ödemede threeDSessionId alanı gönderilmez veya boş bırakılır.
Diğer tüm alanlar aynıdır.
Ödeme (Provizyon)
Playground'da deneyin