1. API anahtarı oluşturun
"Reseller API" altındaki müşteri paneline giriş yapın ve bir anahtar oluşturun. Yalnızca gerçekten ihtiyacınız olan kapsam/izinleri seçin (varsayılan: salt okunur). Gizli anahtar yalnızca bir kez gösterilir, gizli anahtar yöneticinizde güvenli şekilde saklayın.
2. Erişim bilgilerini saklayın
API anahtarını ve gizli anahtarı ortam değişkeni olarak saklayın, asla kodun içinde, asla depoda tutmayın.
# .env veya kabuk profili
export KH_KEY="kh_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
export KH_SECRET="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
3. İlk isteğinizi gönderin
Mevcut ürünlerin listesini çekin. İmza metot, yol, zaman damgası, nonce ve gövde hash'i üzerinden oluşturulur.
TS=$(date +%s)
NONCE=$(openssl rand -hex 16)
BODY_SHA256=$(printf '' | openssl dgst -sha256 -hex | awk '{print $2}')
SIG_INPUT=$(printf 'GET\n/v1/products\n%s\n%s\n%s' "$TS" "$NONCE" "$BODY_SHA256")
SIG=$(printf '%s' "$SIG_INPUT" | openssl dgst -sha256 -hmac "$KH_SECRET" -hex | awk '{print $2}')
curl https://www.kernelhost.com/cp/kh_reseller_api/v1/products \
-H "KH-Key: $KH_KEY" \
-H "KH-Timestamp: $TS" \
-H "KH-Nonce: $NONCE" \
-H "KH-Signature: $SIG"
4. Sipariş verin
Önemli: POST /v1/orders bir Idempotency-Key gerektirir. Aynı anahtarla ağ tekrar denemesinde aynı yanıtı alırsınız, çift sipariş oluşmaz.
BODY='{"product_id":42,"billing_cycle":"monthly"}'
BODY_SHA256=$(printf '%s' "$BODY" | openssl dgst -sha256 -hex | awk '{print $2}')
TS=$(date +%s)
NONCE=$(openssl rand -hex 16)
IDEM=$(openssl rand -hex 16)
SIG_INPUT=$(printf 'POST\n/v1/orders\n%s\n%s\n%s' "$TS" "$NONCE" "$BODY_SHA256")
SIG=$(printf '%s' "$SIG_INPUT" | openssl dgst -sha256 -hmac "$KH_SECRET" -hex | awk '{print $2}')
curl -X POST https://www.kernelhost.com/cp/kh_reseller_api/v1/orders \
-H "KH-Key: $KH_KEY" \
-H "KH-Timestamp: $TS" \
-H "KH-Nonce: $NONCE" \
-H "KH-Signature: $SIG" \
-H "Idempotency-Key: $IDEM" \
-H "Content-Type: application/json" \
--data "$BODY"
5. Webhook tanımlayın (isteğe bağlı)
Olayları asenkron almak için anahtar başına bir HTTPS URL tanımlayın (order.paid, service.provisioned, invoice.created). Yük imzası Stripe şemasını izler.

