DOCS Panel Giriş Başvurun

Pazaryeri Entegrasyonu

Ödeme İşlemleri

Son kullanıcıdan kartla ödeme alın, tutarı satıcılara ve pazaryerine komisyonlarına göre dağıtın; durum sorgulama, taksit, saklı kart ve tamamlama servisleriyle akışı yönetin.

Stopaj hatırlatma: pazaryeri işlemlerinde %1 stopaj zorunludur — KDV hariç net tutar üzerinden hesaplayıp withholdingTax alanında bildirin. Ayrıntı: Stopaj Uygulaması.

CreatePayment

Yeni bir ödeme başlatır; hem 3D Secure hem 3D'siz işlemler için kullanılır.

TESTPOST https://apitest.paynkolay.com.tr/marketplace/v1/payment/create

PRODPOST https://api.paynkolay.com.tr/marketplace/v1/payment/create

İstek — JSON
{
  "apiKey": "calculated_api_key",
  "apiSecretKey": "sx_value",
  "bankCard": {
    "cardHolder": "AHMET YILMAZ",
    "cardNumber": "4546711234567894",
    "cvv": "123",
    "expiryMonth": "12",
    "expiryYear": "2026",
    "isThreeD": true,
    "registerCard": false
  },
  "installment": 2,
  "isFetchInstallments": false,
  "encodedValue": null,
  "trxCurrency": "TRY",
  "trxAmount": 150.00,
  "trxCode": "ORDER_12345",
  "trxType": "SALES",
  "callbackUrl": "https://yoursite.com/payment-callback",
  "sellerList": [
    { "sellerExternalId": "SELLER_001", "trxAmount": 100.00, "withholdingTax": 0.80, "sellerDiscountAmount": 0.00 },
    { "sellerExternalId": "SELLER_002", "trxAmount": 50.00, "withholdingTax": 0.40, "sellerDiscountAmount": 0.00 }
  ],
  "shippingCost": 0.00,
  "otherAmount": 0.00,
  "mpDiscountAmount": 0.00,
  "totalDiscountAmount": 0.00,
  "marketplaceCode": "MP12345",
  "customerCardInfo": { "mpCustomerKey": "12345678901", "cardAlias": null, "cardTranId": null, "cardToken": null }
}

Temel Parametreler

ParametreTipZorunluAçıklama
apiKeyStringHash ile üretilen anahtar — bkz. Hash Hesaplama
apiSecretKeyStringSX değeri
trxCurrencyStringPara birimi (TRY, USD, EUR)
trxAmountBigDecimalToplam işlem tutarı
trxCodeStringİşlem takip kodu (kendi referansınız)
trxTypeStringİşlem tipi: SALES
callbackUrlString3D sonucunun POST edileceği URL; autoComplete=false ise tamamlamayı yapacak kendi servisiniz
marketplaceCodeStringPazaryeri kodu

Kart Bilgileri — bankCard

ParametreTipZorunluAçıklama
cardHolderString✅*Kart üzerindeki isim (saklı kartta opsiyonel)
cardNumberString✅*Kart numarası (saklı kartta opsiyonel)
cvvString✅*CVV (saklı kartta opsiyonel)
expiryMonth / expiryYearString✅*Son kullanma ay/yıl (saklı kartta opsiyonel)
isThreeDBoolean3D Secure kullanılsın mı?
registerCardBooleanKart saklansın mı? (yalnızca 3D'li işlemlerde)

Taksit Bilgileri

ParametreTipZorunluAçıklama
installmentIntegerTaksit sayısı (1 = tek çekim)
isFetchInstallmentsBooleanTaksit bilgisi Paynkolay'dan mı çekilecek?
encodedValueStringFetchPaymentInstallments'tan dönen encoded değer

Satıcı Listesi — sellerList

ParametreTipZorunluAçıklama
sellerExternalIdStringSatıcının external ID'si
trxAmountBigDecimalSatıcıya ait işlem tutarı
commissionRateBigDecimalÖzel komisyon oranı (profil dışında)
commissionAmountBigDecimalHesaplanmış komisyon tutarı
mpCostBigDecimalİşlem ücreti
withholdingTaxBigDecimalStopaj tutarı
sellerDiscountAmountBigDecimalSatıcı indirim tutarı

Komisyon kuralları: commissionRate ve commissionAmount aynı anda gönderilemez. Özel komisyon uygulanmayacaksa ikisini de null gönderin; yalnız oran gönderirseniz tutar otomatik hesaplanır.

İndirim ve Ücretler / Müşteri Kartı

ParametreTipZorunluAçıklama
shippingCost / otherAmountBigDecimalKargo ve diğer ücretler
mpDiscountAmount / totalDiscountAmountBigDecimalPazaryeri ve toplam indirim tutarları
customerCardInfo.mpCustomerKeyString✅*Müşteri kimliği (TCKN/cep/pasaport) — kart saklama için zorunlu
customerCardInfo.cardAliasStringKart takma adı (saklama için)
customerCardInfo.cardTranId / cardTokenStringSaklı kart ile ödeme için kimlik/token

Yanıt

Yanıt — JSON
{
  "data": {
    "refCode": "REF123456789",
    "trxCode": "ORDER_12345",
    "form": "PGh0bWw+...3D HTML Form Base64..."
  },
  "success": true,
  "responseCode": "200",
  "responseMessage": "SUCCESS"
}

form, 3D işlemlerde Base64 kodlu HTML formudur — decode edip müşteriye render edersiniz.

3D Secure Akışı

MüşteriSunucunuzPaynkolayBanka (3D)Ödeme formu1POST /payment/createisThreeD=true · apiKey2refCode + Base64 form3Formu decode edip göster4SMS / OTP onayı5callbackUrl'e POST6Callback hash doğrula7Sonuç sayfası8
  1. 1CreatePayment gönderinisThreeD=true ile isteği yapın; yanıtta Base64 form döner.
  2. 2Formu render edinBase64'ü çözüp HTML'i müşterinin tarayıcısına basın.
  3. 3Banka doğrulamasıMüşteri banka 3D ekranında SMS/OTP kodunu girer.
  4. 4Callback alınBanka sonucu callbackUrl adresinize POST eder.
  5. 5Hash'i doğrulayınGelen veriyi callback hash formülüyle doğrulayın.
  6. 6Sonucu işleyinresponseCode 200/2 ise siparişi onaylayın, değilse reddedin.
Form Decode + Callback — JavaScript
// Yanıttaki 3D formunu müşteriye göster
if (response.success && response.data.form) {
  const htmlForm = Buffer.from(response.data.form, 'base64').toString('utf-8');
  res.send(htmlForm);
}

// callbackUrl'e gelen sonucu işle
app.post('/payment-callback', (req, res) => {
  if (!verifyCallbackHash(req.body, apiSecretKey)) {
    return res.status(400).send('Invalid hash');
  }

  if (req.body.responseCode === '200' || req.body.responseCode === '2') {
    updateOrderStatus(req.body.trxCode, 'PAID');
  } else {
    updateOrderStatus(req.body.trxCode, 'FAILED');
  }

  res.status(200).send('OK');
});

autoComplete: pazaryeri tanımınızda autoComplete ayarı false ise callback'e gelen POST ödemenin tamamlandığı anlamına gelmez; işlem beklemede kalır ve CompletePaymentExternal servisini çağırarak akışı sizin tamamlamanız gerekir.

GetPaymentStatus

TESTPOST https://apitest.paynkolay.com.tr/marketplace/v1/payment/status

PRODPOST https://api.paynkolay.com.tr/marketplace/v1/payment/status

İstek — JSON
{
  "refCode": "REF123456789",
  "trxCode": "ORDER_12345"
}

refCode veya trxCode'dan en az birini göndermeniz yeterlidir.

DurumAçıklama
SUCCESSBaşarılı işlem
PENDINGİşlem devam ediyor
FAILEDBaşarısız işlem
CANCELLEDİptal edilmiş
REFUNDEDİade yapılmış

GetStoredCardList & Saklı Kartla Ödeme

TESTPOST https://apitest.paynkolay.com.tr/marketplace/v1/payment/storedCardList

PRODPOST https://api.paynkolay.com.tr/marketplace/v1/payment/storedCardList

İstek — JSON
{
  "mpCode": "MP12345",
  "apiSecretKey": "sx_value",
  "mpCustomerKey": "12345678901",
  "apiKey": "calculated_api_key"
}

Bu servisin apiKey değeri ödeme formülünden farklıdır: Base64(SHA512(apiSecretKey | mpCustomerKey | merchantSecretKey)) — bkz. Saklı Kart ApiKey.

Yanıtta müşterinin kartları cardToken, cardTranId, maskeli PAN ve banka bilgileriyle listelenir. Saklı kartla ödemede kart bilgileri gönderilmez:

Saklı Kartla Ödeme — JavaScript
await createPayment({
  // ...diğer parametreler
  bankCard: {
    isThreeD: true,
    registerCard: false
    // kart bilgileri GÖNDERİLMEZ
  },
  customerCardInfo: {
    mpCustomerKey: '12345678901',
    cardTranId: selectedCard.cardTranId  // VEYA cardToken
  }
});

FetchPaymentInstallments

TESTPOST https://apitest.paynkolay.com.tr/marketplace/v1/payment/fetchInstallments

PRODPOST https://api.paynkolay.com.tr/marketplace/v1/payment/fetchInstallments

İstek — JSON
{
  "mpCode": "MP12345",
  "apiSecretKey": "sx_value",
  "cardNumber": "45467112",
  "amount": 1000.00,
  "isCardValid": false
}
ParametreTipZorunluAçıklama
mpCodeStringPazaryeri kodu
apiSecretKeyStringSX değeri
cardNumberStringKart numarasının ilk 6-8 hanesi veya tamamı
amountBigDecimalİşlem tutarı
isCardValidBooleantrue ise kart geçerliliği kontrol edilir

Yanıttaki her taksit seçeneği installmentAmount, komisyon bilgileri ve bir encodedValue içerir. Kullanıcının seçtiği taksidin encodedValue'sunu CreatePayment'ta isFetchInstallments: true ile gönderirsiniz.

UpdatePaymentCommission

TESTPOST https://apitest.paynkolay.com.tr/marketplace/v1/payment/updateCommission

PRODPOST https://api.paynkolay.com.tr/marketplace/v1/payment/updateCommission

İstek — JSON
{
  "mpCode": "MP12345",
  "refCode": "REF123456789",
  "trxCode": "ORDER_12345",
  "sellerList": [
    { "sellerExternalId": "SELLER_001", "commissionAmount": 5.00, "trxAmount": 100.00, "withholdingTax": 0.80, "sellerDiscountAmount": 0.00 }
  ]
}

Bu servis yalnızca ödeme işlemiyle aynı gün kullanılabilir; ertesi gün çalışmaz. Stopaj bilgisini de güncellemeyi unutmayın.

CompletePaymentExternal

autoComplete = false olan pazaryerlerinde ödeme otomatik tamamlanmaz: form akışı bitince callback önce sizin servisinize gelir; kendi validasyon ve kayıt işlemlerinizden sonra bu servisi çağırarak akışı tamamlarsınız.

autoCompleteDavranış
trueVarsayılan — ödeme, form akışı tamamlanınca otomatik tamamlanır; ek çağrı gerekmez.
falseÖdeme beklemede kalır; validasyon/DB kaydı sonrası CompletePaymentExternal çağrısıyla siz tamamlarsınız.

Ayar üye işyeri bazında Paynkolay tarafından yapılandırılır; false çalışmak için entegrasyon ekibiyle iletişime geçin.

  1. 1CreatePaymentcallbackUrl olarak kendi servisinizi verin.
  2. 2Callback POSTForm sonucu REFERENCE_CODE dahil servisinize POST edilir.
  3. 3Kayıt oluşturunİşlemi kendi veritabanınıza yazın.
  4. 4ValidasyonKendi iş mantığı kontrollerinizi çalıştırın.
  5. 5CompletePaymentExternalreferenceCode + satış SX ile tamamlayın.
  6. 6Sonuçİşlem sonucu döner, akış tamamlanır.

TESTPOST https://apitest.paynkolay.com.tr/marketplace/v1/payment/completePaymentExternal

PRODPOST https://api.paynkolay.com.tr/marketplace/v1/payment/completePaymentExternal

Server-to-server JSON POST'tur; JWT token gerektirmez — kimlik doğrulama satış SX ile yapılır. Bu servis, tekil üye işyeri (Vpos) tarafındaki CompletePayment'tan farklıdır ve yalnızca pazaryeri işlemleri içindir. Bu akışta callback alanları büyük harflidir (REFERENCE_CODE, RESPONSE_CODE…); RESPONSE_CODE=2 + boş AUTH_CODE, işlemin tamamlama beklediği anlamına gelir.

İstek — JSON
{
  "referenceCode": "qv6UkBD2m1Ora+tS6UHTW36hm0s4+0RG1pUsoAF6xBuM3cW8ZbIupXOYVpUW6983ZXKzL4qXdE01MEwD+ObnAnA6pOg=",
  "apiSecretKey": "sx_value"
}
ParametreTipZorunluAçıklama
referenceCodeStringCallback'te REFERENCE_CODE alanında gelen Base64 değer — değiştirilmeden gönderilir, tek kullanımlıktır
apiSecretKeyStringSatış SX değeri

Başarılı yanıt responseCode: "2" ile işlem detaylarını (authCode, tutarlar, komisyon, hash…) döner. Hata durumlarında da HTTP 200 gelir — sonucu success ve responseCode alanlarından kontrol edin. Aynı referenceCode ile ikinci deneme "Aynı referans kodu ile birden fazla deneme yapılmıştır." hatası verir.

UpdateDeliveryDate

Teslimat bazlı valör (valorCalculationType = "D") profiliyle çalışan satıcı işlemleri için teslim tarihini bildirir; bildirilmeden satıcıya ödeme yapılmaz.

TESTPOST https://apitest.paynkolay.com.tr/marketplace/v1/transaction/update-delivery

PRODPOST https://api.paynkolay.com.tr/marketplace/v1/transaction/update-delivery

İstek — JSON
{
  "apiSecretKey": "sx_value",
  "sellerTransactionList": [
    { "refCode": "IKSIRPF471619", "deliveryDate": "18.12.2025", "sellerExternalId": "SELLER_001" },
    { "refCode": "IKSIRPF471619", "deliveryDate": "18.12.2025", "sellerExternalId": "SELLER_002" }
  ]
}

Kurallar: deliveryDate her işlem için yalnızca 1 kez girilebilir ve sonradan değiştirilemez; her zaman güncellemenin yapıldığı günün tarihi olmalıdır (dd.MM.yyyy). Sepette birden çok satıcı varsa her satıcının teslimatı ayrı liste elemanı olarak bildirilir. Güncellenemeyen işlemlerin referansları yanıtın message alanında döner.

Bu Bölümde Pazaryeri Entegrasyonu

Son güncelleme: 5 Eylül 2026

v7 · Versiyonlar