Non-3DS
Banka doğrulama adımı olmadan, tek istekte sonuçlanan ödeme akışı: alanları hazırlayın, imzalayın, gönderin.
Genel Bakış
use3D=false gönderildiğinde müşteri hiçbir doğrulama sayfasına yönlendirilmez; provizyon aynı istek içinde alınır ve sonucu anında JSON olarak alırsınız. Kayıtlı kartla tahsilat, talimatlı ödemeler ve hızlı akış gereken senaryolar için idealdir.
3D'siz işlemlerde ters ibraz (chargeback) sorumluluğu üye işyerindedir ve bu akış için üye işyerinizde NON-3DS yetkisinin tanımlı olması gerekir. Emin değilseniz destek ekibine danışın.
Akış
- 1İsteği gönderinKart bilgileri ve hash ile /Vpos/v1/Payment ucuna use3D=false POST edilir.
- 2Provizyon alınırPaynkolay işlemi bankaya iletir; doğrulama adımı yoktur.
- 3Sonucu işleyinYanıt JSON'ındaki RESPONSE_CODE ve hash doğrulamasıyla siparişi sonuçlandırırsınız.
Adımlar
Bu iki adımın ayrıntılı sayfaları bir sonraki aşamada eklenecek; aşağıdaki özet, akışın tamamını uçtan uca gösterir.
Uç Nokta
Test
POST https://paynkolaytest.nkolayislem.com.tr/Vpos/v1/Payment
Canlı
POST https://paynkolay.nkolayislem.com.tr/Vpos/v1/Payment
İstek İmzası (hashDatav2)
Alanlar | ile birleştirilir, SHA-512 ile özetlenip Base64'e çevrilir. İmza her zaman sunucu tarafında üretilir:
// customerKey kart saklanmıyorsa boş string olarak hash'e girer
$hashstr = $sx."|".$clientRefCode."|".$amount."|".$successUrl."|".$failUrl."|".$rnd."|".$customerKey."|".$merchantSecretKey;
$hashDatav2 = base64_encode(hash("sha512", $hashstr, true));const crypto = require('crypto');
// customerKey kart saklanmıyorsa boş string girer — borusu yine de korunur
function hashDatav2(sx, clientRefCode, amount, successUrl, failUrl, rnd, customerKey, merchantSecretKey) {
const raw = [sx, clientRefCode, amount, successUrl, failUrl, rnd, customerKey, merchantSecretKey].join('|');
return crypto.createHash('sha512').update(raw, 'utf8').digest('base64');
}Örnek İstek
# POST https://paynkolaytest.nkolayislem.com.tr/Vpos/v1/Payment (form-data)
sx=118591467|W8a1JLU8A5Cw…FbOO5A==
clientRefCode=SIP-2026-000123
amount=249.90
successUrl=https://magaza.com/odeme/basarili
failUrl=https://magaza.com/odeme/hata
use3D=false
cardNumber=4546711234567894
cardHolderName=Ayşe Yılmaz
month=12 year=2026 cvv=000
installmentNo=1
transactionType=SALES environment=API currencyNumber=949
cardHolderIP=85.100.20.15
rnd=03-09-2026 14:25:11
hashDatav2=lunnRyNfDu6pdpNjjlFrlATE4Pj…Parametreler
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| sx | string | ✅ | Size verilen satış (sx) değeriniz |
| clientRefCode | string | ✅ | Sizin ürettiğiniz tekil referans numarası |
| amount | decimal | ✅ | Tutar — kuruş ayıracı nokta (ör. 249.90) |
| successUrl | string | ✅ | Başarılı sonucun POST edileceği SSL'li adres |
| failUrl | string | ✅ | Başarısız sonucun POST edileceği SSL'li adres |
| use3D | boolean | ✅ | true = 3DS akışı, false = Non-3DS akışı |
| cardNumber | string | ✅ | Kart numarası |
| cardHolderName | string | ✅ | Kart üzerindeki isim |
| month / year | string | ✅ | Son kullanma ayı (12) ve yılı (2026) |
| cvv | string | ✅ | Kartın güvenlik kodu |
| installmentNo | integer | — | Taksit sayısı; tek çekim için 1 |
| transactionType | string | ✅ | SALES gönderilmelidir |
| environment | string | ✅ | API gönderilmelidir |
| currencyNumber | string | ✅ | Para birimi — TL için 949 |
| cardHolderIP | string | ✅ | Müşterinin çıkış IP adresi (IPv4/IPv6) |
| rnd | string | ✅ | İşlem zamanı — ör. 03-09-2026 14:25:11 |
| hashDatav2 | string | ✅ | SHA-512 + Base64 istek imzası (aşağıda) |
| csCustomerKey | string | — | Kart saklanacaksa müşteri anahtarı (TCKN/telefon) |
| csAutoSave | boolean | — | true ise ve yetki varsa kart kaydedilir |
Başarılı Yanıt
Yanıttaki hashDataV2 imzasını doğrulamadan siparişi onaylamayın.
{
"RESPONSE_CODE": 2,
"RESPONSE_DATA": "İşlem Başarılı.",
"REFERENCE_CODE": "IKSIRPF142277040",
"CLIENT_REFERENCE_CODE": "SIP-2026-000123",
"AUTH_CODE": "345344",
"USE_3D": false,
"TRANSACTION_AMOUNT": 249.90,
"INSTALLMENT": 1,
"RND": "1645700316156",
"hashDataV2": "lunnRyNfDu6pdpNjjlFrlATE…"
}Son güncelleme: 3 Eylül 2026