Pazaryeri Entegrasyonu
Satıcı Yönetimi
Pazaryerinize bağlı alt satıcıları ekleyin, güncelleyin, sorgulayın ve listeleyin. Her satıcı bir ödeme profiliyle ilişkilendirilir.
Satıcı Tipleri
| Tip | Kod | Açıklama | Kimlik |
|---|---|---|---|
| Gerçek Kişi | 1 | Bireysel satıcılar | 11 haneli TCKN |
| Şahıs Şirketi | 2 | Tek kişilik şirketler | 11 haneli TCKN |
| Tüzel Kişi Şirketi | 3 | Limited, anonim şirketler | 10 haneli VKN |
CreateSeller
TESTPOST https://apitest.paynkolay.com.tr/marketplace/v1/seller
PRODPOST https://api.paynkolay.com.tr/marketplace/v1/seller
{
"sellerExternalId": "SELLER_001",
"nameSurname": "Ahmet Yılmaz",
"sellerType": 1,
"tckn": "12345678901",
"vkn": null,
"birthDate": "15.05.1985",
"taxOffice": "Kadıköy",
"contactPerson": "Ahmet Yılmaz",
"email": "ahmet@example.com",
"phoneNumber": "5551234567",
"city": "34",
"address": "Atatürk Cad. No:123 Kadıköy",
"iban": "TR330006100519786457841326",
"accountHolder": "Ahmet Yılmaz",
"apiSecretKey": "sx_value_here",
"active": true,
"mpPaymentProfileExternalId": "PREMIUM_PROFILE"
}| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| sellerExternalId | String | ✅ | Tekil dış ID — kendi sisteminizdeki satıcı ID'si |
| nameSurname | String | ✅ | Ad soyad (gerçek/şahıs) veya şirket adı (tüzel) |
| sellerType | Integer | ✅ | 1 = Gerçek Kişi, 2 = Şahıs Şirketi, 3 = Tüzel Kişi |
| tckn | String | ✅* | 11 haneli TCKN — tip 1 ve 2 için zorunlu |
| vkn | String | ✅* | 10 haneli VKN — tip 3 için zorunlu |
| birthDate | String | ❌ | Doğum tarihi (dd.MM.yyyy) |
| taxOffice | String | ❌ | Vergi dairesi adı |
| contactPerson | String | ❌ | İrtibat kişisi |
| String | ❌ | E-posta adresi | |
| phoneNumber | String | ❌ | Cep telefonu (5551234567 biçiminde) |
| city | String | ❌ | Şehir plaka kodu (34, 06, 35…) |
| address | String | ❌ | Adres |
| iban | String | ✅ | IBAN (TR ile başlamalı, 26 karakter) |
| accountHolder | String | ❌ | Hesap sahibi adı — nameSurname ile aynı olmalı |
| apiSecretKey | String | ✅ | Pazaryerine ait SX değeri |
| active | Boolean | ❌ | Satıcı aktif mi? (varsayılan: true) |
| mpPaymentProfileExternalId | String | ✅ | Atanacak ödeme profili ID'si |
{
"sellerExternalId": "COMPANY_001",
"nameSurname": "Örnek Teknoloji A.Ş.",
"sellerType": 3,
"vkn": "1234567890",
"taxOffice": "Kozyatağı",
"contactPerson": "Mehmet Kaya",
"email": "info@ornekteknoloji.com",
"phoneNumber": "5551112233",
"city": "34",
"address": "Atatürk Mah. Teknoloji Cad. No:100 Kadıköy",
"iban": "TR450006400000115638974521",
"accountHolder": "Örnek Teknoloji A.Ş.",
"apiSecretKey": "sx_value",
"active": true,
"mpPaymentProfileExternalId": "PREMIUM_PROFILE"
}{
"data": {
"sellerExternalId": "SELLER_001",
"active": true,
"nameSurname": "Ahmet Yılmaz",
"sellerType": "Gerçek Kişi",
"tckn": "12345678901",
"birthDate": "1985-05-15",
"vkn": null,
"contactPerson": "Ahmet Yılmaz",
"phoneNumber": "5551234567",
"city": "34",
"address": "Atatürk Cad. No:123 Kadıköy",
"iban": "TR330006100519786457841326",
"accountHolder": "Ahmet Yılmaz",
"paymentProfile": {
"profileExternalId": "PREMIUM_PROFILE",
"marketplaceCode": "MP12345",
"name": "Premium Satıcı Profili",
"mpCommissionRate": 5.00,
"mpCost": 0.50,
"paymentDay": "per",
"valorDateCount": 1,
"active": true,
"createDate": "2025-01-15T10:30:00Z",
"updateDate": "2025-01-15T10:30:00Z"
},
"marketplaceCode": "MP12345",
"taxOffice": "Kadıköy",
"createDate": "2025-01-20T14:25:00Z",
"updateDate": "2025-01-20T14:25:00Z",
"email": "ahmet@example.com"
},
"success": true,
"responseCode": "200",
"responseMessage": "SUCCESS"
}Yanıtta satıcı, bağlı olduğu paymentProfile nesnesi ve marketplaceCode ile birlikte döner. Tüzel kişi için sellerType: 3 + vkn gönderilir, tckn boş bırakılır.
GetSellerById
TESTPOST https://apitest.paynkolay.com.tr/marketplace/v1/seller/get
PRODPOST https://api.paynkolay.com.tr/marketplace/v1/seller/get
{
"apiSecretKey": "sx_value",
"sellerExternalId": "SELLER_001"
}Yanıt, CreateSeller yanıtıyla aynı yapıdadır.
UpdateSeller
TESTPOST https://apitest.paynkolay.com.tr/marketplace/v1/seller/update
PRODPOST https://api.paynkolay.com.tr/marketplace/v1/seller/update
Tüm parametreler gönderilmelidir; sellerType ve tckn/vkn gibi temel kimlik bilgileri değiştirilemez. Güncellenmeyecek alanları mevcut değerleriyle yollayın.
{
"sellerExternalId": "SELLER_001",
"nameSurname": "Ahmet Yılmaz",
"sellerType": 1,
"tckn": "12345678901",
"birthDate": "15.05.1985",
"taxOffice": "Kadıköy",
"contactPerson": "Ahmet Yılmaz",
"email": "ahmet.yeni@example.com",
"phoneNumber": "5559998877",
"city": "34",
"address": "Yeni Adres Bilgisi",
"iban": "TR330006100519786457841326",
"accountHolder": "Ahmet Yılmaz",
"apiSecretKey": "sx_value",
"active": true,
"mpPaymentProfileExternalId": "STANDARD_PROFILE"
}DeleteSellerById
TESTPOST https://apitest.paynkolay.com.tr/marketplace/v1/seller/delete
PRODPOST https://api.paynkolay.com.tr/marketplace/v1/seller/delete
Bekleyen ödemesi olan satıcılar silinemez ve silme işlemi geri alınamaz. Satıcıyı silmek yerine active: false ile pasifleştirmeyi düşünün.
{
"sellerExternalId": "SELLER_001"
}{
"data": null,
"success": true,
"responseCode": "200",
"responseMessage": "SUCCESS"
}GetAllSellerByApiSecretKey
TESTPOST https://apitest.paynkolay.com.tr/marketplace/v1/seller/sellers
PRODPOST https://api.paynkolay.com.tr/marketplace/v1/seller/sellers
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| apiSecretKey | String | ✅ | Pazaryerine ait SX değeri |
| active | Boolean | ❌ | true = sadece aktif, false = sadece pasif, null = tümü |
{
"apiSecretKey": "sx_value",
"active": true
}{
"data": [
{
"sellerExternalId": "SELLER_001",
"active": true,
"nameSurname": "Ahmet Yılmaz",
"sellerType": "Gerçek Kişi",
"tckn": "12345678901",
"birthDate": "1985-05-15",
"paymentProfile": {
"profileExternalId": "PREMIUM_PROFILE",
"name": "Premium Satıcı Profili",
"mpCommissionRate": 5.00
},
"email": "ahmet@example.com"
},
{
"sellerExternalId": "COMPANY_001",
"active": true,
"nameSurname": "Örnek Teknoloji A.Ş.",
"sellerType": "Tüzel Kişi",
"vkn": "1234567890",
"paymentProfile": {
"profileExternalId": "STANDARD_PROFILE",
"name": "Standart Profil",
"mpCommissionRate": 7.00
},
"email": "info@ornekteknoloji.com"
}
],
"success": true,
"responseCode": "200",
"responseMessage": "SUCCESS"
}GetSellersByPaymentProfile
Belirli bir ödeme profiline atanmış satıcıları listeler — örneğin bir profilin komisyonunu değiştirmeden önce hangi satıcıları etkileyeceğini görmek için.
TESTPOST https://apitest.paynkolay.com.tr/marketplace/v1/seller/sellers/byPaymentProfile
PRODPOST https://api.paynkolay.com.tr/marketplace/v1/seller/sellers/byPaymentProfile
{
"apiSecretKey": "sx_value",
"profileExternalId": "PREMIUM_PROFILE",
"active": null
}Geçersiz bir profileExternalId gönderilirse servis HTTP 400 ile status: "REJECTED" içeren hata yanıtı döner.
Göndermeden Önce Doğrulayın
- IBAN:
TRile başlamalı, 26 karakter olmalı (mod-97 kontrolü önerilir) - TCKN: 11 hane, ilk hane 0 olamaz (checksum algoritmasıyla doğrulanabilir)
- VKN: 10 hane (checksum algoritmasıyla doğrulanabilir)
function validateIBAN(iban) {
// TR ile başlamalı ve 26 karakter olmalı
if (!iban.startsWith('TR') || iban.length !== 26) {
throw new Error('Geçersiz IBAN formatı');
}
// IBAN mod-97 kontrolü
const rearranged = iban.substring(4) + iban.substring(0, 4);
const numericIBAN = rearranged.replace(/[A-Z]/g, (char) =>
char.charCodeAt(0) - 55
);
// Büyük sayılarla çalışmak için
const remainder = BigInt(numericIBAN) % 97n;
if (remainder !== 1n) {
throw new Error('IBAN doğrulama hatası');
}
return true;
}function validateTCKN(tckn) {
if (tckn.length !== 11) return false;
const digits = tckn.split('').map(Number);
// İlk hane 0 olamaz
if (digits[0] === 0) return false;
// 10. hane kontrolü
const sum10 = (
(digits[0] + digits[2] + digits[4] + digits[6] + digits[8]) * 7 -
(digits[1] + digits[3] + digits[5] + digits[7])
) % 10;
if (sum10 !== digits[9]) return false;
// 11. hane kontrolü
const sum11 = digits.slice(0, 10).reduce((a, b) => a + b) % 10;
return sum11 === digits[10];
}function validateVKN(vkn) {
if (vkn.length !== 10) return false;
const v = vkn.split('').map(Number);
let sum = 0;
for (let i = 0; i < 9; i++) {
let digit = (v[i] + (9 - i)) % 10;
sum += (digit * Math.pow(2, 9 - i)) % 9;
if (digit !== 0 && (digit * Math.pow(2, 9 - i)) % 9 === 0) sum += 9;
}
return (10 - (sum % 10)) % 10 === v[9];
}Uçtan Uca Örnek
Satıcı servislerini tek sınıfta toplayan çalışır Node.js örneği:
const axios = require('axios');
class SellerManager {
constructor(apiSecretKey, baseURL) {
this.apiSecretKey = apiSecretKey;
this.baseURL = baseURL;
}
async createSeller(sellerData) {
const response = await axios.post(
`${this.baseURL}/seller`,
{
...sellerData,
apiSecretKey: this.apiSecretKey
}
);
return response.data;
}
async getSeller(sellerExternalId) {
const response = await axios.post(
`${this.baseURL}/seller/get`,
{
apiSecretKey: this.apiSecretKey,
sellerExternalId
}
);
return response.data;
}
async updateSeller(sellerData) {
const response = await axios.post(
`${this.baseURL}/seller/update`,
{
...sellerData,
apiSecretKey: this.apiSecretKey
}
);
return response.data;
}
async deleteSeller(sellerExternalId) {
const response = await axios.post(
`${this.baseURL}/seller/delete`,
{ sellerExternalId }
);
return response.data;
}
async listSellers(activeOnly = null) {
const response = await axios.post(
`${this.baseURL}/seller/sellers`,
{
apiSecretKey: this.apiSecretKey,
active: activeOnly
}
);
return response.data;
}
}
// Kullanım
const manager = new SellerManager(
process.env.API_SECRET_KEY,
'https://apitest.paynkolay.com.tr/marketplace/v1'
);
// Satıcı oluştur
const newSeller = await manager.createSeller({
sellerExternalId: "SELLER_123",
nameSurname: "Test Satıcı",
sellerType: 1,
tckn: "12345678901",
iban: "TR330006100519786457841326",
accountHolder: "Test Satıcı",
contactPerson: "Test Satıcı",
mpPaymentProfileExternalId: "PREMIUM_PROFILE",
active: true
});Son güncelleme: 10 Eylül 2026