そのため、サンドボックスで5分程度に相当する1か月の期間でアプリの自動更新可能なサブスクリプションを設定しました。サブスクライブしているクライアントアプリで、レシートをサーバーに送信します。レシートが検証され、このユーザーがサブスクリプションを持っていることをデータベースに記録します。
私の質問は、このサブスクリプションが更新されているかどうかを確認するにはどうすればよいですか?ドキュメントを読みましたが、どうすればよいかわかりません。
これが私が今のところいるところです:
0
で確認されます。また、latest_receipt
を取得します。これは、データベース内で最も古いレシートに置き換えます。latest_receipt
を確認しようとした6分後、ステータス21006
(有効期限が切れた領収書)が表示されます。 { receipt:
{ original_purchase_date_pst: '2013-08-06 11:58:04 America/Los_Angeles',
unique_identifier: '------------',
original_transaction_id: '----------',
expires_date: '1376129825000',
transaction_id: '------------',
quantity: '1',
product_id: 'subscription',
item_id: '--------',
bid: 'com.--------',
unique_vendor_identifier: '---------',
web_order_line_item_id: '---------',
bvrs: '2.0',
expires_date_formatted: '2013-08-10 10:17:05 Etc/GMT',
purchase_date: '2013-08-10 10:12:05 Etc/GMT',
purchase_date_ms: '1376129525000',
expires_date_formatted_pst: '2013-08-10 03:17:05 America/Los_Angeles',
purchase_date_pst: '2013-08-10 03:12:05 America/Los_Angeles',
original_purchase_date: '2013-08-06 18:58:04 Etc/GMT',
original_purchase_date_ms: '1375815484000' },
latest_expired_receipt_info:
{ original_purchase_date_pst: '2013-08-06 11:58:04 America/Los_Angeles',
unique_identifier: '-------',
original_transaction_id: '-',
expires_date: '1376129825000',
transaction_id: '-',
quantity: '1',
product_id: 'subscription',
item_id: '-',
bid: 'com.-',
unique_vendor_identifier: '--',
web_order_line_item_id: '-',
bvrs: '2.0',
expires_date_formatted: '2013-08-10 10:17:05 Etc/GMT',
purchase_date: '2013-08-10 10:12:05 Etc/GMT',
purchase_date_ms: '1376129525000',
expires_date_formatted_pst: '2013-08-10 03:17:05 America/Los_Angeles',
purchase_date_pst: '2013-08-10 03:12:05 America/Los_Angeles',
original_purchase_date: '2013-08-06 18:58:04 Etc/GMT',
original_purchase_date_ms: '1375815484000' },
status: 21006 }
配列の2番目の要素は以前はlatest_receipt_info
でしたが、現在はlatest_EXPIRED_receipt_info
になっています。ドキュメントの内容は次のとおりです。
Receive_dataフィールドに加えて、応答には2つの新しいフィールドも含まれる場合があります。 ユーザーのサブスクリプションがアクティブで更新された場合サーバーがApp Storeに送信した受信後に行われたトランザクションによって、
latest_receipt
フィールドにはbase-64エンコードが含まれますこのサブスクリプションの最後の更新の領収書。 この新しいレシートのデコードされたデータはlatest_expired_receipt_info
フィールドにも提供されます。サーバーはこの新しいレシートを使用して、最新の更新の記録を維持できます。
したがって、サーバーが最後にチェックしてからサブが更新されている場合、更新のためにデコードされたレシートはlatest_expired_receipt_info
にあるはずです。そのオブジェクトでは、expires_date
は元の領収書のexpires_date
と同じです。
なんてこったい?サブがアクティブかどうかを確認したいだけです。誰かが簡単な言葉でそれを行う方法を説明できますか?
ありがとうございました!
私の経験。常に最初の領収書をAppleのサーバーに送信するとします。
いずれの場合も、status
(コメントなし)とreceipt
(送信した領収書に関する情報)の少なくとも2つのフィールドを持つJSONを取得します。
それに加えて:
1)サブスクリプションがまだアクティブの場合、さらにlatest_receipt
(base64でエンコードされた文字列)とlatest_receipt_info
(そのレシートに関する情報)を取得します。
2)サブスクリプションがすでに期限切れの場合、さらにlatest_expired_receipt_info
(最後に更新されたレシートに関する情報)を取得します。はい、base64でエンコードされた文字列ではなく、それに関する情報のみを取得します。
そして、はい、AFAIK、それはどこにも文書化されていません。お役に立てば幸いです。