Ödeme Oluşturma
3D Secure ödemeyi başlatır ve sonuçlandırırsınız: isteği use3D=true ile gönderir, dönen banka doğrulama formunu müşteriye basar, adresinize gelen imzalı sonucu doğrularsınız; 2 aşamalı moddaysanız ödemeyi CompletePayment ile provizyona alırsınız.
Uç Nokta
Test
POST https://paynkolaytest.nkolayislem.com.tr/Vpos/v1/Payment
Canlı
POST https://paynkolay.nkolayislem.com.tr/Vpos/v1/Payment
Gövde
application/x-www-form-urlencoded
Canlı ortama geçerken: canlı uç yalnızca sunucu tarafından yapılan istekleri kabul eder — localhost üzerinden gönderilen istekler güvenlik hatasıyla reddedilir. Bağlantı için en az TLS 1.2 gerekir.
İstek
İstek alanları Non-3DS ödeme oluşturma isteğiyle birebir aynıdır — tek fark use3D=true gönderilmesidir; imza da aynı hashDatav2 formülüyle üretilir.
use3D=true # diğer tüm alanlar Ödeme Oluşturma isteğiyle aynı3D Formunu Ekrana Basma
Yanıttaki BANK_REQUEST_MESSAGE alanı, bankanın 3D Secure sayfasına yönlendiren bir HTML form içerir. Kaçış karakterlerini (\r, \n, \") temizleyip bu içeriği olduğu gibi tarayıcıya bastığınızda bankanın 3D penceresi açılır ve müşteriden SMS/şifre doğrulaması beklenir:
$data = json_decode($response, true);
$form = $data['BANK_REQUEST_MESSAGE'] ?? '';
// kaçış karakterlerini temizle, formu olduğu gibi ekrana bas
$form = str_replace(["\r", "\n", '\"'], ["", "", '"'], $form);
echo $form;const data = await response.json();
let form = data.BANK_REQUEST_MESSAGE ?? '';
// kaçış karakterlerini temizle, formu olduğu gibi tarayıcıya gönder
form = form.replaceAll('\r', '').replaceAll('\n', '').replaceAll('\"', '"');
res.type('html').send(form);Sonucun Adresinize Dönüşü
Doğrulama tamamlandığında sonuç, form POST olarak successUrl / failUrl adresinize gelir. Başlıca alanlar:
| Alan | Açıklama |
|---|---|
| RESPONSE_CODE | İşlem sonucu — başarı için 2 olmalı |
| RESPONSE_DATA | Sonuç mesajı |
| AUTH_CODE | Banka onay kodu — boş, 0 ya da 00 ise işlem başarısızdır |
| REFERENCE_CODE | Paynkolay işlem referansı (iptal/iade ve tamamlama çağrılarında kullanılır) |
| CLIENT_REFERENCE_CODE | Sizin gönderdiğiniz clientRefCode |
| TRANSACTION_AMOUNT / AUTHORIZATION_AMOUNT | Gönderilen ve provizyonu alınan tutar — gönderdiğiniz tutarla karşılaştırın |
| INSTALLMENT | Taksit sayısı |
| USE_3D · RND | Akış bilgisi ve zaman değeri |
| hashDataV2 | Yanıt imzası — doğrulanmadan sipariş onaylanmaz |
Altın Kural: yalnızca RESPONSE_CODE=2, geçerli bir AUTH_CODE ve doğrulanmış hashDataV2 birlikteyse ödeme başarılıdır; AUTHORIZATION_AMOUNT da gönderdiğiniz tutarla eşleşmelidir. Hazır kontrol fonksiyonu Ödeme Sonucu sayfasındadır.
2 Aşamalı 3D — Ödemeyi Tamamlama (CompletePayment)
2 Aşamalı 3D Secure kullanılıyorsa (AUTOCOMPLETE=false) otomatik provizyon devre dışıdır: doğrulama adımından sonra ödemenin durumu TAMAMLANMAMIŞ İŞLEM olur. Bu durumdaki ödemeyi provizyona almak için CompletePayment çağrısı yaparsınız; provizyon, daha önce alınmış doğrulama verileriyle gerçekleştirilir.
Test
POST https://paynkolaytest.nkolayislem.com.tr/Vpos/v1/CompletePayment
Gövde
application/x-www-form-urlencoded
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| Sx | string | ✅ | Size verilen sx değeriniz |
| ReferenceCode | string | ✅ | Tamamlanacak işlemin referans kodu |
curl -X POST "https://paynkolaytest.nkolayislem.com.tr/Vpos/v1/CompletePayment" \
-d "Sx=118591467|W8a1JLU8A5Cw…FbOO5A==" \
-d "ReferenceCode=IKSIRPF142277040"CompletePayment Yanıtları
{
"RESPONSE_CODE": 2,
"RESPONSE_DATA": "İşlem Başarılı.",
"REFERENCE_CODE": "IKSIRPF142277040",
"USE_3D": true,
"AUTH_CODE": "345344",
"CLIENT_REFERENCE_CODE": "24809740|988922",
"TRANSACTION_AMOUNT": 1,
"AUTHORIZATION_AMOUNT": 1,
"INSTALLMENT": 1,
"RND": "1645700316156",
"hashDataV2": "lunnRyNfDu6pdpNjjlFrlATE4PjUluM8…"
}{
"RESPONSE_CODE": 0,
"RESPONSE_DATA": "referenceCode boş veya null set edilemez"
}Son güncelleme: 11 Eylül 2026