2Checkout API: Ödeme İşleme için Eksiksiz Entegrasyon Rehberi (2026)

Ashley Innocent

Ashley Innocent

20 March 2026

2Checkout API: Ödeme İşleme için Eksiksiz Entegrasyon Rehberi (2026)

Kurumsal İçin Apidog

Şirket İçi (On-Premises) Dağıtım

SSO ve RBAC

SOC 2 Uyumlu

Apidog Enterprise'ı Keşfedin

TL;DR

2Checkout API (şimdi Verifone), geliştiricilerin ödemeleri işlemesine, abonelikleri yönetmesine ve e-ticaret işlemlerini programlı olarak yürütmesine olanak tanır. API anahtarlarını kullanarak JSON tabanlı kimlik doğrulama ile siparişler, müşteriler, ürünler ve webhook'lar için RESTful uç noktalarını destekler. Bu kılavuz, ilk kurulumdan gelişmiş webhook yönetimine kadar her şeyi kapsar.

Giriş

Ödeme işleme, herhangi bir çevrimiçi işletmenin omurgasıdır. Yanlış yaparsanız gelir kaybedersiniz. Doğru yaparsanız küresel pazarların kilidini açarsınız. 2Checkout API (yakın zamanda Verifone olarak yeniden markalandı), dünya çapında 45.000'den fazla satıcının ödemelerini yöneterek her yıl milyarlarca işlem gerçekleştirir.

İşte gerçek: Alışveriş yapanların %67'si ödeme sürtüşmesi nedeniyle sepetlerini terk ediyor. Sağlam bir ödeme API entegrasyonu doğrudan kârınızı etkiler.

Bu kılavuz, 2Checkout API entegrasyon sürecinin tamamını anlatmaktadır. Kimlik doğrulama, ödeme işleme, abonelik yönetimi, webhook yönetimi ve hata giderme konularını öğreneceksiniz. Sonunda, üretime hazır bir ödeme entegrasyonuna sahip olacaksınız.

💡
Apidog, API entegrasyon testini basitleştirir. 2Checkout uç noktalarınızı test edin, webhook yüklerini doğrulayın ve kimlik doğrulama sorunlarını tek bir çalışma alanında giderin. 2Checkout OpenAPI spesifikasyonunu içe aktarın, yanıtları taklit edin ve test senaryolarını ekibinizle paylaşın.
düğme

2Checkout API Nedir?

2Checkout (şimdi Verifone Digital Commerce olarak faaliyet gösteriyor) ödeme işleme ve abonelik yönetimi için bir RESTful API sağlar. API şunları yönetir:

Temel Özellikler

Özellik Açıklama
RESTful Tasarım JSON yükleri ile standart HTTP yöntemleri (GET, POST, PUT, DELETE)
Sandbox Ortamı Gerçek işlemler yapmadan ödemeleri test edin
Webhook Desteği Sipariş etkinlikleri için gerçek zamanlı bildirimler
Tokenizasyon Kart bilgilerini saklamadan güvenli ödeme verisi yönetimi
Küresel Uyum PCI DSS Seviye 1, GDPR, PSD2 ve 3D Secure 2.0

API Mimari Genel Bakış

2Checkout, versiyonlandırılmış bir REST API yapısı kullanır:

https://api.2checkout.com/1/
https://api.2checkout.com/2/

Sürüm 2, geliştirilmiş abonelik yönetimi ve webhook yönetimi ile şu anda önerilen sürümdür.

Başlarken: Kimlik Doğrulama Kurulumu

Adım 1: 2Checkout Hesabınızı Oluşturun

API'ye erişmeden önce bir satıcı hesabına ihtiyacınız var:

  1. 2Checkout (Verifone) kayıt sayfasını ziyaret edin
  2. İşletme doğrulamasını tamamlayın (işletme belgeleri gerektirir)
  3. Onayı bekleyin (genellikle 24-48 saat sürer)
  4. API kimlik bilgilerini almak için Kontrol Panelinize erişin

