そのため、アプリの自動更新サブスクリプションを 1 か月間 (サンドボックスで 5 分程度) 設定しました。サブスクライブするクライアント アプリでレシートをサーバーに送信すると、それが検証され、このユーザーがサブスクリプションを持っていることをデータベースに記録します。
私の質問は、このサブスクリプションが更新されたかどうかを確認するにはどうすればよいですか? ドキュメントを読みましたが、何をすべきかわかりません。
これが私がこれまでのところです:
- 私のサーバーに送信される最初の領収書は、ステータス
0
, 素晴らしい. も取得latest_receipt
します。これをデータベースで最も古いレシートに置き換えます。 - を確認しようとして 6 分後に
latest_receipt
、ステータス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
です。
なんてこったい?サブがアクティブかどうかを確認したいだけです。誰でも簡単な言葉で説明できますか?
ありがとうございました!