ÿÿ Response to server-side API requests: 400: Bad request

Response to server-side API requests: 400: Bad request

billing_issue_detected_at_date_comparison_error

請求ã®å•題ã¯ã€ã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—ã‚·ãƒ§ãƒ³ã®æ›´æ–°è©¦è¡Œä¸­ã«å•題ãŒç™ºç”Ÿã—ãŸéš›ã«èµ·ã“ã‚‹ãŸã‚ã€å¸¸ã«ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³æ—¥ï¼ˆpurchased_at)より後ã«ç™ºç”Ÿã—ã¾ã™ã€‚

ã“れを解決ã™ã‚‹ã«ã¯ã€è«‹æ±‚å•é¡Œã®æ—¥ä»˜ï¼ˆbilling_issue_detected_at)ãŒãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³æ—¥ï¼ˆpurchased_at)より後ã«ãªã‚‹ã‚ˆã†ã«è¨­å®šã—ã¦ãã ã•ã„。

Body

ParameterTypeDescription
errorsObject
  • source: (string) 常㫠billing_issue_detected_at
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ç¸®å。常㫠billing_issue_detected_at_date_comparison_error。
status_codeIntegerHTTP ステータス。常㫠400。

レスãƒãƒ³ã‚¹ä¾‹

{
  "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

ユーザーã¯ã™ã§ã«æœŸé™åˆ‡ã‚Œã®ã‚µãƒ–スクリプションを購入ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。ãã®ãŸã‚ã€expires_atã®æ—¥ä»˜ï¼ˆã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—ã‚·ãƒ§ãƒ³ã®æœ‰åŠ¹æœŸé™ï¼‰ã¯ã€purchased_atã®æ—¥ä»˜ï¼ˆãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®ç™ºç”Ÿæ—¥ï¼‰ã‚ˆã‚Šå¾Œã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚

ã“れを修正ã™ã‚‹ã«ã¯ã€ã“ã‚Œã‚‰ã®æ—¥ä»˜ã‚’確èªã—ã€expires_atãŒpurchased_atより後ã«ãªã£ã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。

ボディ

パラメータ型説明
errorsObject
  • source: (string) 常㫠expires_at
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ç¸®å。常㫠expires_date_error。
status_codeIntegerHTTPステータス。常㫠400。

レスãƒãƒ³ã‚¹ä¾‹

{
  "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

is_family_shared パラメータ㌠true ã«è¨­å®šã•れã¦ã„ã‚‹ãŸã‚ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒå¤±æ•—ã—ã¾ã—ãŸã€‚ã“れã¯ã‚¢ã‚¯ã‚»ã‚¹ãƒ¬ãƒ™ãƒ«ãŒãƒ•ァミリーメンãƒãƒ¼ã¨ç„¡æ–™ã§å…±æœ‰ã•れるã“ã¨ã‚’æ„味ã—ã¾ã™ã€‚ã—ã‹ã—ã€Price オブジェクト㮠value パラメータãŒã‚¼ãƒ­ã«è¨­å®šã•れã¦ã„ã¾ã›ã‚“。

is_family_shared ã‚’ true ã«ã™ã‚‹å ´åˆã¯ã€Price オブジェクト㮠value パラメータを 0 ã«è¨­å®šã—ã¦ãã ã•ã„。

Body

ParameterTypeDescription
errorsObject
  • source: (string) 常㫠is_family_shared
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ã„åå‰ã€‚常㫠family_share_price_error。
status_codeIntegerHTTP ステータス。常㫠400。

レスãƒãƒ³ã‚¹ä¾‹

プロファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“

{
  "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

offer_type パラメーター㌠free_trial ã«è¨­å®šã•れã¦ã„ã‚‹ã«ã‚‚ã‹ã‹ã‚らãšã€Price オブジェクト㮠value パラメーターãŒã‚¼ãƒ­ã«è¨­å®šã•れã¦ã„ãªã„ãŸã‚ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒå¤±æ•—ã—ã¾ã—ãŸã€‚

別ã®åŽŸå› ã¨ã—ã¦ã€offer_id パラメーターãŒå«ã¾ã‚Œã¦ã„ã‚‹ã«ã‚‚ã‹ã‹ã‚ら㚠null ã®ã¾ã¾ã«ãªã£ã¦ã„るケースãŒè€ƒãˆã‚‰ã‚Œã¾ã™ã€‚ã“ã®ãƒ‘ラメーター㫠null ã¯æŒ‡å®šã§ãã¾ã›ã‚“。offer_id ã«å€¤ã‚’指定ã™ã‚‹ã‹ã€ãƒ‘ラメーター自体を削除ã—ã¦ãã ã•ã„。

Body

パラメーター型説明
errorsObject
  • source: (string) 常㫠offer.type
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ã„åå‰ã€‚常㫠free_trial_price_error。
status_codeIntegerHTTP ステータス。常㫠400。

レスãƒãƒ³ã‚¹ä¾‹

プロファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“

{
  "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

グレース期間ã¨ã¯ã€æœŸé™å†…ã«ã‚µãƒ–スクリプションを更新ã§ããªã‹ã£ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼ï¼ˆä¾‹ï¼šã‚¯ãƒ¬ã‚¸ãƒƒãƒˆã‚«ãƒ¼ãƒ‰ã®æ±ºæ¸ˆãŒé€šã‚‰ãªã‹ã£ãŸå ´åˆãªã©ï¼‰ã«å¯¾ã—ã¦ã€å»¶é•·ã®çŒ¶äºˆã‚’与ãˆã‚‹ãŸã‚ã®ä»•組ã¿ã§ã™ã€‚å•題を解決ã™ã‚‹é–“もユーザーã®è¨­å®šã‚’ãã®ã¾ã¾ç¶­æŒã§ãã‚‹ãŸã‚ã€è§£ç´„を防ã効果ãŒã‚りã¾ã™ã€‚ã‚°ãƒ¬ãƒ¼ã‚¹æœŸé–“ã®æä¾›ã¯ä»»æ„ã§ã™ã€‚

グレース期間を設定ã™ã‚‹å ´åˆã€ã‚°ãƒ¬ãƒ¼ã‚¹æœŸé–“ã®æœ‰åŠ¹æœŸé™ï¼ˆgrace_period_expires_at)ã¯ã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—ã‚·ãƒ§ãƒ³ã®æœ‰åŠ¹æœŸé™ï¼ˆexpires_atï¼‰ã‚ˆã‚Šå¾Œã®æ—¥æ™‚ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ãã†ã§ãªã„å ´åˆã€ã‚°ãƒ¬ãƒ¼ã‚¹æœŸé–“ã®æœ‰åŠ¹æœŸé™ã¯ã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—ã‚·ãƒ§ãƒ³ã®æœ‰åŠ¹æœŸé™ã¨åŒã˜ã«ãªã‚Šã¾ã™ã€‚ã„ãšã‚Œã®å ´åˆã‚‚ã€ã‚°ãƒ¬ãƒ¼ã‚¹æœŸé–“ã®æœ‰åŠ¹æœŸé™ãŒã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—ã‚·ãƒ§ãƒ³ã®æœ‰åŠ¹æœŸé™ã‚ˆã‚Šå‰ã«ãªã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。

ã“ã®å•題を解決ã™ã‚‹ã«ã¯ã€ã‚°ãƒ¬ãƒ¼ã‚¹æœŸé–“ã®æœ‰åŠ¹æœŸé™ï¼ˆgrace_period_expires_at)ãŒã‚µãƒ–ã‚¹ã‚¯ãƒªãƒ—ã‚·ãƒ§ãƒ³ã®æœ‰åŠ¹æœŸé™ï¼ˆexpires_atï¼‰ã‚ˆã‚Šå¾Œã®æ—¥æ™‚ã«ãªã‚‹ã‚ˆã†è¨­å®šã—ã¦ãã ã•ã„。

Body

パラメータ型説明
errorsObject
  • source: (string) 常㫠grace_period_expires_at
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ã„å称。常㫠grace_period_expires_date_error。
status_codeIntegerHTTPステータス。常㫠400。

レスãƒãƒ³ã‚¹ä¾‹

{
  "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

グレース期間ã®é–‹å§‹ã¯è«‹æ±‚ã®å•題ã¨ã—ã¦ã‚«ã‚¦ãƒ³ãƒˆã•れã¾ã™ã€‚ãã®ãŸã‚ã€ã‚°ãƒ¬ãƒ¼ã‚¹æœŸé–“ãŒé–‹å§‹ã—ã¦ã„ã‚‹å ´åˆï¼ˆgrace_period_expires_at パラメーターã«å€¤ãŒè¨­å®šã•れã¦ã„ã‚‹ã“ã¨ã§ç¢ºèªã§ãã¾ã™ï¼‰ã€ãã®é–‹å§‹æ—¥ã‚’ billing_issue_detected_at パラメーターã«è¨˜éŒ²ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚

ã“れを修正ã™ã‚‹ã«ã¯ã€billing_issue_detected_at ã«ã‚°ãƒ¬ãƒ¼ã‚¹æœŸé–“ã®é–‹å§‹æ—¥ã‚’設定ã™ã‚‹ã‹ã€ã‚°ãƒ¬ãƒ¼ã‚¹æœŸé–“ãŒã¾ã é–‹å§‹ã—ã¦ã„ãªã„å ´åˆã¯ grace_period_expires_at パラメーターを削除ã—ã¦ãã ã•ã„。

ボディ

パラメーター型説明
errorsObject
  • source: (string) 常㫠grace_period_billing_error
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ã„åå‰ã€‚常㫠grace_period_billing_error。
status_codeIntegerHTTP ステータス。常㫠400。

レスãƒãƒ³ã‚¹ä¾‹

{
  "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

offer_category パラメーターã®å€¤ãŒ introductory 以外ã§ã‚ã‚‹ã‹ã€offer_type ãŒæŒ‡å®šã•れã¦ã„ã‚‹ã«ã‚‚ã‹ã‹ã‚ら㚠offer_id ãŒå«ã¾ã‚Œã¦ã„ãªã„å ´åˆã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã¯å¤±æ•—ã—ã¾ã™ã€‚ã“ã®å ´åˆã€offer_id を指定ã™ã‚‹ã‹ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‹ã‚‰ offer_category ã¾ãŸã¯ offer_type を削除ã—ã¦ãã ã•ã„。

ã¾ãŸã€offer_id パラメーターãŒè¿½åŠ ã•れã¦ã„ã‚‹ã«ã‚‚ã‹ã‹ã‚ら㚠null ã®ã¾ã¾ã«ãªã£ã¦ã„ã‚‹å ´åˆã‚‚原因ã¨ã—ã¦è€ƒãˆã‚‰ã‚Œã¾ã™ï¼ˆnull ã¯è¨±å®¹ã•れã¾ã›ã‚“)。ãã®å ´åˆã¯ã€offer_id ã«å€¤ã‚’設定ã™ã‚‹ã‹ã€ãƒ‘ラメーター自体を削除ã—ã¦ãã ã•ã„。

Body

パラメーター型説明
errorsObject
  • source: (string) 常㫠offer.category
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ã„åå‰ã€‚設定å¯èƒ½ãªå€¤: missing_offer_id。
status_codeIntegerHTTP ステータス。常㫠400。

レスãƒãƒ³ã‚¹ä¾‹

プロファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“

{
  "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

リクエストã¯ã€è²·ã„切り購入ã«ãƒˆãƒ©ã‚¤ã‚¢ãƒ«ãŒæŒ‡å®šã•れã¦ã„ãŸãŸã‚失敗ã—ã¾ã—ãŸã€‚サブスクリプションã¨ã¯ç•°ãªã‚Šã€è²·ã„切り購入ã«ã¯ãƒˆãƒ©ã‚¤ã‚¢ãƒ«ã‚’設定ã§ãã¾ã›ã‚“。修正ã™ã‚‹ã«ã¯ã€One-Time Purchase オブジェクト内㮠Offer オブジェクトã«ã‚ã‚‹ offer_type を確èªã—ã¦ãã ã•ã„。offer_type ã®å€¤ã« free_trial ã¯æŒ‡å®šã§ãã¾ã›ã‚“。offer_type フィールドã®å€¤ã‚’変更ã™ã‚‹ã‹ã€è²·ã„切り購入ã®ä»£ã‚り㫠Subscription オブジェクトを使用ã—ã¦ãã ã•ã„。

Body

パラメーター型説明
errorsObject
  • source: (string) 常㫠offer.type
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ã„åå‰ã€‚常㫠one_time_purchase_trial_error。
status_codeIntegerHTTP ステータス。常㫠400。

レスãƒãƒ³ã‚¹ä¾‹

{
  "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

継続ã™ã‚‹ã‚µãƒ–スクリプションã§ã¯ã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®ãƒã‚§ãƒ¼ãƒ³ãŒä½œæˆã•れã¾ã™ã€‚最åˆã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒã“ã®ãƒã‚§ãƒ¼ãƒ³ã®èµ·ç‚¹ã¨ãªã‚Šã€ä»¥é™ã®ã™ã¹ã¦ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚’リンクã—ã¾ã™ã€‚儿›´æ–°ã¯ã“ã®æœ€åˆã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®å»¶é•·ã«éŽãŽã¾ã›ã‚“。トランザクションãŒåˆå›žè³¼å…¥ã®å ´åˆã€ãれ自体ãŒå…ƒã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¨ãªã‚Šã¾ã™ã€‚

originally_purchased_at ã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ã¯æœ€åˆã®è³¼å…¥æ—¥æ™‚を示ã—ã€purchased_at ã¯ç¾åœ¨ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®æ—¥æ™‚を示ã—ã¾ã™ã€‚ãã®ãŸã‚ã€purchased_at ㌠originally_purchased_at より早ããªã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。最åˆã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®å ´åˆã«é™ã‚Šã€ä¸¡è€…ãŒåŒã˜å€¤ã«ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚

originally_purchased_at ㌠purchased_at ã‚ˆã‚Šå¾Œã®æ—¥ä»˜ã«è¨­å®šã•れã¦ã„ã‚‹ãŸã‚ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒå¤±æ•—ã—ã¾ã—ãŸã€‚originally_purchased_at ㌠purchased_at 以å‰ã®æ—¥ä»˜ã«ãªã‚‹ã‚ˆã†ç¢ºèªã—ã¦ãã ã•ã„。

ボディ

パラメータ型説明
errorsObject
  • source: (string) 常㫠originally_purchased_at
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ã„åå‰ã€‚常㫠originally_purchased_date_error。
status_codeIntegerHTTP ステータス。常㫠400。

レスãƒãƒ³ã‚¹ä¾‹

{
  "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
}

ãƒªã‚¯ã‚¨ã‚¹ãƒˆã§æŒ‡å®šã•れãŸã‚¢ã‚¯ã‚»ã‚¹ãƒ¬ãƒ™ãƒ«ãŒè¦‹ã¤ã‹ã‚‰ãªã‹ã£ãŸãŸã‚ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒå¤±æ•—ã—ã¾ã—ãŸã€‚access_level_id ã«ã‚¿ã‚¤ãƒãŒãªã„ã‹ã€ã¾ãŸæ­£ã—ã„アプリã«å¯¾å¿œã—ã¦ã„ã‚‹ã‹ã‚’確èªã—ã¦ãã ã•ã„。

ボディ

パラメーター型説明
errorsObject
  • source: (string) 常㫠non_field_errors
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ã„å称。å–りã†ã‚‹å€¤: paid_access_level_does_not_exist。
status_codeIntegerHTTP ステータス。常㫠404。

レスãƒãƒ³ã‚¹ä¾‹

アクセスレベルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚

{
  "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

リクエストヘッダーã®ãƒ—ロファイルãŒè¦‹ã¤ã‹ã‚‰ãªã‹ã£ãŸãŸã‚リクエストãŒå¤±æ•—ã—ã¾ã—ãŸã€‚リクエストヘッダーã«å…¥åŠ›ã—㟠profile_id ã¾ãŸã¯ customer_user_id ã«ã‚¿ã‚¤ãƒãŒãªã„ã‹ç¢ºèªã—ã€æ­£ã—ã„アプリ用ã®ã‚‚ã®ã‹ã©ã†ã‹ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ãã ã•ã„。

ボディ

パラメーター型説明
errorsObject
  • source: (string) 常㫠non_field_errors
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ã„åå‰ã€‚使用å¯èƒ½ãªå€¤: profile_does_not_exist。
status_codeIntegerHTTPステータス。常㫠400。

レスãƒãƒ³ã‚¹ä¾‹

プロファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“

{
  "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

リクエスト内ã®ãƒ—ロファイルãŒã€æŒ‡å®šã•れãŸã‚¢ã‚¯ã‚»ã‚¹ãƒ¬ãƒ™ãƒ«ã¨ä¸€è‡´ã—ãªã„ãŸã‚ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒå¤±æ•—ã—ã¾ã—ãŸã€‚ヘッダーã®ãƒ—ロファイルIDã¨ãƒœãƒ‡ã‚£ã®ã‚¢ã‚¯ã‚»ã‚¹ãƒ¬ãƒ™ãƒ«IDãŒæ­£ã—ã„ã‹ã€ã‚¿ã‚¤ãƒ—ミスãŒãªã„ã‹ã‚’確èªã—ã¦ãã ã•ã„。

ボディ

パラメーター型説明
errorsObject
  • source: (string) 常㫠non_field_errors
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ç¸®å。常㫠profile_paid_access_level_does_not_exist。
status_codeIntegerHTTPステータス。常㫠400。

レスãƒãƒ³ã‚¹ä¾‹

{
  "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

リクエストãŒå¤±æ•—ã—ã¾ã—ãŸã€‚購入日(purchased_at)ãŒè¿”金日(refunded_at)以å‰ã®æ—¥æ™‚ã«ãªã£ã¦ã„ã‚‹ãŸã‚ã§ã™ã€‚返金ã¯ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®å–り消ã—ã§ã‚ã‚‹ãŸã‚ã€å¿…ãšè³¼å…¥å¾Œã«è¡Œã‚れã¾ã™ã€‚

修正ã™ã‚‹ã«ã¯ã€purchased_at 㨠refunded_at パラメータを確èªã—ã€è¿”金日ãŒè³¼å…¥æ—¥ã‚ˆã‚Šå¾Œã«ãªã£ã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。

Body

パラメータ型説明
errorsObject
  • source: (string) 常㫠refunded_at
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ã„åå‰ã€‚常㫠refund_date_error。
status_codeIntegerHTTP ステータス。常㫠400。

レスãƒãƒ³ã‚¹ä¾‹

{
  "errors": [
    {
      "source": "refunded_at",
      "errors": [
        "refunded_at must be later than purchased_at."
      ]
    }
  ],
  "error_code": "refund_date_error",
  "status_code": 400
}

refund_fields_error

リクエスト㫠cancellation_reason ãŒå«ã¾ã‚Œã¦ã„ã‚‹ã«ã‚‚ã‹ã‹ã‚ら㚠refunded_at ã®æ—¥ä»˜ãŒãªã„å ´åˆã€ã¾ãŸã¯ãã®é€†ã®å ´åˆã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒå¤±æ•—ã—ã¾ã™ã€‚

返金を設定ã™ã‚‹éš›ã¯ã€è¿”金日ã¨è¿”金ç†ç”±ã®ä¸¡æ–¹ã‚’指定ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚

ボディ

パラメーター型説明
errorsObject
  • source: (string) 常㫠refunded_at
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ç¸®å。常㫠refund_fields_error。
status_codeIntegerHTTP ステータス。常㫠400。

レスãƒãƒ³ã‚¹ä¾‹

{
  "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

Renewalã¯ã‚µãƒ–スクリプションã®å»¶é•·ã‚’指ã—ã¾ã™ã€‚ユーザーã¯ã‚µãƒ–スクリプションã®å»¶é•·ã‚’キャンセルã—ã€ãã®å¾Œå†åº¦å»¶é•·ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“れらã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ãŒè¡Œã‚ã‚ŒãŸæ™‚刻㯠renew_status_changed_at パラメータã«ä¿å­˜ã•れã¾ã™ã€‚ã“ã®å€¤ãŒãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³è‡ªä½“よりも早ããªã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。

ã“ã®å•題を解決ã™ã‚‹ã«ã¯ã€renew_status_changed_at ãŒãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã®æ™‚刻(purchased_at)より後ã§ã‚ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。

Body

パラメータ型説明
errorsObject
  • source: (string) 常㫠originally_purchased_at
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ã„å称。常㫠originally_purchased_date_error。
status_codeIntegerHTTPステータス。常㫠400。

レスãƒãƒ³ã‚¹ä¾‹

{
  "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

ãƒªã‚¯ã‚¨ã‚¹ãƒˆã§æŒ‡å®šã—㟠revoke_at ãŒã€ç¾åœ¨ã®ã‚¢ã‚¯ã‚»ã‚¹ãƒ¬ãƒ™ãƒ«ã® expires_at ãƒ‘ãƒ©ãƒ¡ãƒ¼ã‚¿ã‚ˆã‚Šã‚‚å¾Œã®æ—¥æ™‚ã§ã‚ã‚‹ãŸã‚ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸã€‚アクセスレベルを延長ã—ãŸã„å ´åˆã¯ã€ã‚¢ã‚¯ã‚»ã‚¹ãƒ¬ãƒ™ãƒ«ã®ä»˜ä¸Žãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’使用ã—ã¦ãã ã•ã„。

Body

パラメータ型説明
errorsObject
  • source: (string) 常㫠non_field_errors
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ç¸®å。常㫠revocation_date_more_than_expiration_date。
status_codeIntegerHTTP ステータス。常㫠400。

レスãƒãƒ³ã‚¹ä¾‹

  {
  "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

サブスクリプションãŒç¶™ç¶šã•れる場åˆã€ã‚µãƒ–スクリプションã®ãƒã‚§ãƒ¼ãƒ³ãŒç”Ÿæˆã•れã¾ã™ã€‚オリジナルトランザクションã¯ã“ã®ãƒã‚§ãƒ¼ãƒ³ã®æœ€åˆã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã§ã‚りã€ãƒã‚§ãƒ¼ãƒ³ã¯ãれã«ã‚ˆã£ã¦ãƒªãƒ³ã‚¯ã•れã¦ã„ã¾ã™ã€‚ãƒã‚§ãƒ¼ãƒ³å†…ã®ä»–ã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¯ç¶™ç¶šåˆ†ã§ã™ã€‚ãã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒã‚µãƒ–スクリプションãƒã‚§ãƒ¼ãƒ³ã®æœ€åˆã®è³¼å…¥ã§ã‚ã‚‹å ´åˆã€ãれ自身ãŒã‚ªãƒªã‚¸ãƒŠãƒ«ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã«ãªã‚‹ã“ã¨ãŒã‚りã¾ã™ã€‚

ã‚‚ã†ä¸€ã¤ã®ã‚±ãƒ¼ã‚¹ã¯è²·ã„切り購入ã§ã™ã€‚継続ãŒç™ºç”Ÿã—ãªã„ãŸã‚ã€ãƒã‚§ãƒ¼ãƒ³ã¯ä½œæˆã•れã¾ã›ã‚“。買ã„切り購入ã®å ´åˆã€store_transaction_id ã¯å¸¸ã« store_original_transaction_id ã¨åŒã˜å€¤ã«ãªã‚Šã¾ã™ã€‚

è²·ã„切り購入オブジェクト㮠store_transaction_id ã®å€¤ãŒ store_original_transaction_id ã¨ç•°ãªã‚‹ãŸã‚ã€ãƒªã‚¯ã‚¨ã‚¹ãƒˆãŒå¤±æ•—ã—ã¾ã—ãŸã€‚ã“ã®å•題を解決ã™ã‚‹ã«ã¯ã€ä¸¡è€…ã‚’åŒã˜å€¤ã«ã™ã‚‹ã‹ã€ã‚ªãƒ–ジェクトを変更ã—㦠買ã„切り購入ã®ä»£ã‚りã«ã‚µãƒ–スクリプションを使用ã—ã¦ãã ã•ã„。

ボディ

パラメーター型説明
errorsObject
  • source: (string) 常㫠store_transaction_id
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ã„å称。常㫠store_transaction_id_error。
status_codeIntegerHTTPステータス。常㫠400。

レスãƒãƒ³ã‚¹ä¾‹

{
  "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

リクエストã¯ã€æŒ‡å®šã•れãŸå¤±åŠ¹æ—¥ãŒéŽåŽ»ã®æ—¥ä»˜ã§ã‚ã‚‹ãŸã‚ã«å¤±æ•—ã—ã¾ã—ãŸã€‚revoke_at ã‚’å°†æ¥ã®æ—¥ä»˜ã«è¨­å®šã™ã‚‹ã‹ã€ã‚¢ã‚¯ã‚»ã‚¹ã‚’峿™‚失効ã•ã›ã‚‹å ´åˆã¯ null を設定ã—ã¦ãã ã•ã„。

Body
パラメーター型説明
errorsObject
  • source: (string) 常㫠revoke_at。
  • errors: エラーã®èª¬æ˜Žã€‚
error_codeStringエラーã®çŸ­ã„åå‰ã€‚常㫠value_error。
status_codeIntegerHTTP ステータス。常㫠400。
レスãƒãƒ³ã‚¹ä¾‹
{
    "errors": [
        {
            "source": null,
            "errors": [
                "Must be greater than the current time or null"
            ]
        }
    ],
    "error_code": "value_error",
    "status_code": 400
}
ÿÿÿÿ