Response to server-side API requests: 400: Bad request
billing_issue_detected_at_date_comparison_error
Bir faturalama sorunu, abonelik yenileme girişimi sırasında bir sorun oluştuğunda meydana gelir; bu nedenle her zaman işlem tarihinden (purchased_at) sonra gerçekleşir.
Bunu çözmek için faturalama sorunu tarihinin (billing_issue_detected_at) işlem tarihinden (purchased_at) sonra olduğundan emin olun.
Gövde
| Parametre | Tür | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Her zaman billing_issue_detected_at_date_comparison_error. |
| status_code | Integer | HTTP durumu. Her zaman 400. |
Örnek yanıt
{
"errors": [
{
"source": "billing_issue_detected_at",
"errors": [
"billing_issue_detected_at must be later than purchased_at."
]
}
],
"error_code": "billing_issue_detected_at_date_comparison_error",
"status_code": 400
}
expires_date_error
Süresi dolmuş bir aboneliği kullanıcı satın alamaz. Bu nedenle expires_at tarihi (aboneliğin sona erdiği tarih) her zaman purchased_at tarihinden (işlemin gerçekleştiği tarih) sonra olmalıdır.
Bunu düzeltmek için bu tarihleri kontrol edin ve expires_at değerinin purchased_at değerinden sonra olduğundan emin olun.
Body
| Parametre | Tür | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Her zaman expires_date_error. |
| status_code | Integer | HTTP durumu. Her zaman 400. |
Örnek yanıt
{
"errors": [
{
"source": "expires_at",
"errors": [
"expires_at must be later than purchased_at."
]
}
],
"error_code": "expires_date_error",
"status_code": 400
}
family_share_price_error
İstek başarısız oldu çünkü is_family_shared parametresi true olarak ayarlanmış, yani access level bir aile üyesiyle ücretsiz paylaşılıyor. Ancak Price nesnesinin value parametresi sıfır olarak ayarlanmamış.
is_family_shared değeri true olacaksa, Price nesnesinin value parametresini 0 olarak ayarladığınızdan emin olun.
Body
| Parametre | Tür | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Her zaman: family_share_price_error. |
| status_code | Integer | HTTP durumu. Her zaman 400. |
Yanıt örneği
Profil bulunamadı
{
"errors": [
{
"source": "is_family_shared",
"errors": [
"If is_family_shared is true, price.value must be 0."
]
}
],
"error_code": "family_share_price_error",
"status_code": 400
}
free_trial_price_error
İstek başarısız oldu çünkü offer_type parametresi free_trial olarak ayarlanmış, ancak Price nesnesinin value parametresi sıfıra ayarlanmamış.
Bir diğer olası neden, offer_id parametresinin dahil edilmiş ancak null bırakılmış olmasıdır; oysa bu parametre null olamaz. Bu durumda ya offer_id için bir değer sağlayın ya da parametreyi tamamen kaldırın.
Body
| Parametre | Tür | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Her zaman: free_trial_price_error. |
| status_code | Integer | HTTP durumu. Her zaman 400. |
Yanıt örneği
Profil bulunamadı
{
"errors": [
{
"source": "offer_type",
"errors": [
"If offer_type is 'free_trial', price.value must be 0."
]
}
],
"error_code": "free_trial_price_error",
"status_code": 400
}
grace_period_expires_date_error
Ek süre, müşterilere aboneliklerini zamanında yenilememeleri durumunda—örneğin kredi kartlarının işleme alınamaması gibi—aboneliklerini uzatmaları için tanınan ekstra süredir. Bu sayede müşteriler sorunu çözerken ayarları korunmuş olur. Ek süre sunmak isteğe bağlıdır.
Ek süre sunuyorsanız, ek süre bitiş tarihi (grace_period_expires_at) abonelik bitiş tarihinden (expires_at) sonra olmalıdır. Aksi takdirde ek süre bitiş zamanı, abonelik bitiş zamanıyla aynı olur. Her durumda, ek süre bitişi abonelik bitişinden önce olamaz.
Bunu düzeltmek için ek süre bitiş tarihinin (grace_period_expires_at), abonelik bitiş tarihinden (expires_at) sonra olduğundan emin olun.
Gövde
| Parametre | Tür | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Her zaman grace_period_expires_date_error. |
| status_code | Integer | HTTP durumu. Her zaman 400. |
Yanıt örneği
{
"errors": [
{
"source": "grace_period_expires_at",
"errors": [
"grace_period_expires_at must be later or equal to expires_at."
]
}
],
"error_code": "grace_period_expires_date_error",
"status_code": 400
}
grace_period_billing_error
Ek sürenin başlangıcı bir ödeme sorunu olarak kabul edilir. Dolayısıyla ek süre başladıysa (grace_period_expires_at parametresi doluysa), başlangıç tarihi billing_issue_detected_at parametresine kaydedilmelidir.
Bunu düzeltmek için ya ek sürenin başlangıcını billing_issue_detected_at alanına girin ya da ek süre henüz başlamadıysa grace_period_expires_at parametresini kaldırın.
Gövde
| Parametre | Tür | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Her zaman grace_period_billing_error. |
| status_code | Integer | HTTP durum kodu. Her zaman 400. |
Yanıt örneği
{
"errors": [
{
"source": "grace_period_billing_error",
"errors": [
"If grace_period_expires_at is specified, billing_issue_detected_at must also be specified."
]
}
],
"error_code": "grace_period_billing_error",
"status_code": 400
}
missing_offer_id
İstek, offer_category parametresinin introductory dışında bir değer içermesi ya da offer_type kullanılmasına rağmen offer_id eklenmemesi nedeniyle başarısız oldu. Bu durumda ya bir offer_id değeri sağlayın ya da istekten offer_category veya offer_type parametresini kaldırın.
Bir diğer olası neden, offer_id parametresinin eklenmiş ancak null bırakılmış olmasıdır; oysa bu parametre null olamaz. Bu durumdaysa ya offer_id için bir değer girin ya da parametreyi tamamen kaldırın.
Body
| Parametre | Tür | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Olası değer: missing_offer_id. |
| status_code | Integer | HTTP durum kodu. Her zaman 400. |
Örnek yanıt
Profil bulunamadı
{
"errors": [
{
"source": "offer_category",
"errors": [
"offer_id must be specified for all offer types except 'introductory'."
]
}
],
"error_code": "missing_offer_id",
"status_code": 400
}
one_time_purchase_trial_error
İstek, tek seferlik satın alma ile deneme süresi sağlandığı için başarısız oldu. Aboneliklerin aksine, tek seferlik satın alımların deneme süresi olamaz. Bunu düzeltmek için One-Time Purchase nesnesi içindeki Offer nesnesindeki offer_type değerini kontrol edin. offer_type değeri free_trial olamaz. offer_type alan değerini değiştirin ya da One-Time Purchase nesnesi yerine Subscription nesnesini kullanmaya geçin.
Gövde
| Parametre | Tür | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Her zaman one_time_purchase_trial_error. |
| status_code | Integer | HTTP durumu. Her zaman 400. |
Yanıt örneği
{
"errors": [
{
"source": "offer.type",
"errors": [
"One-time purchase cannot have a trial."
]
}
],
"error_code": "one_time_purchase_trial_error",
"status_code": 400
}
originally_purchased_date_error
Uzun süreli abonelikler için bir işlem zinciri oluşturulur. Orijinal işlem bu zincirdeki ilk işlemdir ve sonraki tüm işlemleri birbirine bağlar. Her yenileme, bu orijinal işlemin bir uzantısıdır. İşlem ilk satın alma ise, kendi orijinal işlemi olarak kabul edilir.
originally_purchased_at zaman damgası orijinal satın alma zamanını, purchased_at ise mevcut işlemin zamanını gösterir. Bu nedenle purchased_at, originally_purchased_at değerinden daha erken bir tarih olamaz; en fazla, ilk işlemde bu iki değer aynı olabilir.
İstek başarısız oldu çünkü originally_purchased_at, purchased_at değerinden daha sonraki bir tarihe ayarlanmış. Bu değerin purchased_at ile eşit ya da ondan daha erken olduğundan emin olun.
Gövde
| Parametre | Tür | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Her zaman originally_purchased_date_error. |
| status_code | Integer | HTTP durum kodu. Her zaman 400. |
Yanıt örneği
{
"errors": [
{
"source": "originally_purchased_at",
"errors": [
"originally_purchased_at must be earlier than or equal to purchased_at."
]
}
],
"error_code": "originally_purchased_date_error",
"status_code": 400
}
paid_access_level_does_not_exist
İstek, istekte belirtilen access level bulunamadığı için başarısız oldu. access_level_id değerinde yazım hatası olmadığını ve doğru uygulamayla eşleştiğini kontrol edin.
Gövde
| Parametre | Tür | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Olası değer: paid_access_level_does_not_exist. |
| status_code | Integer | HTTP durumu. Her zaman 404. |
Yanıt örneği
Access level bulunamadı.
{
"errors": [
{
"source": "non_field_errors",
"errors": [
"Paid access level `premium` does not exist"
]
}
],
"error_code": "paid_access_level_does_not_exist",
"status_code": 400
}
profile_does_not_exist
İstek başlığındaki profil bulunamadığı için istek başarısız oldu. İstek başlığına girdiğiniz profile_id veya customer_user_id değerinde yazım hatası olmadığından emin olun ve doğru uygulama için olduğunu kontrol edin.
Body
| Parametre | Tür | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Olası değer: profile_does_not_exist. |
| status_code | Integer | HTTP durumu. Her zaman 400. |
Yanıt örneği
Profil bulunamadı
{
"errors": [
{
"source": "non_field_errors",
"errors": [
"Profile not found"
]
}
],
"error_code": "profile_does_not_exist",
"status_code": 400
}
profile_paid_access_level_does_not_exist
İstekteki profil, belirtilen access level ile eşleşmediğinden istek başarısız oldu. Profil ID’sinin başlıkta ve access level ID’sinin gövdede doğru olduğundan emin olun; yazım hatası olmadığını kontrol edin.
Gövde
| Parametre | Tür | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Her zaman profile_paid_access_level_does_not_exist. |
| status_code | Integer | HTTP durumu. Her zaman 400. |
Yanıt örneği
{
"errors": [
{
"source": "non_field_errors",
"errors": [
"Profile `478b2e7f-d557-4b8b-9c5f-cbd46fc2dee2` has no `premium` access level"
]
}
],
"error_code": "profile_paid_access_level_does_not_exist",
"status_code": 400
}
refund_date_error
İstek, satın alma tarihi (purchased_at) iade tarihine (refunded_at) eşit veya ondan daha sonra olduğu için başarısız oldu. İade işlemi her zaman satın almadan sonra gerçekleşir çünkü ilgili işlemi geri alır.
Bunu düzeltmek için purchased_at ve refunded_at parametrelerini kontrol edin ve iade tarihinin satın alma tarihinden daha sonra olduğundan emin olun.
Gövde
| Parametre | Tür | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Her zaman refund_date_error. |
| status_code | Integer | HTTP durum kodu. Her zaman 400. |
Yanıt örneği
{
"errors": [
{
"source": "refunded_at",
"errors": [
"refunded_at must be later than purchased_at."
]
}
],
"error_code": "refund_date_error",
"status_code": 400
}
refund_fields_error
İstek, cancellation_reason içerip refunded_at tarihi içermediği ya da refunded_at içerip cancellation_reason içermediği için başarısız oldu.
Bir iade ayarlandığında, hem iade tarihi hem de nedeni belirtilmelidir.
Body
| Parametre | Tür | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Her zaman refund_fields_error. |
| status_code | Integer | HTTP durumu. Her zaman 400. |
Yanıt örneği
{
"errors": [
{
"source": "refunded_at",
"errors": [
"refunded_at and cancellation_reason=refund must be specified together."
]
}
],
"error_code": "refund_fields_error",
"status_code": 400
}
renew_status_changed_date_error
Yenileme, bir aboneliğin uzatılmasıdır. Kullanıcı abonelik uzatmayı iptal edebilir ve ardından tekrar uzatabilir. Bu iki işlemin zamanı renew_status_changed_at parametresinde saklanır. Ve bu, işlemin kendisinden daha erken bir zamanda gerçekleşemez.
Sorunu düzeltmek için renew_status_changed_at değerinin işlem zamanından (purchased_at) daha sonra olduğundan emin olun.
Body
| Parametre | Tür | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Her zaman originally_purchased_date_error. |
| status_code | Integer | HTTP durumu. Her zaman 400. |
Yanıt örneği
{
"errors": [
{
"source": "renew_status_changed_at",
"errors": [
"renew_status_changed_at must be later than purchased_at."
]
}
],
"error_code": "renew_status_changed_date_error",
"status_code": 400
}
revocation_date_more_than_expiration_date
İstekte tanımladığınız revoke_at değeri, mevcut access level’ın expires_at parametresinden daha ileri bir tarihe işaret ettiği için istek başarısız oldu. Access level’ı uzatmak istiyorsanız Access level tanımlama isteğini kullanın.
Gövde
| Parametre | Tür | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Her zaman revocation_date_more_than_expiration_date. |
| status_code | Integer | HTTP durumu. Her zaman 400. |
Yanıt örneği
{
"errors": [
{
"source": "revoke_at",
"errors": [
"Revocation date (2029-08-29 09:33:42+00:00) is more than current expiration date (2028-08-29 09:33:42+00:00)"
]
}
],
"error_code": "revocation_date_more_than_expiration_date",
"status_code": 400
}
store_transaction_id_error
Uzatılmış aboneliklerde bir abonelik zinciri oluşturulur. Orijinal işlem, bu zincirdeki ilk işlemdir ve zincir ona bağlıdır. Zincirdeki diğer işlemler ise uzatmalardır. Bir işlem abonelik zincirindeki ilk satın alma ise kendi orijinal işlemi olabilir.
Diğer bir durum ise tek seferlik satın almadır. Uzatma yapılamayacağından hiçbir zaman zincir oluşturmaz. Bu durumda store_transaction_id her zaman store_original_transaction_id ile aynıdır.
İsteğiniz başarısız oldu çünkü Tek Seferlik Satın Alma nesnesindeki store_transaction_id değeri, store_original_transaction_id değerinden farklı. Sorunu gidermek için ya ikisini aynı yapın ya da nesneyi değiştirin — Tek Seferlik Satın Alma yerine Abonelik kullanın.
Gövde
| Parametre | Tür | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Her zaman store_transaction_id_error. |
| status_code | Integer | HTTP durumu. Her zaman 400. |
Yanıt örneği
{
"errors": [
{
"source": "store_transaction_id",
"errors": [
"store_transaction_id must be equal to store_original_transaction_id for purchase."
]
}
],
"error_code": "store_transaction_id_error",
"status_code": 400
}
value_error
İstek başarısız oldu çünkü belirtilen iptal tarihi geçmişte kalıyor. revoke_at değerini gelecekteki bir tarih olarak ayarlayın ya da erişimi hemen iptal etmek için null olarak belirtin.
Body
| Parametre | Tip | Açıklama |
|---|---|---|
| errors | Object |
|
| error_code | String | Kısa hata adı. Her zaman value_error. |
| status_code | Integer | HTTP durum kodu. Her zaman 400. |
Yanıt örneği
{
"errors": [
{
"source": null,
"errors": [
"Must be greater than the current time or null"
]
}
],
"error_code": "value_error",
"status_code": 400
}