Adım 2: API Anahtarlarını Alın

Kontrol Panelinizi kullanarak Entegrasyonlar > API Anahtarları bölümüne gidin:

Güvenlik notu: API anahtarlarını asla sürüm kontrolüne kaydetmeyin. Ortam değişkenlerini kullanın:

# .env dosyası
TWOCHECKOUT_PRIVATE_KEY="özel_anahtarınız_buraya"
TWOCHECKOUT_PUBLIC_KEY="herkese_açık_anahtarınız_buraya"
TWOCHECKOUT_WEBHOOK_SECRET="webhook_sırrınız_buraya"

Adım 3: Sandbox ve Üretim Ortamı

2Checkout ayrı ortamlar sağlar:

Ortam Temel URL Kullanım Durumu
Sandbox https://sandbox.2checkout.com/api/ Geliştirme ve test
Üretim https://api.2checkout.com/ Canlı işlemler

Geliştirme sırasında sandbox kimlik bilgilerini kullanın. Gerçek ödemeleri işlemeye hazır olduğunuzda yalnızca üretim anahtarlarına geçin.

Adım 4: Kimlik Doğrulama Yöntemleri

2Checkout iki kimlik doğrulama yaklaşımını destekler:

Yöntem 1: API Anahtarı Kimlik Doğrulaması (Önerilen)

Özel anahtarınızı istek başlığına ekleyin:

const response = await fetch('https://api.2checkout.com/1/orders', {
  method: 'GET',
  headers: {
    'X-Api-Key': process.env.TWOCHECKOUT_PRIVATE_KEY,
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  }
});

Yöntem 2: HMAC İmza Kimlik Doğrulaması

Gelişmiş güvenlik için istekleri HMAC-SHA256 ile imzalayın:

const crypto = require('crypto');

function generateSignature(payload, privateKey) {
  const hash = crypto
    .createHmac('sha256', privateKey)
    .update(JSON.stringify(payload))
    .digest('hex');
  return hash;
}

// Kullanım
const payload = { order_id: '12345', amount: 99.99 };
const signature = generateSignature(payload, privateKey);

