update-subscription
POST /api/{team}/gateway/update-subscription/{token}
Aboneliği değiştirir ya da iptal eder. Yalnızca gönderilen alanlar yazılır; gönderilmeyenler olduğu gibi kalır. Sona ermiş, tamamlanmış ya da iptal edilmiş bir abonelik ve üzerinde sonuçlanmamış bir ödeme bulunan abonelik değiştirilemez.
Kimlik doğrulama
X-Api-Key, X-Timestamp, X-Signature, Content-Type: application/json. Ayrıntılar: Kimlik Doğrulama ve İmza.
İstek
İptal:
{
"token": "9a2c4e6f-1b3d-4f5a-8c7e-2d4f6a8b0c1e",
"subscription": {
"status": "cancelled"
}
}
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
token | string | evet | Aboneliğin token'ı. Adresteki token'la aynı olmalıdır. |
subscription | object | hayır | Değiştirilecek alanlar; create-subscription ile aynı alanlar ve kurallar. Hiçbiri zorunlu değildir. |
subscription.status | string | hayır | Yalnızca "cancelled" kabul edilir. |
subscription.renewal_limit | integer | null | hayır | Şimdiye kadar ödenen dönem sayısından az olamaz. null sınırı kaldırır. |
customer | object | hayır | Müşteri. Gönderilen alanlar mevcut müşteri bilgisinin üzerine yazılır, gönderilmeyenler korunur. customer.reference silinemez. |
- Yalnızca müşteriyi değiştirmek için
subscriptionhiç gönderilmeyebilir ya da boş gönderilebilir. itemsgönderilirse ödenmemiş bütün dönemlerin tutarı yeniden hesaplanır.
İlk ödemeden sonra değişmeyen alanlar
İlk dönem ödendikten sonra yalnızca subscription.status, subscription.renewal_limit, subscription.period ve subscription.items gönderilebilir; kalemler aynı kalmalı, yalnızca unit_amount değişebilir. Başka bir alan ya da customer gönderilirse istek 422 döner.
İptal
status: "cancelled", gönderilen diğer değişikliklerden sonra uygulanır. Para iade edilmez.
| Durum | Sonuç |
|---|---|
| Ödenmiş dönem sürüyor | cancelled_at dolar, next_payment_at null olur; abonelik dönem sonuna kadar active kalır, sonra cancelled olur. |
| Süren ödenmiş dönem yok | Abonelik hemen cancelled olur. |
İptal edilmiş abonelik bir daha değiştirilemez.
SDK örnekleri
Örneklerdeki $client / client nesnesinin kurulumu: İstemciyi Kurmak. SDK'larda bir alanı boşaltmak için PHP, Python ve Java'da clear, Node.js'de alana null verilir.
- PHP
- Node.js
- Python
- Java
- cURL
use Gurmehub\Odemehub\Enum\SubscriptionStatus;
use Gurmehub\Odemehub\Request\UpdateSubscription;
// İptal
$client->updateSubscription(new UpdateSubscription(token: $subscriptionToken, status: SubscriptionStatus::Cancelled));
// Ödeme sayısı sınırını kaldırmak
$client->updateSubscription(new UpdateSubscription(token: $subscriptionToken, clear: ['renewal_limit']));
// İptal
await client.updateSubscription({ token: subscriptionToken, status: 'cancelled' });
// Ödeme sayısı sınırını kaldırmak
await client.updateSubscription({ token: subscriptionToken, renewalLimit: null });
from odemehub.enums import SubscriptionStatus
from odemehub.request import UpdateSubscription
# İptal
client.update_subscription(UpdateSubscription(token=subscription_token, status=SubscriptionStatus.CANCELLED))
# Ödeme sayısı sınırını kaldırmak
client.update_subscription(UpdateSubscription(token=subscription_token, clear=["renewal_limit"]))
import com.odemehub.enums.SubscriptionStatus;
import com.odemehub.request.UpdateSubscription;
// İptal
client.updateSubscription(UpdateSubscription.builder(subscriptionToken).status(SubscriptionStatus.CANCELLED).build());
// Ödeme sayısı sınırını kaldırmak
client.updateSubscription(UpdateSubscription.builder(subscriptionToken).clear("renewal_limit").build());
URI_PATH="/api/$ODEMEHUB_TEAM/gateway/update-subscription/9a2c4e6f-1b3d-4f5a-8c7e-2d4f6a8b0c1e"
BODY='{"token":"9a2c4e6f-1b3d-4f5a-8c7e-2d4f6a8b0c1e","subscription":{"status":"cancelled"}}'
TIMESTAMP=$(date +%s)
SIGNATURE=$(printf '%s\n%s\n%s\n%s' "$TIMESTAMP" "POST" "$URI_PATH" "$BODY" | openssl dgst -sha256 -hmac "$ODEMEHUB_API_SECRET" | sed 's/^.* //')
curl -X POST "https://sandbox.odemehub.com$URI_PATH" \
-H "Content-Type: application/json" \
-H "X-Api-Key: $ODEMEHUB_API_KEY" \
-H "X-Timestamp: $TIMESTAMP" \
-H "X-Signature: $SIGNATURE" \
--data-raw "$BODY"
Yanıt
retrieve-subscriptions ile aynıdır: result, aboneliğin güncel hâli (subscription) ve customer.
HTTP durum kodları
| Kod | Durum |
|---|---|
200 | Abonelik değiştirildi (ya da iptal edildi). |
401 | API anahtarı ya da imza geçersiz. |
403 | Çalışma alanı işlem yapamıyor, planı abonelikleri kapsamıyor ya da Abonelikler modülü kapalı. |
404 | Bu abonelik bulunamadı. |
422 | Doğrulama hatası ya da abonelik değiştirilemiyor. |
429 | İstek sınırı aşıldı. |
Hatalar
| Alan | Mesaj |
|---|---|
token | Gövdedeki token adresteki token ile aynı olmalı. |
token | Sona ermiş abonelik güncellenemez. / Tamamlanmış abonelik güncellenemez. / İptal edilmiş abonelik güncellenemez; ödenmiş dönemin sonunda sona erecek. / Bu abonelik için bekleyen bir ödeme var, tamamlanmasını bekleyin. |
subscription.status | Abonelik yalnızca iptal edilebilir (status: "cancelled"); diğer durumlar ödemelere göre kendiliğinden değişir. |
subscription.renewal_limit | Ödeme sayısı, şimdiye kadar alınan ödeme sayısından az olamaz. |
subscription | Ödemesi alınmış abonelikte yalnızca iptal (status: "cancelled"), ödeme sayısı (renewal_limit), dönem (period) ve kalem fiyatı (items[].unit_amount) güncellenebilir. |
subscription.items | Ödemesi alınmış abonelikte kalemler aynı kalmalıdır; yalnızca birim fiyatı (unit_amount) değiştirilebilir. |
subscription.* | create-subscription ile aynı alan mesajları. |