2012-05-03 23 views
3

當用戶購買訂閱時,我將服務器上已完成的事務的收據與密鑰一起存儲在服務器上,以標識收據所屬的用戶。當應用程序需要檢查訂閱是否仍處於活動狀態時,它會查詢服務器,服務器使用Apple驗證收據,並在訂閱過期或沒有時將信息返回給我的應用程序。自動續訂IAP:latest_receipt字段

現在的問題是:

當響應返回latest_receipt/_info場,服務器應該採取收據並更換舊的收據以備將來驗證。如果訂閱期間存在差距(例如,用戶訂閱了1個月,然後取消,然後再訂閱)或用戶改變了訂閱類型(例如從1個​​月到3個月),會發生什麼?

原始收據是否仍然有效並返回latest_receipt/_info字段,還是我需要從新的交易中存儲新收據?

我真的很困惑這個自動更新的東西,所以我甚至不知道我的驗證過程是否正確。

+0

我的問題更加嚴重。現在我正在比較手機發送的字符串與'latest_receipt',我從蘋果回來..他們是不同的。而且,手機總是發送相同的字符串,蘋果的'latest_receipt'總是不同的。我真的很困惑這個過程如何工作:( – Cmag

回答

2

我不確定所有的可能性,你必須驗證收據,也許它的工作方式,但我們做了一點點不同,並由此不面臨你的問題。

我們將所有收據存儲在設備端(注意自動更新也會生成新收據)。無論何時需要驗證,我們都會將最新的設備存儲的收據發送至通過調用iTunes進行驗證的服務器。之後,服務器將響應用戶權限的設備。

我認爲這就是蘋果推薦它的方式(或者至少這是我理解Apple's docs)。

+0

只是爲了澄清:如果你有一個續訂收據,或者用戶恢復訂閱你採用最新的'transactionDate'事務,並只發送到服務器來驗證? –

+1

不,我們只是最新的存儲和刪除舊的(據我記得,明天會看看我的舊代碼) –

+0

謝謝!將嘗試。 –

相關問題