DEV Community

Cover image for 2Checkout API: Ödeme İşleme için Eksiksiz Entegrasyon Rehberi (2026)
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

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

TL;DR

2Checkout API (şimdi Verifone), geliştiricilere RESTful uç noktalar üzerinden ödemeleri işleme, abonelikleri yönetme ve e-ticaret işlemlerini programatik olarak yürütme imkanı sunar. Kimlik doğrulama için API anahtarları ve JSON tabanlı yükler kullanılır. Bu rehber, kurulumdan gelişmiş webhook yönetimine kadar uygulamaya yönelik tüm adımları içerir.

Apidog'u hemen deneyin

Giriş

Ödeme işleme, çevrimiçi bir işletmenin en kritik parçasıdır. Yanlış bir entegrasyon gelir kaybına yol açar, doğru entegrasyon ise küresel pazarlara açılmanızı sağlar. 2Checkout API (sonradan Verifone olarak yeniden markalandı), 45.000'den fazla satıcının global ödemelerini yönetir ve yılda milyarlarca işlem gerçekleştirir.

Gerçek bir problem: Alışveriş yapanların %67’si ödeme süreçlerindeki sürtüşme nedeniyle sepeti terk ediyor. Sağlam bir ödeme API entegrasyonu doğrudan kârınızı artırır.

Bu rehberde, 2Checkout API entegrasyonu için uygulamaya dönük adımları bulacaksınız: Kimlik doğrulama, ödeme işlemleri, abonelik yönetimi, webhook kullanımı ve hata giderme. Sonunda, canlıya hazır bir ödeme sistemi kurmuş 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 platformda giderin. OpenAPI spesifikasyonunu içe aktarın, yanıtları taklit edin ve test senaryolarını ekibinizle paylaşın.

2Checkout API Nedir?

2Checkout (şimdi Verifone Digital Commerce) ödeme işlemleri ve abonelik yönetimi için REST API sunar. API ile:

  • Tek seferlik ve yinelenen ödemeler işleyebilirsiniz
  • Müşteri ve ürünleri yönetebilirsiniz
  • Sipariş yaşam döngüsünü takip edebilirsiniz
  • Geri ödeme ve anlaşmazlık süreçlerini yönetebilirsiniz
  • Vergi/uyumluluk otomasyonunu sağlayabilirsiniz
  • 100+ para biriminde işlem desteği alırsınız

Temel Özellikler

Özellik Açıklama
RESTful Tasarım JSON yükleriyle GET, POST, PUT, DELETE standart HTTP yöntemleri
Sandbox Ortamı Gerçek işlem olmadan güvenli test
Webhook Desteği Sipariş olayları için gerçek zamanlı bildirim
Tokenizasyon Kart verisi saklamadan güvenli ödeme
Küresel Uyum PCI DSS Seviye 1, GDPR, PSD2, 3D Secure 2.0 uyumlu

API Mimari Genel Bakış

2Checkout aşağıdaki sürümlere sahip REST API yapısı kullanır:

https://api.2checkout.com/1/
https://api.2checkout.com/2/
Enter fullscreen mode Exit fullscreen mode

Sürüm 2, gelişmiş abonelik ve webhook yönetimiyle önerilir.


Başlarken: Kimlik Doğrulama Kurulumu

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

  1. 2Checkout kayıt sayfasına gidin.
  2. İşletme doğrulamasını tamamlayın (belge gerektirir).
  3. Onay sürecini bekleyin (genellikle 24-48 saat).
  4. Kontrol panelinizden API kimlik bilgilerinizi alın.

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

Kontrol Paneli > Entegrasyonlar > API Anahtarları yolunu izleyin:

  • Özel API Anahtarı: Sunucu tarafı kimlik doğrulama, gizli tutun.
  • Herkese Açık API Anahtarı: İstemci tarafı tokenizasyon için, açık tutulabilir.
  • Webhook Sırrı: Webhook imzalarını doğrulamak için kullanılır.

Güvenlik: Anahtarları asla kod depolarında saklamayın. 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"
Enter fullscreen mode Exit fullscreen mode

Adım 3: Sandbox ve Üretim Ortamı

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

Geliştirme ve testte sandbox kullanın. Üretime geçtiğinizde anahtar ve URL’yi değiştirin.

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

Yöntem 1: API Anahtarı Kimlik Doğrulama (Önerilir)

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'
  }
});
Enter fullscreen mode Exit fullscreen mode

Yöntem 2: HMAC İmza Kimlik Doğrulama

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)
});
Enter fullscreen mode Exit fullscreen mode

API Key Authentication


Ödeme İşleme: Temel Uç Noktalar

Tek Seferlik Sipariş Oluşturma

