saved-cards
POST /api/{team}/gateway/saved-cards
Müşterinin kayıtlı kartlarını döndürür: varsayılan kart önce, ardından eskiden yeniye. Sayfalama yoktur; müşterinin bütün kartları döner. Test ve canlı modda saklanan kartların hepsi listelenir.
Çalışma alanının planı kayıtlı kartları kapsamıyorsa istek 403 ile reddedilir.
Kimlik doğrulama
X-Api-Key, X-Signature, Content-Type: application/json. Ayrıntılar: Kimlik Doğrulama ve İmza.
İstek
{
"customer": {
"channel_token": "6f1c2e7a-4b3d-4c8e-9a61-2f5d7b0c3e14",
"channel_reference": "musteri-88"
}
}
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
customer.channel_token | string (UUID) | evet | Müşterinin kanalı. |
customer.channel_reference | string | evet | Müşterinin kimliği. Bu kanalda daha önce bir ödeme, sipariş, abonelik ya da save-card isteğinin customer nesnesinde gönderilmiş olmalıdır. |
SDK örnekleri
- PHP
- Node.js
- Python
- Java
- cURL
use Gurmehub\Odemehub\Request\{NamedCustomer, SavedCards};
$cards = $client->savedCards(new SavedCards(
customer: new NamedCustomer(channelReference: 'musteri-88'),
));
foreach ($cards->savedCards as $card) {
echo "{$card->token} **** {$card->lastFourDigit}";
}
const cards = await client.savedCards({ customer: { channelReference: 'musteri-88' } });
for (const card of cards.savedCards) {
console.log(`${card.token} **** ${card.lastFourDigit}`);
}
from odemehub.request import NamedCustomer, SavedCards
cards = client.saved_cards(SavedCards(customer=NamedCustomer(channel_reference="musteri-88")))
for card in cards.saved_cards:
print(f"{card.token} **** {card.last_four_digit}")
import com.odemehub.request.NamedCustomer;
import com.odemehub.request.SavedCards;
var cards = client.savedCards(new SavedCards(new NamedCustomer("musteri-88")));
for (var card : cards.getSavedCards()) {
System.out.println(card.getToken() + " **** " + card.getLastFourDigit());
}
BODY='{"customer":{"channel_token":"6f1c2e7a-4b3d-4c8e-9a61-2f5d7b0c3e14","channel_reference":"musteri-88"}}'
SIGNATURE=$(printf '%s' "$BODY" | openssl dgst -sha256 -hmac "$ODEMEHUB_API_SECRET" | sed 's/^.* //')
curl -X POST "https://odeme.gurmehub.com/api/$ODEMEHUB_TEAM/gateway/saved-cards" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "X-Api-Key: $ODEMEHUB_API_KEY" \
-H "X-Signature: $SIGNATURE" \
--data-raw "$BODY"
Yanıt
{
"result": {
"successful": true,
"message": null
},
"saved_cards": [
{
"token": "7d3e9a10-2b4c-4f6e-8a1b-c2d3e4f5a6b7",
"payment_provider_token": "1c9e8f7a-6b5d-4c3e-2a1f-0e9d8c7b6a54",
"holder_name": "AHMET YILMAZ",
"scheme": "mastercard",
"first_digits": "54003600",
"last_four_digit": "0003",
"expiry_month": "12",
"expiry_year": "2030",
"is_default": true,
"created_at": "2026-09-29T10:15:00.000000Z"
}
],
"customer": {
"channel_reference": "musteri-88"
}
}
Kart nesnesi
saved-cards, save-card, default-saved-card yanıtlarında ve ödeme yanıtlarının saved_card alanında aynı nesne döner.
| Alan | Tip | Açıklama |
|---|---|---|
token | string | Kayıtlı kartın token'ı. Kayıtlı kartla ödemede transaction.saved_card_token olarak gönderilir. |
payment_provider_token | string | null | Kartın saklandığı ödeme hesabı. Kart yalnızca bu hesaptan çekilebilir. |
holder_name | string | Kart sahibinin adı. |
scheme | string | null | Kart şeması, ör. visa, mastercard, troy. |
first_digits | string | Kart numarası 16 hane ve üzeriyse ilk 8, daha kısaysa ilk 6 hane. |
last_four_digit | string | Son 4 hane. |
expiry_month | string | |
expiry_year | string | |
is_default | boolean | Müşterinin varsayılan kartı mı. |
created_at | string | null | Saklandığı an (ISO 8601, UTC). |
HTTP durum kodları
| Kod | Durum |
|---|---|
200 | Liste döndü. |
401 | API anahtarı ya da imza geçersiz. |
403 | Çalışma alanı işlem yapamıyor ya da planı kayıtlı kartları kapsamıyor. |
422 | Doğrulama hatası. |
Hatalar
| Alan | Mesaj |
|---|---|
customer.channel_reference | Bu kanalda böyle bir müşteri bulunamadı. |