const response = await fetch('https://api.2checkout.com/1/orders', {
  method: 'POST',
  headers: {
    'X-Api-Key': process.env.TWOCHECKOUT_PRIVATE_KEY,
    'X-Signature': signature,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(payload)
});
API Key Authentication

Ödeme İşleme: Temel Uç Noktalar

Tek Seferlik Sipariş Oluşturma

/orders uç noktası ile tek bir ödeme işleyin:

const createOrder = async (customerData, productData) => {
  const payload = {
    currency: 'USD',
    customer: {
      email: customerData.email,
      first_name: customerData.firstName,
      last_name: customerData.lastName,
      phone: customerData.phone,
      billing_address: {
        address1: customerData.address,
        city: customerData.city,
        state: customerData.state,
        zip: customerData.zip,
        country: customerData.country
      }
    },
    items: [
      {
        name: productData.name,
        quantity: productData.quantity,
        price: productData.price,
        product_code: productData.sku
      }
    ],
    payment_method: {
      type: 'card',
      card_token: customerData.cardToken // İstemci tarafı tokenizasyondan
    }
  };

  const response = await fetch('https://api.2checkout.com/1/orders', {
    method: 'POST',
    headers: {
      'X-Api-Key': process.env.TWOCHECKOUT_PRIVATE_KEY,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(payload)
  });

  return await response.json();
};

Beklenen Yanıt

{
  "order_id": "ORD-2026-001234",
  "status": "approved",
  "amount": 99.99,
  "currency": "USD",
  "customer_id": "CUST-789456",
  "transaction_id": "TXN-9876543210",
  "created_at": "2026-03-20T10:30:00Z"
}

Ödeme Hatalarını Yönetme

Her zaman uygun hata yönetimini uygulayın:

try {
  const result = await createOrder(customer, product);

  if (result.error) {
    // Belirli hata kodlarını ele alın
    switch (result.error.code) {
      case 'CARD_DECLINED':
        // Müşteriden farklı bir kart isteyin
        break;
      case 'INSUFFICIENT_FUNDS':
        // Uygun mesajı gösterin
        break;
      case 'INVALID_CVV':
        // CVV'nin yeniden girilmesini isteyin
        break;
      default:
        // Genel hatayı günlüğe kaydedin ve gösterin
        console.error('Ödeme başarısız:', result.error);
    }
  }
} catch (error) {
  // Ağ veya sunucu hatası
  console.error('API isteği başarısız oldu:', error);
}

Yaygın Hata Kodları

Hata Kodu HTTP Durumu Açıklama Çözüm
CARD_DECLINED 402 Kart reddedildi Farklı bir ödeme yöntemi isteyin
INVALID_CARD 400 Geçersiz kart numarası Kart girişini doğrulayın
EXPIRED_CARD 400 Kartın süresi dolmuş Güncel son kullanma tarihini isteyin
INVALID_CVV 400 CVV doğrulama başarısız oldu CVV'yi yeniden isteyin
INSUFFICIENT_FUNDS 402 Yeterli bakiye yok Alternatif ödeme önerin
DUPLICATE_ORDER 409 Sipariş zaten işlenmiş Kopyaları kontrol edin
INVALID_CURRENCY 400 Desteklenmeyen para birimi Para birimi kodunu doğrulayın
API_KEY_INVALID 401 Kimlik doğrulama başarısız oldu API anahtarını kontrol edin

Müşteri Yönetimi

Müşteri verilerini yönetmek, abonelik tabanlı işletmeler ve tekrar eden alışverişler için çok önemlidir. 2Checkout eksiksiz bir müşteri API'si sunar.

Müşteri Oluşturma

const createCustomer = async (customerData) => {
  const payload = {
    email: customerData.email,
    first_name: customerData.firstName,
    last_name: customerData.lastName,
    phone: customerData.phone,
    company: customerData.company,
    billing_address: {
      address1: customerData.address,
      address2: customerData.address2 || '',
      city: customerData.city,
      state: customerData.state,
      zip: customerData.zip,
      country: customerData.country
    },
    shipping_address: customerData.shippingAddress || null,
    tax_exempt: false,
    language: 'tr' // TR'ye çevrildi
  };

  const response = await fetch('https://api.2checkout.com/1/customers', {
    method: 'POST',
    headers: {
      'X-Api-Key': process.env.TWOCHECKOUT_PRIVATE_KEY,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(payload)
  });

  return await response.json();
};

Müşteri Yanıtı

{
  "customer_id": "CUST-2026-123456",
  "email": "john.doe@example.com",
  "first_name": "John",
  "last_name": "Doe",
  "created_at": "2026-03-20T10:00:00Z",
  "updated_at": "2026-03-20T10:00:00Z",
  "payment_methods": [],
  "subscriptions": [],
  "order_history": []
}

Müşteri Detaylarını Alma

const getCustomer = async (customerId) => {
  const response = await fetch(
    `https://api.2checkout.com/1/customers/${customerId}`,
    {
      method: 'GET',
      headers: {
        'X-Api-Key': process.env.TWOCHECKOUT_PRIVATE_KEY,
        'Content-Type': 'application/json'
      }
    }
  );

  return await response.json();
};

Müşteri Bilgilerini Güncelleme

const updateCustomer = async (customerId, updates) => {
  const response = await fetch(
    `https://api.2checkout.com/1/customers/${customerId}`,
    {
      method: 'PUT',
      headers: {
        'X-Api-Key': process.env.TWOCHECKOUT_PRIVATE_KEY,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(updates)
    }
  );

  return await response.json();
};

Müşteri Silme

const deleteCustomer = async (customerId) => {
  const response = await fetch(
    `https://api.2checkout.com/1/customers/${customerId}`,
    {
      method: 'DELETE',
      headers: {
        'X-Api-Key': process.env.TWOCHECKOUT_PRIVATE_KEY
      }
    }
  );

  return response.status === 204; // Başarılı olduğunda içerik yok
};

Not: Aktif abonelikleri veya ödenmemiş bakiyeleri olan bir müşteriyi silme işlemi başarısız olacaktır. Önce abonelikleri iptal edin.

Gelişmiş Entegrasyon Desenleri

Güvenli Yeniden Denemeler İçin Idempotency

Ödeme API'leri, yinelenen ücretlendirmeleri önlemek için idempotent istekleri desteklemelidir:

const createIdempotentOrder = async (payload, idempotencyKey) => {
  const response = await fetch('https://api.2checkout.com/1/orders', {
    method: 'POST',
    headers: {
      'X-Api-Key': process.env.TWOCHECKOUT_PRIVATE_KEY,
      'Content-Type': 'application/json',
      'X-Idempotency-Key': idempotencyKey // Sipariş başına benzersiz
    },
    body: JSON.stringify(payload)
  });

  return await response.json();
};

// Sipariş başına benzersiz anahtar oluşturun (veritabanınızda saklayın)
const idempotencyKey = `order_${userId}_${Date.now()}`;

İstek zaman aşımına uğrarsa ancak 2Checkout tarafından işlenmişse, aynı anahtarla yeniden denemek iki kez ücretlendirmek yerine orijinal sonucu döndürür.

3D Secure 2.0'ı Yönetme (AB Uyumluluğu)

Avrupalı müşteriler için 3D Secure 2.0 kimlik doğrulaması PSD2 kapsamında zorunludur:

const createOrderWith3DS = async (payload) => {
  const response = await fetch('https://api.2checkout.com/1/orders', {
    method: 'POST',
    headers: {
      'X-Api-Key': process.env.TWOCHECKOUT_PRIVATE_KEY,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      ...payload,
      three_ds: {
        enabled: true,
        challenge_required: 'preferred', // veya AB için 'mandatory'
        notification_url: 'https://site_adresiniz.com/3ds-geri-bildirim'
      }
    })
  });

  const result = await response.json();

  // 3DS yönlendirmesini ele alın
  if (result.three_ds_redirect_url) {
    // Müşteriyi kimlik doğrulama için bankalarına yönlendirin
    res.redirect(result.three_ds_redirect_url);
  }

  return result;
};

Çoklu Para Birimi Fiyatlandırması

Fiyatları yerel para birimlerinde gösterirken, temel para biriminizde ödeme yapın:

const getLocalizedPrice = async (basePrice, targetCurrency) => {
  const response = await fetch(
    `https://api.2checkout.com/1/rates?from=USD&to=${targetCurrency}`,
    {
      headers: {
        'X-Api-Key': process.env.TWOCHECKOUT_PRIVATE_KEY
      }
    }
  );

  const rates = await response.json();
  return basePrice * rates.rate;
};

// Kullanım
const eurPrice = await getLocalizedPrice(99.99, 'EUR');
console.log(`Fiyat: EUR ${eurPrice.toFixed(2)}`);

Abonelik Yükseltmeleri İçin Oransal Hesaplama

Müşteriler döngü ortasında yükseltme yaptığında, oransal ücretleri hesaplayın:

const upgradeSubscription = async (subscriptionId, newPlanId) => {
  const response = await fetch(
    `https://api.2checkout.com/1/subscriptions/${subscriptionId}/upgrade`,
    {
      method: 'POST',
      headers: {
        'X-Api-Key': process.env.TWOCHECKOUT_PRIVATE_KEY,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        plan_id: newPlanId,
        proration: 'immediate', // Farkı şimdi ücretlendirin
        invoice_proration: true  // Faturada kalem olarak göster
      })
    }
  );

  return await response.json();
};

Yaygın Sorunları Giderme

Sorun: Webhook'lar Gelmiyor

Belirtiler: Siparişler işleniyor ancak sisteminiz güncellenmiyor.

Teşhis:

// 2Checkout kontrol panelindeki webhook teslimat günlüklerini kontrol edin
// Başarısız teslimat girişimlerini veya 200 dışı yanıtları arayın

Çözümler:

  1. Uç noktanın 5 saniye içinde 200 OK döndürdüğünü doğrulayın
  2. SSL sertifikası geçerliliğini kontrol edin (HTTPS olmalıdır)
  3. Güvenlik duvarınızda 2Checkout IP aralıklarını beyaz listeye ekleyin
  4. Webhook imza doğrulama mantığını gözden geçirin
  5. Üretimden önce webhook simülatörü ile test edin

Sorun: Test Ödemeleri Sandbox'ta Başarısız Oluyor

Belirtiler: Tüm test kartları sandbox ortamında reddediliyor.

Çözümler:

  1. Sandbox API anahtarlarını kullandığınızı doğrulayın (üretim değil)
  2. Sandbox temel URL'sini doğrulayın: https://sandbox.2checkout.com/api/
  3. Doğru test kart numaralarını kullanın (Test bölümüne bakın)
  4. Sandbox hesap durumunu kontrol edin (etkinliksizlikten sonra süresi dolabilir)

Sorun: Abonelik Yenilemeleri Sessizce Başarısız Oluyor

Belirtiler: Abonelikler aktif görünüyor ancak yenilemeler işlenmiyor.

Teşhis:

// Abonelik ödeme geçmişini sorgulayın
const history = await fetch(
  `https://api.2checkout.com/1/subscriptions/${subId}/payments`,
  { headers: { 'X-Api-Key': privateKey } }
);

Çözümler:

  1. Müşteri ödeme yöntemi son kullanma tarihini kontrol edin
  2. Kontrol Paneli'ndeki borç tahsilat ayarlarını gözden geçirin
  3. subscription.payment_failed için webhook teslimini doğrulayın
  4. auto_renew bayrağının etkinleştirildiğini onaylayın

Sorun: Para Birimi Dönüşüm Tutarsızlıkları

Belirtiler: Tahsil edilen miktar beklenen dönüşümden farklı.

Neden: 2Checkout, dalgalanan günlük döviz kurlarını kullanır.

Çözüm:

Sorun: AVS (Adres Doğrulama) Hataları

Belirtiler: Geçerli kartlar adres uyuşmazlığı nedeniyle reddediliyor.

Çözümler:

  1. Adres otomatik tamamlama kullanın (Google Places, Lob)
  2. Ödeme sırasında ZIP/posta kodunu zorunlu kılın
  3. Yumuşak AVS uygulayın (reddetmek yerine uyarın)
  4. Müşterinin fatura adresini güncellemesine izin verin

Abonelik Yönetimi

2Checkout, yinelenen faturalandırmada üstündür. Abonelikleri nasıl yöneteceğiniz aşağıda açıklanmıştır:

Abonelik Oluşturma

const createSubscription = async (customerId, planId) => {
  const payload = {
    customer_id: customerId,
    plan_id: planId,
    start_date: new Date().toISOString(),
    billing_cycle: 'monthly', // veya 'annual', 'weekly'
    payment_method: {
      type: 'card',
      card_token: 'tok_card_tokenized'
    },
    options: {
      trial_days: 14, // İsteğe bağlı ücretsiz deneme
      auto_renew: true
    }
  };

  const response = await fetch('https://api.2checkout.com/1/subscriptions', {
    method: 'POST',
    headers: {
      'X-Api-Key': process.env.TWOCHECKOUT_PRIVATE_KEY,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(payload)
  });

  return await response.json();
};

Abonelik Yanıtı

{
  "subscription_id": "SUB-2026-567890",
  "status": "active",
  "plan_id": "PLAN-PREMIUM-MONTHLY",
  "customer_id": "CUST-789456",
  "current_period_start": "2026-03-20T00:00:00Z",
  "current_period_end": "2026-04-20T00:00:00Z",
  "trial_end": "2026-04-03T00:00:00Z",
  "amount": 29.99,
  "currency": "USD"
}

Abonelik Güncelleme

Planları değiştirin, ödeme yöntemlerini güncelleyin veya miktarları ayarlayın:

const updateSubscription = async (subscriptionId, updates) => {
  const payload = {
    ...updates
    // Örnekler:
    // plan_id: 'PLAN-ENTERPRISE-MONTHLY',
    // quantity: 5,
    // payment_method: { card_token: 'new_token' }
  };

  const response = await fetch(
    `https://api.2checkout.com/1/subscriptions/${subscriptionId}`,
    {
      method: 'PUT',
      headers: {
        'X-Api-Key': process.env.TWOCHECKOUT_PRIVATE_KEY,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(payload)
    }
  );

  return await response.json();
};

Abonelik İptali

const cancelSubscription = async (subscriptionId, reason = '') => {
  const payload = {
    cancel_at_period_end: false, // true = mevcut dönem sonunda iptal et, false = hemen
    reason: reason
  };

  const response = await fetch(
    `https://api.2checkout.com/1/subscriptions/${subscriptionId}/cancel`,
    {
      method: 'POST',
      headers: {
        'X-Api-Key': process.env.TWOCHECKOUT_PRIVATE_KEY,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(payload)
    }
  );

  return await response.json();
};

Webhook Entegrasyonu: Gerçek Zamanlı Olay İşleme

Webhook'lar, sisteminize ödeme olaylarını sorgulamadan bildirir. Bu, abonelik yenilemeleri, başarısız ödemeler ve geri ödemeler için kritik öneme sahiptir.

Adım 1: Webhook Uç Noktasını Yapılandırın

2Checkout Kontrol Panelinizde:

  1. Entegrasyonlar > Webhook'lar bölümüne gidin
  2. Uç nokta URL'nizi ekleyin (HTTPS kullanmalıdır)
  3. Abone olmak istediğiniz olayları seçin
  4. Kaydedin ve Webhook Sırrınızı not alın

Adım 2: Webhook İşleyici Oluşturun

const express = require('express');
const crypto = require('crypto');
const app = express();

app.post('/webhooks/2checkout', express.raw({ type: 'application/json' }), async (req, res) => {
  const signature = req.headers['x-webhook-signature'];
  const payload = req.body;

  // Webhook imzasını doğrulayın
  const isValid = verifyWebhookSignature(payload, signature, process.env.TWOCHECKOUT_WEBHOOK_SECRET);

  if (!isValid) {
    console.error('Geçersiz webhook imzası');
    return res.status(401).send('Yetkisiz');
  }

  const event = JSON.parse(payload.toString());

  // Uygun işleyiciye yönlendirin
  switch (event.type) {
    case 'order.created':
      await handleOrderCreated(event.data);
      break;
    case 'order.approved':
      await handleOrderApproved(event.data);
      break;
    case 'order.declined':
      await handleOrderDeclined(event.data);
      break;
    case 'subscription.created':
      await handleSubscriptionCreated(event.data);
      break;
    case 'subscription.renewed':
      await handleSubscriptionRenewed(event.data);
      break;
    case 'subscription.cancelled':
      await handleSubscriptionCancelled(event.data);
      break;
    case 'refund.processed':
      await handleRefundProcessed(event.data);
      break;
    default:
      console.log('İşlenmeyen olay türü:', event.type);
  }

  // Alındığını onaylayın
  res.status(200).send('OK');
});

function verifyWebhookSignature(payload, signature, secret) {
  const expectedSignature = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(signature, 'hex'),
    Buffer.from(expectedSignature, 'hex')
  );
}

Kritik Webhook Olayları

Olay Türü Tetikleyici Gerekli Eylem
order.created Yeni sipariş verildi Onay e-postası gönder
order.approved Ödeme başarılı Siparişi yerine getir, erişim izni ver
order.declined Ödeme başarısız oldu Müşteriyi bilgilendir, tekrar deneme mantığı
subscription.renewed Yinelenen ödeme Erişim süresini uzat
subscription.payment_failed Yenileme başarısız oldu Borç tahsilat sırası
subscription.cancelled Müşteri iptal etti Dönem sonunda erişimi iptal et
refund.processed Geri ödeme yapıldı Kullanıcı bakiyesini güncelle
chargeback.received Anlaşmazlık açıldı Kanıt topla

Webhook En İyi Uygulamaları

  1. İmzaları her zaman doğrulayın - Sahte webhook'ları önler
  2. 200 OK'i hızlıca döndürün - 2Checkout 200 dışındaki yanıtları tekrar dener
  3. Asenkron olarak işleyin - Arka plan işlemesi için olayları sıraya koyun
  4. Idempotency uygulayın - Yinelenen webhook teslimatlarını yönetin
  5. Her şeyi günlüğe kaydedin - Zaman damgalı günlüklerle ödeme anlaşmazlıklarını giderin

Entegrasyonunuzu Test Etme

Sandbox Ortamını Kullanma

2Checkout'un sandbox'ı, gerçek ücretlendirme olmadan test yapmanızı sağlar:

// Sandbox temel URL'sini kullanın
const BASE_URL = 'https://sandbox.2checkout.com/api/1';

// Test kart numaraları
const TEST_CARDS = {
  APPROVED: '4111111111111111',
  DECLINED: '4000000000000002',
  INSUFFICIENT_FUNDS: '4000000000009995',
  EXPIRED_CARD: '4000000000000069'
};

// Test adresleri
const TEST_ADDRESS = {
  country: 'US',
  zip: '90210' // AVS kontrollerini tetikler
};

Webhook'ları Yerel Olarak Test Etme

Yerel sunucunuzu dışa açmak için ngrok kullanın:

# ngrok'u yükleyin
npm install -g ngrok

# Sunucunuzu 3000 portunda başlatın
node server.js

# İnternete açın
ngrok http 3000

# ngrok URL'sini 2Checkout webhook ayarlarına kopyalayın

API Testleri İçin Apidog

Apidog, 2Checkout API testlerini kolaylaştırır:

  1. OpenAPI Spesifikasyonunu İçe Aktar - 2Checkout'un API tanımını yükleyin
  2. Test Senaryoları Oluştur - Her uç nokta için koleksiyonlar oluşturun
  3. Yanıtları Taklit Et - API'ye istek göndermeden test edin
  4. Webhook'ları Doğrula - Yük yapılarını inceleyin
  5. Ekiple Paylaş - Entegrasyon testinde işbirliği yapın

Sandbox ve üretim anahtarları için ortam değişkenleri oluşturun, ardından tek tıklamayla bağlamları değiştirin.

Üretime Dağıtım Kontrol Listesi

Canlıya geçmeden önce:

İzleme ve Uyarı Verme

Bu metrikleri takip edin:

// Örnek: Ödeme başarı oranı
const successRate = approvedOrders / totalOrders * 100;

if (successRate < 95) {
  // Ödeme ekibini uyar
  sendAlert('Ödeme başarı oranı %95'in altına düştü');
}

// Belirli hata kodlarını takip edin
const errorBreakdown = errors.reduce((acc, err) => {
  acc[err.code] = (acc[err.code] || 0) + 1;
  return acc;
}, {});

// Belirli hatalarda ani yükseliş olduğunda uyar
if (errorBreakdown['CARD_DECLINED'] > threshold) {
  sendAlert('Kart reddedilme oranında ani yükseliş tespit edildi');
}

Gerçek Dünya Kullanım Durumları

E-ticaret Mağazası Entegrasyonu

Bir moda perakendecisi, küresel ödemeleri yönetmek için 2Checkout'u entegre etti. Sonuçlar:

Uygulama başlangıçta 2Checkout'un barındırılan ödeme sayfalarını kullanarak 3 hafta sürdü, ardından özel kullanıcı deneyimi için doğrudan API entegrasyonuna geçildi.

SaaS Abonelik İşletmesi

Bir proje yönetimi SaaS'ı 2Checkout aboneliklerini kullandı:

Temel özellik: Webhook tabanlı erişim kontrolü. subscription.renewed geldiğinde, kullanıcı erişimini anında uzatın. subscription.cancelled geldiğinde, erişim iptalini planlayın.

Sonuç

2Checkout API, ödeme işleme ve abonelik yönetimi için gereken her şeyi sağlar. Temel çıkarımlar:

düğme

SSS Bölümü

2Checkout API nedir?

2Checkout API (şimdi Verifone), ödemeleri işlemek, abonelikleri yönetmek, geri ödemeleri ele almak ve e-ticaret işlemlerini otomatikleştirmek için bir RESTful arayüzüdür. JSON yüklerini, HMAC kimlik doğrulamasını ve gerçek zamanlı webhook'ları destekler.

2Checkout Verifone ile aynı mı?

Evet. 2Checkout, 2020 yılında Verifone tarafından satın alındı ve Verifone Dijital Ticaret olarak yeniden markalandı. API uç noktaları ve işlevselliği aynı kalmıştır, ancak bazı dokümantasyonlar Verifone'a atıfta bulunmaktadır.

2Checkout API anahtarımı nasıl alabilirim?

2Checkout Kontrol Panelinize giriş yapın, Entegrasyonlar > API Anahtarları bölümüne gidin ve yeni bir anahtar oluşturun. Bir özel anahtar (sunucu tarafı) ve bir herkese açık anahtar (istemci tarafı tokenizasyon) alacaksınız.

2Checkout'un bir sandbox ortamı var mı?

Evet. Test için https://sandbox.2checkout.com/api/ adresini kullanın. Test API anahtarları almak ve gerçek ücretlendirmeler olmadan test işlemleri yapmak için ayrı bir sandbox hesabı oluşturun.

2Checkout hangi ödeme yöntemlerini destekliyor?

2Checkout, 100'den fazla ülkede kredi kartlarını (Visa, Mastercard, Amex, Discover), PayPal'ı, Apple Pay'i, Google Pay'i, banka transferlerini ve yerel ödeme yöntemlerini destekler.

Webhook'ları güvenli bir şekilde nasıl yönetirim?

X-Webhook-Signature başlığını her zaman webhook sırrınızla birlikte HMAC-SHA256 kullanarak doğrulayın. Olayları asenkron olarak işleyin ve yeniden denemeleri önlemek için hemen 200 OK döndürün.

Abonelik ödemesi başarısız olduğunda ne olur?

2Checkout bir subscription.payment_failed webhook'u gönderir. Tekrar deneme mantığını uygulayın (genellikle 7 gün içinde 3 deneme) ve tüm denemeler başarısız olursa bir subscription.cancelled webhook'u gönderin.

2Checkout PCI DSS uyumlu mu?

Evet, 2Checkout PCI DSS Seviye 1 sertifikalıdır. Ham kart verilerini işlemeyi önlemek için istemci tarafı tokenizasyon kullanın, bu da PCI uyumluluk kapsamınızı azaltır.

Abonelikleri sandbox'ta test edebilir miyim?

Evet. Sandbox, denemeler, yenilemeler, yükseltmeler, düşürmeler ve iptaller dahil olmak üzere tam abonelik yaşam döngüsü testini destekler. Başarılı ödemeler için 4111111111111111 test kartını kullanın.

API aracılığıyla geri ödemeleri nasıl yönetirim?

Sipariş Kimliği ve geri ödeme miktarı ile /refunds adresine bir POST isteği gönderin. 2Checkout kısmi veya tam geri ödemeleri işler ve tamamlandığında bir refund.processed webhook'u gönderir.

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin