サブスクリプションのステータスを取得すると( https://developers.google.com/Android-publisher/api-ref/purchases/subscriptions/get )APIは
{
"error": {
"errors": [
{
"domain": "androidpublisher",
"reason": "purchaseTokenNoLongerValid",
"message": "The purchase token is no longer valid."
}
],
"code": 410,
"message": "The purchase token is no longer valid."
}
}
AndroidパブリッシャーAPI、ドキュメントでもGoogle検索でも、 "purchaseTokenNoLongerValid"または "購入トークンが無効になりました"という記述は見つかりませんでした。
このエラーの意味は推測できますが、このエラーの後にサブスクリプションをどうすればよいかを正確に把握した方がいいでしょう。
このメッセージはGoogle Playチームから最近受け取ったので、HTTP status 410
は、有効期限が60日を超えるサブスクリプションのデフォルトの応答です。
2018年5月21日以降、 Purchases.subscriptions.get は、60日以上有効期限が切れたサブスクリプションの応答にコンテンツがないHTTPステータス410を返します。有効期限が切れていない、または60日未満の有効期限が切れているアクティブなサブスクリプションまたはキャンセルされたサブスクリプションの変更はありません。
購入の確認方法 の詳細については、Android開発者のWebサイトをご覧ください)。
そして、確かに、私は5月22日にそれを試し、ステータス410とこの本文で応答を得ました。
{
"error": {
"errors": [
{
"domain": "androidpublisher",
"reason": "subscriptionPurchaseNoLongerAvailable",
"message": "The subscription purchase is no longer available for query because it has been expired for too long."
}
],
"code": 410,
"message": "The subscription purchase is no longer available for query because it has been expired for too long."
}
}
このエラーについて、Google Playサポートチームから正式な返答を得ました。
確認したところ、ご提供いただいた注文IDは、削除されたアカウントに関連付けられています。これが検証に合格しない理由です。これは、意図したとおりに機能するライセンスシステムの良い例です。
このサブスクリプションを単に無視してかまいません。
詳細を尋ねた後の別のメール:
技術的には、サブスクリプションはアカウントに関連付けられていなくても引き続きアクティブです-したがって、キャンセルされたものとして表示されません。ただし、アカウントのステータスに関する明確なメッセージを受信せず、エラーを返すだけでは混乱を招きます。これは、私たちが現在積極的に取り組んでいる製品の領域です。
できることは、APIを使用してサブスクリプションを取り消すことです。これで、アカウントがなくなったことを確認できました。その後、キャンセルとして読み取られ、API呼び出しを行うときにエラーがスローされなくなります。
GoogleがAPIを更新したばかりで、長期間更新されていない(サブスクリプションの更新がない)購入トークンを含むリクエストに対して、ステータスコード410
で応答し始めたと思います。そのため、このようなトークンを使用したサブスクリプションは100%更新されません。
そのため、これは良いニュースです。以前に行った場合、そのような購入トークンを検出でき、検証に送信しないためです。