Entwickler/Erste Schritte
CardV Merchant API
CardV verkauft digitale Prepaid-Produkte an Unternehmen, zum Beispiel Geschenkkarten, Spielguthaben und eSIMs. Mit der Merchant API kauft Ihr Server diese Produkte automatisch ein. Sie prüfen Ihr Guthaben, suchen ein Produkt, fragen den Preis ab, bestellen und rufen die Codes ab. Bezahlt wird aus Ihrer CardV-Wallet, die Sie vorab aufladen. Alles andere, etwa Guthaben aufladen oder frühere Bestellungen ansehen, erledigen Sie im Merchant Portal.
#Dokumentation
| Dokument | Inhalt |
|---|---|
| Authentifizierung | Header, Anfragen signieren, API-Keys einrichten |
| Produkte und Bestellungen | Guthaben, Wechselkurs, Produkte, Preise, Bestellungen, Codes |
| Handy-Aufladung | Telefone aufladen: Anbieter, Preise, Aufladungsbestellungen |
| Grundregeln | Beträge, Zeitangaben, IDs, Anfragelimit, Fehler |
| Webhooks | Benachrichtigungen zu Bestellungen an Ihren Server |
| Sandbox | Testen und Checkliste für den Livegang |
| Sicherheit | API-Keys und Codes schützen |
#Umgebungen
| Live | Sandbox | |
|---|---|---|
| API-Basis-URL | https://b2b.cardv.net/api/v1 | https://sandbox.cardv.net/api/v1 |
| Merchant Portal | https://b2b.cardv.net/portal/ | Dasselbe Portal, oben auf Sandbox umschalten |
Die Sandbox ist eine eigene Testkopie von CardV mit Testgeld. API-Keys, Guthaben, Bestellungen und Produkt-IDs sind in beiden Umgebungen verschieden.
#Schnellstart
Registrieren. Beantragen Sie im Portal ein Händlerkonto und bestätigen Sie Ihre E-Mail-Adresse.
Freigabe abwarten. CardV prüft Ihr Unternehmen. Danach erhalten Sie eine Merchant ID (Ihre Händlernummer), zum Beispiel
M00000001.Sandbox öffnen. Melden Sie sich im Portal an und wählen Sie oben Sandbox. Sie erhalten 1.000 USD Testgeld.
API-Key erstellen. Gehen Sie im Portal zu Integrations → API keys. Erstellen Sie einen Key. Das Portal zeigt die Key-ID und das Signing Secret einmal an. Speichern Sie das Secret in Ihrem Secret Store.
Guthaben prüfen:
export CARDV_BASE=https://sandbox.cardv.net export CARDV_KEY_ID=ck_test_... # shown in the Portal export CARDV_SIGNING_SECRET=cs_test_... # from your secret store cardv_get() { # every call is signed, see Authentication local ts nonce sig ts=$(date +%s); nonce=$(openssl rand -hex 16) sig=$(printf 'GET\n%s\n%s\n%s\n%s' "$1" "$ts" "$nonce" \ e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 \ | openssl dgst -sha256 -hmac "$CARDV_SIGNING_SECRET" -hex | sed 's/^.*= //') curl -sS "$CARDV_BASE$1" -H "X-Key-Id: $CARDV_KEY_ID" \ -H "X-Timestamp: $ts" -H "X-Nonce: $nonce" -H "X-Signature: $sig" } cardv_get "/api/v1/balance"Produkt suchen:
cardv_get "/api/v1/skus?search=steam&limit=20"Wählen Sie ein Produkt mit
"availability": "available"und notieren Sie seinesku_id.Preis abfragen:
cardv_get "/api/v1/skus/S000001/quote?quantity=1"Notieren Sie
merchant_price. Das ist Ihr Preis pro Stück.Bestellen. Signieren Sie die Anfrage wie jede andere. Nehmen Sie ein Beispiel aus Authentifizierung und diesen Body:
{ "external_order_id": "TEST-0001", "items": [ {"sku_id": "S000001", "quantity": 1, "expected_unit_price": "9.25"} ] }Sie erhalten HTTP 201 und eine CardV-Bestell-ID wie
O-00001234.Codes abrufen. Rufen Sie
GET/api/v1/orders/O-00001234auf, bis der Statussucceededist. Die Codes stehen initems[].deliveries[]:card_number,pin_codeundredeem_url. Sie können sich auch per Webhook benachrichtigen lassen, sobald die Bestellung fertig ist.Live gehen, sobald die Sandbox-Checkliste erledigt ist.
Die IDs und Preise oben sind Beispiele. Verwenden Sie die Werte aus Ihrem eigenen Katalog.
#Die API im Überblick
Es gibt sechzehn Endpunkte. Alle Pfade beginnen mit /api/v1.
| Endpunkt | Wofür | Signiert |
|---|---|---|
GET/account | Ihre Firmendaten und der API-Status | Nein |
GET/balance | Wie viel Guthaben Sie ausgeben können | Nein |
GET/fx-rates | Wechselkurs ab USD für Shops in anderen Währungen | Nein |
GET/products | Produkte, jeweils mit allen SKUs | Nein |
GET/products/{product_id} | Ein Produkt mit SKUs und vollständigen Texten | Nein |
GET/skus | Produkte, die Sie kaufen können, mit Ihrem Preis | Nein |
GET/skus/{sku_id} | Ein einzelnes Produkt | Nein |
GET/skus/{sku_id}/quote | Aktueller Preis für eine Menge | Nein |
POST/orders | Bestellen, bezahlt aus Ihrer Wallet | Ja |
GET/orders/{order_id} | Bestellstatus und Codes | Nein |
GET/recharge/countries | Länder, die Sie aufladen können | Nein |
GET/recharge/operators | Mobilfunkanbieter und Beträge eines Landes | Nein |
POST/recharge/quote | Preis für eine Handy-Aufladung | Ja |
POST/recharge/orders | Ein Telefon aufladen, bezahlt aus Ihrer Wallet | Ja |
GET/recharge/orders | Ihre Aufladungsbestellungen auflisten | Nein |
GET/recharge/orders/{order_id} | Status einer Aufladungsbestellung | Nein |
Alle anderen Endpunkte antworten mit HTTP 403, wenn Sie sie mit einem API-Key aufrufen:
{"detail": "This operation is only available in the Merchant Portal."}Handy-Aufladungen sind unter Handy-Aufladung beschrieben.
#IDs
| Was | Beispiel | Hinweis |
|---|---|---|
| Merchant ID | M00000001 | Ihre Händlernummer. Ändert sich nie. |
| SKU (ein Produkt, das Sie kaufen können) | S000456 | Für Preisabfrage und Bestellung. |
| CardV-Bestell-ID | O-00001234 | Speichern Sie sie zu Ihrer Bestellung. |
| Ihre Bestellnummer | SHOP-10001 | Legen Sie selbst fest (external_order_id). |
Speichern Sie IDs als Text und zerlegen Sie sie nicht. Siehe Grundregeln.
#Im Merchant Portal
- Wallet aufladen und E-Mail-Warnung bei niedrigem Guthaben
- Bestellverlauf, Suche und CSV-Export
- Rechnungen zu Bestellungen
- Wallet-Buchungen und Abgleich
- Webhooks einrichten, Zustellverlauf ansehen und erneut senden
- API-Keys
- IP-Allowlist
- Teammitglieder und Rollen
- Audit-Log
- Zwei-Faktor-Authentifizierung (2FA)
- Wechsel zwischen Live und Sandbox
#Kompatibilität und Support
Wir können jederzeit neue Felder und neue Statuswerte in Antworten ergänzen. Ignorieren Sie Felder, die Sie nicht kennen. Behandeln Sie einen unbekannten Bestellstatus als „noch nicht fertig“. Verlassen Sie sich nicht auf den Wortlaut von Fehlermeldungen.
Schreiben Sie an [email protected] und nennen Sie Ihre Merchant ID, die Umgebung, die Bestell-IDs, die Uhrzeit (UTC) und den HTTP-Status.
Schicken Sie nie API-Keys, Signaturen, Webhook-Secrets oder Kartencodes.
Fragen zur Integration? Schreiben Sie an [email protected] und nennen Sie Ihre Merchant ID sowie die Bestell- oder Request-ID.