Geliştiriciler/Başlarken
CardV Merchant API
CardV, işletmelere hediye kartı, oyun yüklemesi ve eSIM gibi ön ödemeli dijital ürünler satar. Merchant API sayesinde sunucunuz bu ürünleri otomatik olarak satın alabilir. Bakiyenizi görür, ürünü bulur, fiyatını öğrenir, siparişi verir ve kodları alırsınız. Siparişlerin ödemesi, CardV'deki ön ödemeli cüzdanınızdan yapılır. Bakiye yükleme ve sipariş geçmişi gibi diğer her şey Merchant Portal'dan yapılır.
#Dokümanlar
| Doküman | İçerik |
|---|---|
| Kimlik doğrulama | Başlıklar, istek imzalama, anahtar kurulumu |
| Ürünler ve siparişler | Bakiye, döviz kuru, ürünler, fiyatlar, siparişler, kodlar |
| Mobil hat yükleme | Telefon yüklemeleri: operatörler, fiyat sorguları, yükleme siparişleri |
| Genel kurallar | Tutarlar, tarihler, numaralar, istek limiti, hatalar |
| Webhook'lar | Sunucunuza gönderilen sipariş bildirimleri |
| Sandbox | Test ve canlıya geçiş kontrol listesi |
| Güvenlik | Anahtarları ve kodları korumak |
#Ortamlar
| Live | Sandbox | |
|---|---|---|
| API adresi | https://b2b.cardv.net/api/v1 | https://sandbox.cardv.net/api/v1 |
| Merchant Portal | https://b2b.cardv.net/portal/ | Aynı Portal, Sandbox'a geçin |
Sandbox, CardV'nin test parasıyla çalışan ayrı bir test kopyasıdır. API anahtarları, bakiyeler, siparişler ve ürün numaraları iki ortamda birbirinden farklıdır.
#Hızlı başlangıç
Başvurun. Portal'dan üye işyeri hesabı için başvurun ve e-posta adresinizi doğrulayın.
Onayı bekleyin. CardV işletmenizi inceler. Ardından size bir Merchant ID (üye işyeri numarası) verilir, örneğin
M00000001.Sandbox'ı açın. Portal'a giriş yapın ve üst menüden Sandbox'ı seçin. Hesabınıza 1.000 USD test parası tanımlanır.
API anahtarı oluşturun. Portal'da Integrations → API keys bölümüne gidin. Bir anahtar oluşturun. Portal, anahtar kimliğini ve imzalama sırrını yalnızca bir kez gösterir. Sırrı gizli bilgi deponuza kaydedin.
Bakiyenizi kontrol edin:
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"Bir ürün bulun:
cardv_get "/api/v1/skus?search=steam&limit=20""availability": "available"olan bir ürün seçin vesku_iddeğerini not edin.Fiyatı öğrenin:
cardv_get "/api/v1/skus/S000001/quote?quantity=1"merchant_pricedeğerini not edin. Bu, adet başına ödeyeceğiniz tutardır.Siparişi verin. Her istek gibi bunu da imzalayın. Kimlik doğrulama sayfasındaki örneklerden birini şu gövdeyle kullanın:
{ "external_order_id": "TEST-0001", "items": [ {"sku_id": "S000001", "quantity": 1, "expected_unit_price": "9.25"} ] }Yanıt olarak HTTP 201 ve
O-00001234gibi bir CardV sipariş numarası alırsınız.Kodları alın. Durum
succeededolana kadarGET/api/v1/orders/O-00001234isteğini tekrarlayın. Kodlaritems[].deliveries[]içindedir:card_number,pin_codeveredeem_url. Sipariş tamamlandığında bir Webhook bildirimi de alabilirsiniz.Canlıya geçin. Önce Sandbox kontrol listesini tamamlayın.
Yukarıdaki numaralar ve fiyatlar örnektir. Kendi kataloğunuzda dönen değerleri kullanın.
#Kısaca API
Toplam on altı uç nokta vardır. Tüm yollar /api/v1 ile başlar.
| Uç nokta | Ne işe yarar | İmza |
|---|---|---|
GET/account | Şirket bilgileriniz ve API durumu | Hayır |
GET/balance | Harcayabileceğiniz tutar | Hayır |
GET/fx-rates | USD'den döviz kuru (başka para birimiyle satan mağazalar için) | Hayır |
GET/products | Ürün listesi, her biri tüm SKU'larıyla | Hayır |
GET/products/{product_id} | Tek ürün, SKU'ları ve tam metinleriyle | Hayır |
GET/skus | Satın alabileceğiniz ürünler ve size özel fiyatları | Hayır |
GET/skus/{sku_id} | Tek bir ürün | Hayır |
GET/skus/{sku_id}/quote | Belirli bir adet için güncel fiyat | Hayır |
POST/orders | Cüzdanınızdan ödenen sipariş verme | Evet |
GET/orders/{order_id} | Sipariş durumu ve kodlar | Hayır |
GET/recharge/countries | Yükleme yapabileceğiniz ülkeler | Hayır |
GET/recharge/operators | Bir ülkedeki telefon operatörleri ve tutarlar | Hayır |
POST/recharge/quote | Tek bir mobil hat yüklemesinin fiyatı | Evet |
POST/recharge/orders | Cüzdanınızdan ödenen telefon yüklemesi | Evet |
GET/recharge/orders | Yükleme siparişlerinizin listesi | Hayır |
GET/recharge/orders/{order_id} | Yükleme siparişinin durumu | Hayır |
Başka bir uç noktayı API anahtarıyla çağırırsanız HTTP 403 alırsınız:
{"detail": "This operation is only available in the Merchant Portal."}Mobil hat yükleme, Mobil hat yükleme sayfasında anlatılıyor.
#Numaralar
| Ne | Örnek | Not |
|---|---|---|
| Merchant ID | M00000001 | Size aittir. Hiç değişmez. |
| SKU (satın alabileceğiniz bir ürün) | S000456 | Fiyat sorgusu ve sipariş için kullanılır. |
| CardV sipariş numarası | O-00001234 | Kendi siparişinizle birlikte saklayın. |
| Kendi sipariş numaranız | SHOP-10001 | Siz belirlersiniz (external_order_id). |
Numaraları metin olarak saklayın. İçlerini ayrıştırmaya çalışmayın. Bkz. Genel kurallar.
#Portal'dan yapılanlar
- Cüzdana bakiye yükleme ve düşük bakiye e-posta uyarısı
- Sipariş geçmişi, arama ve CSV dışa aktarma
- Sipariş faturaları
- Cüzdan hareketleri ve mutabakat
- Webhook kurulumu, gönderim geçmişi ve yeniden gönderme
- API anahtarları
- IP izin listesi
- Ekip üyeleri ve roller
- Denetim kaydı
- İki adımlı doğrulama (2FA)
- Live ile Sandbox arasında geçiş
#Uyumluluk ve destek
Yanıtlara önceden haber vermeden yeni alanlar ve yeni durum değerleri ekleyebiliriz. Tanımadığınız alanları yok sayın. Bilinmeyen bir sipariş durumunu "henüz tamamlanmadı" olarak değerlendirin. Hata mesajlarının metnine güvenmeyin.
Destek için [email protected] adresine yazın. Merchant ID'nizi, ortamı, sipariş numaralarını, saati (UTC) ve HTTP durum kodunu ekleyin.
API anahtarlarını, imzaları, Webhook sırlarını veya kart kodlarını asla göndermeyin.
Entegrasyonla ilgili sorunuz mu var? Merchant ID’nizi ve sipariş ya da istek kimliğini ekleyerek [email protected] adresine yazın.