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

ParametreTürAçıklama
errorsObject
  • source: (string) Her zaman billing_issue_detected_at
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Her zaman billing_issue_detected_at_date_comparison_error.
status_codeIntegerHTTP 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

ParametreTürAçıklama
errorsObject
  • source: (string) Her zaman expires_at
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Her zaman expires_date_error.
status_codeIntegerHTTP 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

ParametreTürAçıklama
errorsObject
  • source: (string) Her zaman is_family_shared
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Her zaman: family_share_price_error.
status_codeIntegerHTTP 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

ParametreTürAçıklama
errorsObject
  • source: (string) Her zaman offer.type
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Her zaman: free_trial_price_error.
status_codeIntegerHTTP 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

ParametreTürAçıklama
errorsObject
  • source: (string) Her zaman grace_period_expires_at
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Her zaman grace_period_expires_date_error.
status_codeIntegerHTTP 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

ParametreTürAçıklama
errorsObject
  • source: (string) Her zaman grace_period_billing_error
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Her zaman grace_period_billing_error.
status_codeIntegerHTTP 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

ParametreTürAçıklama
errorsObject
  • source: (string) Her zaman offer.category
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Olası değer: missing_offer_id.
status_codeIntegerHTTP 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

ParametreTürAçıklama
errorsObject
  • source: (string) Her zaman offer.type
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Her zaman one_time_purchase_trial_error.
status_codeIntegerHTTP 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

ParametreTürAçıklama
errorsObject
  • source: (string) Her zaman originally_purchased_at
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Her zaman originally_purchased_date_error.
status_codeIntegerHTTP 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
}

İ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

ParametreTürAçıklama
errorsObject
  • source: (string) Her zaman non_field_errors
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Olası değer: paid_access_level_does_not_exist.
status_codeIntegerHTTP 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

ParametreTürAçıklama
errorsObject
  • source: (string) Her zaman non_field_errors
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Olası değer: profile_does_not_exist.
status_codeIntegerHTTP 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

ParametreTürAçıklama
errorsObject
  • source: (string) Her zaman non_field_errors
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Her zaman profile_paid_access_level_does_not_exist.
status_codeIntegerHTTP 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

ParametreTürAçıklama
errorsObject
  • source: (string) Her zaman refunded_at
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Her zaman refund_date_error.
status_codeIntegerHTTP 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

ParametreTürAçıklama
errorsObject
  • source: (string) Her zaman refunded_at
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Her zaman refund_fields_error.
status_codeIntegerHTTP 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

ParametreTürAçıklama
errorsObject
  • source: (string) Her zaman originally_purchased_at
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Her zaman originally_purchased_date_error.
status_codeIntegerHTTP 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

ParametreTürAçıklama
errorsObject
  • source: (string) Her zaman non_field_errors
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Her zaman revocation_date_more_than_expiration_date.
status_codeIntegerHTTP 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

ParametreTürAçıklama
errorsObject
  • source: (string) Her zaman store_transaction_id
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Her zaman store_transaction_id_error.
status_codeIntegerHTTP 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
ParametreTipAçıklama
errorsObject
  • source: (string) Her zaman revoke_at.
  • errors: Hatanın açıklaması.
error_codeStringKısa hata adı. Her zaman value_error.
status_codeIntegerHTTP 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
}