Saklı Kartlar

1.6k görüntülenme Markdown

Müşterinin saklı kartlarını okuyan, varsayılanı seçen ve kart silen üç uç.

Genel Bakış

Saklı kart, müşterinin ödeme sağlayıcısında tutulan kartıdır. WISECP kart numarasını saklamaz; elinde yalnız sağlayıcının verdiği bir işaret ve kartı tanımaya yetecek kadar bilgi vardır — son dört hane, marka, son kullanma.

Bu yüzden burada kart ekleyen bir uç yoktur. Kart, müşteri ödeme yaparken sağlayıcının kendi ekranında saklanır; API yalnız var olanı okur, varsayılanı taşır ve siler.

Referans

Kartları Listeleme

get/api/v1/admin/clients/{id}/cards
Clients/GetClientCards admin

Müşterinin saklı kartlarını döndürür. Kart numarası hiçbir zaman dönmez; yalnız son dört hane görünür.

Dönen alanlar data[] — 6
idintSaklı kartın kimliği.
last4stringKart numarasının son dört hanesi.
brandstringKart markası, örneğin visa ya da mastercard.
modulestringKartı saklayan ödeme modülü, örneğin Stripe.
is_defaultboolVarsayılan kart mı.
expirystringSon kullanma tarihi, 12/27 biçiminde.
Hatalar 2
not_found404Müşteri ya da kart bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/clients/42/cards' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/cards', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();

const primary = body.data.find((card) => card.is_default);
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/cards');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$response = Api::Clients()->GetClientCards(['id' => 42]);

foreach ($response['data'] as $card) {
    if ($card['is_default']) {
        $primary = $card;
    }
}
Yanıt
{
  "data": [
    {
      "id": 88,
      "last4": "4242",
      "brand": "visa",
      "module": "Stripe",
      "is_default": true,
      "expiry": "12/27"
    }
  ]
}

Varsayılan Kartı Seçme

put/api/v1/admin/clients/{id}/cards/{card_id}/default
Clients/SetClientCardDefault admin

Bir kartı varsayılan yapar. Önceki varsayılanın işareti kendiliğinden kalkar.

Gövde —
——Gövde gerekmez; boş gönderin. Hem müşteri hem kart adresten gelir.
——Başka bir kart yerine geçmeden varsayılanlığı kaldırmanın yolu yoktur.
Dönen alanlar data — 2
card_idintVarsayılan yapılan kartın kimliği.
defaultboolHer zaman true.
Hatalar 2
not_found404Müşteri ya da kart bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PUT 'https://panel.ornek.com/api/v1/admin/clients/42/cards/88/default' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/cards/88/default', {
  method: 'PUT',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/cards/88/default');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PUT',
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$response = Api::Clients()->SetClientCardDefault([
    'id'      => 42,
    'card_id' => 88,
]);

Kart Silme

delete/api/v1/admin/clients/{id}/cards/{card_id}
Clients/DeleteClientCard admin varsayılanı taşıyabilir

Saklı kartı siler. Silinen kart varsayılansa yerine bir başkası geçer ve kimliği yanıtta döner. Sağlayıcıdan da kendi kopyasını silmesi istenir; kart her durumda müşteriden kaldırılır, sağlayıcının cevabı gateway_removal alanında döner.

Dönen alanlar data — 5
deletedboolSilme başarılı mı.
card_idintSilinen kartın kimliği.
new_default_idintYeni varsayılan kartın kimliği. Silinen kart varsayılan değilse 0.
gateway_removalstringSağlayıcının kendi kopyasına ne yaptığı: removed · failed (reddetti ya da ulaşılamadı; kartı sağlayıcının panelinden kaldırın) · unsupported (ödeme modülü saklı kart silmeyi desteklemiyor) · none (kart bir ödeme modülüne bağlı değil).
gateway_errorstringSağlayıcının mesajı. Yalnız gateway_removal failed iken ve sağlayıcı bir mesaj döndürdüyse bulunur.
Hatalar 2
not_found404Müşteri ya da kart bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/clients/42/cards/88' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/cards/88', {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();

if (body.data.new_default_id) {
  // Varsayilan baska bir karta gecti.
}
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/cards/88');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'DELETE',
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$response = Api::Clients()->DeleteClientCard([
    'id'      => 42,
    'card_id' => 88,
]);

$newDefault = $response['data']['new_default_id'] ?? 0;

Tuzaklar

Kart ekleyen bir uç yoktur

Kart yalnız müşterinin ödeme akışında saklanabilir, çünkü numara sağlayıcıya girilir. API üzerinden kart eklemeye çalışan bir entegrasyon karşılığı olmayan bir uç arar.

Silmek varsayılanı taşıyabilir

Varsayılan kartı silerseniz yerine bir başkası geçer ve kimliği new_default_id ile döner. Kendi tarafınızda varsayılanı saklıyorsanız bu değeri okuyup güncelleyin.

Silinen kart sağlayıcıda kalabilir

Sağlayıcı kendi kopyasını silmeyi reddetse de yanıt 200 döner. gateway_removal alanına bakın: failed ise kart WISECP'den kalkmıştır ama sağlayıcıda hâlâ saklıdır ve orada elle kaldırılması gerekir.

Ekranda gördüğünüz kart numarası değildir

last4 yalnız tanımaya yarar. Kart numarasını, son kullanma tarihinin tamamını ya da güvenlik kodunu API hiçbir uçta döndürmez.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.