/orders uç noktası ile ödeme işlemini başlatın:

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 // İstemciden alınan token
    }
  };

  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();
};
Enter fullscreen mode Exit fullscreen mode

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"
}
Enter fullscreen mode Exit fullscreen mode

Ödeme Hatalarını Yönetme

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

  if (result.error) {
    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:
        console.error('Ödeme başarısız:', result.error);
    }
  }
} catch (error) {
  console.error('API isteği başarısız oldu:', error);
}
Enter fullscreen mode Exit fullscreen mode

Yaygın Hata Kodları

Hata Kodu HTTP Durumu Açıklama Çözüm
CARD_DECLINED 402 Kart reddedildi Başka kart isteyin
INVALID_CARD 400 Geçersiz kart Kartı doğrulayın
EXPIRED_CARD 400 Kart süresi dolmuş Geçerli tarih isteyin
INVALID_CVV 400 CVV hatalı CVV'yi yeniden isteyin
INSUFFICIENT_FUNDS 402 Yetersiz bakiye Alternatif ödeme önerin
DUPLICATE_ORDER 409 Sipariş zaten işlendi Kopyaları kontrol edin
INVALID_CURRENCY 400 Para birimi desteklenmiyor Para birimini doğrulayın
API_KEY_INVALID 401 Kimlik doğrulama hatası API anahtarını kontrol edin

Müşteri Yönetimi

Abonelik ve tekrar eden ödeme akışlarında müşteri yönetimi şarttır. 2Checkout, tam kapsamlı 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'
  };

  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();
};
Enter fullscreen mode Exit fullscreen mode

Müşteri Detayı 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();
};
Enter fullscreen mode Exit fullscreen mode

Müşteri 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();
};
Enter fullscreen mode Exit fullscreen mode

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;
};
Enter fullscreen mode Exit fullscreen mode

Not: Aktif abonelik veya borcu olan müşteriler silinemez. Önce abonelikleri iptal edin.


Gelişmiş Entegrasyon Desenleri

Idempotency ile Güvenli Yeniden Denemeler

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
    },
    body: JSON.stringify(payload)
  });

  return await response.json();
};

// Sipariş başına anahtar üretin ve saklayın
const idempotencyKey = `order_${userId}_${Date.now()}`;
Enter fullscreen mode Exit fullscreen mode

Ağ problemi olsa bile aynı anahtar ile yeniden denediğinizde çift ödeme oluşmaz.

3D Secure 2.0 Yönetimi (AB Uyumluluğu)

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', // AB için 'mandatory' kullanılabilir
        notification_url: 'https://site_adresiniz.com/3ds-geri-bildirim'
      }
    })
  });

  const result = await response.json();

  if (result.three_ds_redirect_url) {
    // Kullanıcıyı bankanın doğrulama sayfasına yönlendirin
    res.redirect(result.three_ds_redirect_url);
  }

  return result;
};
Enter fullscreen mode Exit fullscreen mode

Çoklu Para Birimi Fiyatlandırması

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)}`);
Enter fullscreen mode Exit fullscreen mode

Abonelik Yükseltmelerinde Oransal Hesaplama

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',
        invoice_proration: true
      })
    }
  );

  return await response.json();
};
Enter fullscreen mode Exit fullscreen mode

Yaygın Sorunları Giderme

Webhook'lar Gelmiyor

Belirti: Siparişler işleniyor ama sisteminiz güncellenmiyor.

Teşhis:

// 2Checkout kontrol panelinden webhook teslimat günlüklerini kontrol edin
Enter fullscreen mode Exit fullscreen mode

Çözüm:

  1. Uç nokta 5 sn içinde 200 OK döndürmeli
  2. SSL sertifikanız geçerli olmalı (HTTPS zorunlu)
  3. 2Checkout IP’lerini güvenlik duvarında açın
  4. Webhook imza doğrulama kodunuzu gözden geçirin
  5. Üretimden önce webhook simülatörünü kullanın

Sandbox’ta Test Ödeme Sorunları

Belirti: Tüm test kartları sandbox’ta reddediliyor.

Çözüm:

  1. Sandbox API anahtarını kullandığınızdan emin olun
  2. Temel URL: https://sandbox.2checkout.com/api/
  3. Doğru test kartı kullanın (aşağıda listelendi)
  4. Sandbox hesabınızın etkin olduğundan emin olun

Abonelik Yenilemeleri Sessizce Başarısız

Teşhis:

const history = await fetch(
  `https://api.2checkout.com/1/subscriptions/${subId}/payments`,
  { headers: { 'X-Api-Key': privateKey } }
);
Enter fullscreen mode Exit fullscreen mode

Çözüm:

  • Kartın son kullanma tarihini kontrol edin
  • Borç tahsilat ayarlarını gözden geçirin
  • subscription.payment_failed webhook teslimini doğrulayın
  • auto_renew aktif mi kontrol edin

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

