DOCS
Panel Giriş Başvurun

Pazaryeri Entegrasyonu

Kimlik Doğrulama ve Token Alma

Pazaryeri servislerine istek atabilmek için önce authenticate servisi ile JWT token alır, sonra her istekte Authorization başlığında taşırsınız.

Authenticate Servisi

TESTPOST https://apitest.paynkolay.com.tr/marketplace/v1/authenticate

PRODPOST https://api.paynkolay.com.tr/marketplace/v1/authenticate

İstek

İstek — JSON
{
  "username": "nkolay_marketplace",
  "password": "nkolaypassword",
  "merchantNo": "400000904"
}
ParametreTipZorunluAçıklama
usernameStringSizin için oluşturulmuş kullanıcı adı
passwordStringSizin için oluşturulmuş şifre
merchantNoStringSizin için oluşturulmuş üye işyeri numarası

Yukarıdaki değerler örnektir; gerçek username, password ve merchantNo değerleriniz Paynkolay tarafından size özel verilir. Bu bilgileri asla koda gömmeyin — environment variable veya güvenli bir kasada saklayın.

Yanıt

Yanıt — JSON
{
  "success": true,
  "responseCode": "200",
  "responseMessage": "SUCCESS",
  "data": {
    "token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJua29sYXlfbWFya2V0cGxhY2UiLCJleHAiOjE3NjI5NDY0NTZ9...."
  }
}
ParametreTipAçıklama
successBooleanİşlemin başarılı olup olmadığı
responseCodeStringİşlem sonucu kodu (200 = başarılı)
responseMessageStringİşlem sonucu mesajı
data.tokenStringJWT formatında access token — Bearer token olarak kullanılır

Token Kullanımı

Aldığınız token'ı diğer API isteklerinde Authorization başlığında Bearer token olarak gönderin:

Örnek — cURL
curl -X POST https://apitest.paynkolay.com.tr/marketplace/v1/seller/get \
  -H "Authorization: Bearer eyJhbGciOiJIUzUxMiJ9..." \
  -H "Content-Type: application/json" \
  -d '{ "sellerExternalId": "SELLER123" }'

Örnek Kullanım

Token alma ve token ile servis çağrısını uçtan uca gösteren örnekler:

// Token alma
const getToken = async () => {
  const response = await fetch(
    'https://apitest.paynkolay.com.tr/marketplace/v1/authenticate',
    {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        username: process.env.MARKETPLACE_USERNAME,
        password: process.env.MARKETPLACE_PASSWORD,
        merchantNo: process.env.MARKETPLACE_MERCHANT_NO,
      }),
    }
  );

  const data = await response.json();
  return data.data.token;
};

// Token ile API çağrısı
const callAPI = async (token) => {
  const response = await fetch(
    'https://apitest.paynkolay.com.tr/marketplace/v1/seller/get',
    {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({ sellerExternalId: 'SELLER123' }),
    }
  );

  return await response.json();
};
<?php
// Token alma
function getToken($username, $password, $merchantNo) {
    $url = 'https://apitest.paynkolay.com.tr/marketplace/v1/authenticate';

    $data = [
        'username' => $username,
        'password' => $password,
        'merchantNo' => $merchantNo
    ];

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);

    $response = curl_exec($ch);
    curl_close($ch);

    $result = json_decode($response, true);
    return $result['data']['token'];
}

// Token ile API çağrısı
function callAPI($token, $sellerExternalId) {
    $url = 'https://apitest.paynkolay.com.tr/marketplace/v1/seller/get';

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['sellerExternalId' => $sellerExternalId]));
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Authorization: Bearer ' . $token,
        'Content-Type: application/json'
    ]);

    $response = curl_exec($ch);
    curl_close($ch);

    return json_decode($response, true);
}

// Kullanım — kimlik bilgilerini environment'tan okuyun, koda gömmeyin
$token  = getToken(getenv('MARKETPLACE_USERNAME'), getenv('MARKETPLACE_PASSWORD'), getenv('MARKETPLACE_MERCHANT_NO'));
$result = callAPI($token, 'SELLER123');

Token Yönetimi

JWT token'lar belirli bir süre sonra geçersiz olur; geçerlilik süresi token'ın exp alanındadır.

  • Token'ı cache'leyin — her istekte yeni token almak yerine mevcut token'ı kullanın
  • Süre dolmadan yenileyin — exp zamanına bakarak proaktif yenileme yapın
  • 401 Unauthorized aldığınızda token'ı yenileyip isteği tekrarlayın
  • Token'ları güvenli saklayın (memory, secure storage)
Token Yönetimi — istemci sınıfı (401 yeniden denemeli)
class MarketplaceAPIClient {
  constructor(username, password, merchantNo) {
    this.credentials = { username, password, merchantNo };
    this.token = null;
    this.tokenExpiry = null;
  }

  async ensureValidToken() {
    // Token yoksa veya süresi dolmuşsa yeni al
    if (!this.token || Date.now() >= this.tokenExpiry) {
      await this.refreshToken();
    }
    return this.token;
  }

  async refreshToken() {
    const response = await fetch(
      'https://apitest.paynkolay.com.tr/marketplace/v1/authenticate',
      {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(this.credentials),
      }
    );

    const data = await response.json();
    this.token = data.data.token;

    // JWT'den son geçerlilik zamanını oku
    const payload = JSON.parse(atob(this.token.split('.')[1]));
    this.tokenExpiry = payload.exp * 1000; // milisaniyeye çevir
  }

  async callAPI(endpoint, body) {
    const token = await this.ensureValidToken();

    const response = await fetch(endpoint, {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${token}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(body),
    });

    // 401 dönerse token'ı yenileyip isteği bir kez tekrarla
    if (response.status === 401) {
      await this.refreshToken();
      return this.callAPI(endpoint, body);
    }

    return await response.json();
  }
}

Güvenlik Anahtarları

Token dışında, Pazaryeri API'sinde kullanılan diğer anahtarlar — hepsi Paynkolay tarafından size özel verilir:

AnahtarAçıklamaKullanım Yeri
apiSecretKeySX değeri — ödeme işlemleri içinÖdeme, satıcı ve profil servisleri
merchantSecretKeyMerchant gizli anahtarıHash (apiKey) hesaplama
apiSecretKey (iptal)İptal işlemleri için özel SX değeriİptal/iade servisleri

Son güncelleme: 10 Eylül 2026

v1 · Versiyonlar