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
{
"username": "nkolay_marketplace",
"password": "nkolaypassword",
"merchantNo": "400000904"
}| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| username | String | ✅ | Sizin için oluşturulmuş kullanıcı adı |
| password | String | ✅ | Sizin için oluşturulmuş şifre |
| merchantNo | String | ✅ | Sizin 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
{
"success": true,
"responseCode": "200",
"responseMessage": "SUCCESS",
"data": {
"token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJua29sYXlfbWFya2V0cGxhY2UiLCJleHAiOjE3NjI5NDY0NTZ9...."
}
}| Parametre | Tip | Açıklama |
|---|---|---|
| success | Boolean | İşlemin başarılı olup olmadığı |
| responseCode | String | İşlem sonucu kodu (200 = başarılı) |
| responseMessage | String | İşlem sonucu mesajı |
| data.token | String | JWT 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:
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 —
expzamanı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)
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:
| Anahtar | Açıklama | Kullanım Yeri |
|---|---|---|
| apiSecretKey | SX değeri — ödeme işlemleri için | Ödeme, satıcı ve profil servisleri |
| merchantSecretKey | Merchant 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