Neden: 2Checkout günlük döviz kuru kullanır.

Çözüm:

  • Müşteriye yaklaşık dönüşüm gösterin
  • Oranları 15 dakikalığına kilitleyin
  • İşlemleri müşterinin para biriminde saklayın

AVS (Adres Doğrulama) Hataları

Çözüm:

  • Otomatik adres tamamlama kullanın (Google Places, Lob)
  • ZIP kodunu zorunlu yapın
  • Yumuşak AVS uygulayın (sadece uyarı)
  • Müşteriye adres güncelleme imkanı verin

Abonelik Yönetimi

2Checkout, yinelenen faturalandırmada esnek kontrol sunar.

Abonelik Oluşturma

const createSubscription = async (customerId, planId) => {
  const payload = {
    customer_id: customerId,
    plan_id: planId,
    start_date: new Date().toISOString(),
    billing_cycle: 'monthly',
    payment_method: {
      type: 'card',
      card_token: 'tok_card_tokenized'
    },
    options: {
      trial_days: 14,
      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();
};
Enter fullscreen mode Exit fullscreen mode

Abonelik Güncelleme

const updateSubscription = async (subscriptionId, updates) => {
  const payload = {
    ...updates
    // plan_id, quantity, payment_method gibi güncellemeler
  };

  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();
};
Enter fullscreen mode Exit fullscreen mode

Abonelik İptali

const cancelSubscription = async (subscriptionId, reason = '') => {
  const payload = {
    cancel_at_period_end: false,
    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();
};
Enter fullscreen mode Exit fullscreen mode

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

Webhook'lar ile ödeme olaylarını (abonelik, iade, başarısız ödeme) sisteminize anında aktarabilirsiniz.

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

  1. Kontrol Paneli > Entegrasyonlar > Webhook’lar bölümüne girin
  2. HTTPS uç noktanızı ekleyin
  3. Hangi olaylara abone olacağınızı seçin
  4. Webhook sırrınızı not edin

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;

  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());

  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);
  }

  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')
  );
}
Enter fullscreen mode Exit fullscreen mode

Kritik Webhook Olayları

Olay Türü Tetikleyici Gerekli Eylem
order.created Yeni sipariş Onay e-postası gönder
order.approved Ödeme başarılı Ürün/hizmet erişimi ver
order.declined Ödeme başarısız Müşteriyi uyar, tekrar dene
subscription.renewed Yinelenen ödeme Erişimi uzat
subscription.payment_failed Yenileme başarısız Borç tahsilat başlat
subscription.cancelled Müşteri iptali Erişimi dönemde iptal et
refund.processed Geri ödeme Kullanıcı bakiyesini güncelle
chargeback.received Anlaşmazlık Kanıt topla

Webhook En İyi Uygulamaları

  1. İmzaları doğrulayın – Sahte talepleri engelleyin
  2. Hızlıca 200 OK döndürün – Yeniden denemeleri önleyin
  3. Asenkron işleyin – Olayları kuyruğa alın
  4. Idempotency kullanın – Yinelenen bildirimleri engelleyin
  5. Günlük tutun – Sorunları ve anlaşmazlıkları izleyin

Entegrasyonunuzu Test Etme

Sandbox Ortamı Kullanımı

const BASE_URL = 'https://sandbox.2checkout.com/api/1';

const TEST_CARDS = {
  APPROVED: '4111111111111111',
  DECLINED: '4000000000000002',
  INSUFFICIENT_FUNDS: '4000000000009995',
  EXPIRED_CARD: '4000000000000069'
};

const TEST_ADDRESS = {
  country: 'US',
  zip: '90210'
};
Enter fullscreen mode Exit fullscreen mode

Webhook'ları Yerel Test Etme (ngrok)

npm install -g ngrok
node server.js
ngrok http 3000
# ngrok URL'sini webhook ayarına ekleyin
Enter fullscreen mode Exit fullscreen mode

API Testleri için Apidog

  • OpenAPI spesifikasyonunu içe aktarın
  • Test koleksiyonları oluşturun
  • Yanıtları taklit edin
  • Webhook yüklerini inceleyin
  • Ekiple paylaşım yapın

Ortam değişkenleri ile test/üretim anahtarlarını kolayca değiştirin.


Üretime Dağıtım Kontrol Listesi

  • [ ] Sandbox’tan üretime geçin (anahtar değiştirin)
  • [ ] Temel URL’yi https://api.2checkout.com/ olarak ayarlayın
  • [ ] Webhook imza doğrulamasını etkinleştirin
  • [ ] Başarısız ödemeler için izleme kurun
  • [ ] Geçici hatalarda tekrar deneme uygulayın
  • [ ] Geri ödeme ve chargeback akışlarını test edin
  • [ ] PCI DSS uyumluluğunu kontrol edin
  • [ ] AB için 3D Secure 2.0’ı açın
  • [ ] Günlükleme ve denetim izlerini etkinleştirin
  • [ ] Ödeme sorunları için çalışma kitabı oluşturun

İzleme ve Uyarı

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

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

// Hata kodu dağılımı
const errorBreakdown = errors.reduce((acc, err) => {
  acc[err.code] = (acc[err.code] || 0) + 1;
  return acc;
}, {});

if (errorBreakdown['CARD_DECLINED'] > threshold) {
  sendAlert('Kart reddedilme oranında artış!');
}
Enter fullscreen mode Exit fullscreen mode

Gerçek Dünya Kullanım Durumları

E-ticaret Mağazası Entegrasyonu

Bir moda perakendecisi, 2Checkout entegrasyonu ile:

  • 100+ para birimini otomatik destekledi
  • Sepet terk oranını %23 azalttı
  • AB KDV uyumluluğunu sağladı
  • İlk yılda 2 milyon $ işlem hacmine ulaştı

İlk aşamada barındırılan ödeme sayfası ile başlanıp, sonrasında doğrudan API entegrasyonuna geçildi.

SaaS Abonelik İşletmesi

Bir SaaS platformu:

  • 5.000+ aktif abonelik yönetti
  • Plan yükseltmede oransal ücretlendirme yaptı
  • Başarısız yenilemeler için otomatik borç tahsilatı kurdu
  • Akıllı tekrar denemelerle churn’ü %15 azalttı

Kritik akış: subscription.renewed webhook’u ile erişimi anında uzatmak, subscription.cancelled ile iptal planlamak.


Sonuç

2Checkout API, ödeme işlemleri ve abonelik yönetimi için eksiksiz ve güvenli bir çözüm sunar. Uygulamada:

  • Tüm geliştirme/test süreçlerinde sandbox kullanın
  • Webhook’larda HMAC imza doğrulaması uygulayın
  • Hata kodu yönetimi ile akışları kararlı hale getirin
  • Abonelik akışlarını uçtan uca test edin (deneme, yenileme, iptal)
  • Üretimde ödeme metriklerini takip edin
  • API testi ve ekip işbirliği için Apidog kullanın

SSS Bölümü

2Checkout API nedir?

2Checkout API (şimdi Verifone), ödemeleri işlemek, abonelikleri yönetmek ve e-ticaret işlemlerini otomatikleştirmek için RESTful bir arayüzdür. JSON yükleri, HMAC kimlik doğrulama ve gerçek zamanlı webhook desteği içerir.

2Checkout Verifone ile aynı mı?

Evet. 2Checkout, Verifone tarafından satın alındı ve Verifone Dijital Ticaret olarak yeniden markalandı. API uç noktaları ve işlevsellik değişmedi.

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

Kontrol Paneli > Entegrasyonlar > API Anahtarları bölümünden yeni anahtar oluşturun. Sunucu için özel, istemci için herkese açık anahtar alırsınız.

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

Evet. Test için https://sandbox.2checkout.com/api/ kullanın. Ayrı bir sandbox hesabı oluşturun ve test API anahtarlarını alın.

2Checkout hangi ödeme yöntemlerini destekliyor?

100+ ülkede kredi kartları (Visa, Mastercard, Amex, Discover), PayPal, Apple Pay, Google Pay, banka transferi ve yerel ödeme yöntemleri desteklenir.

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

Her zaman X-Webhook-Signature başlığını ve webhook sırrınızı HMAC-SHA256 ile doğrulayın. Olayları asenkron işleyin ve hemen 200 OK döndürün.

Abonelik ödemesi başarısız olursa ne olur?

2Checkout bir subscription.payment_failed webhook’u gönderir. 7 gün içinde 3 tekrar deneme yapılır, tümü başarısız olursa subscription.cancelled gönderilir.

2Checkout PCI DSS uyumlu mu?

Evet, PCI DSS Seviye 1 sertifikalıdır. Kart verisini doğrudan işlememek için istemci tarafı tokenizasyon kullanın.

Abonelikleri sandbox’ta test edebilir miyim?

Evet. Sandbox, deneme, yenileme, yükseltme, düşürme ve iptal dahil tüm abonelik akışlarını test edebilir. Başarılı ödemeler için 4111111111111111 test kartı kullanın.

API ile geri ödemeleri nasıl yönetirim?

/refunds uç noktasına sipariş kimliği ve miktar ile POST isteği gönderin. Tamamlanan her işlemde refund.processed webhook’u gelir.

Top comments (0)