2013-04-24 18 views
3

iOS IAP文檔states,如果要測試商店,則應在設置應用程序中註銷itunes帳戶。在進行應用內購買時,系統會要求您提供用戶名和密碼。但是,在應用程序內部,我不知道用戶是否已登錄,或者他是否正在使用沙箱帳戶。如何知道應用內購買收據是否來自沙盒?

事實上,我並不在乎它是否是一個沙盒事務,但是:在服務器上,我必須通過URL https://buy.itunes.apple.com/verifyReceipt和沙盒收據通過URL https://sandbox.itunes.apple.com/verifyReceipt來驗證實際收據。我如何知道服務器上的收據是沙箱收據還是實際收據?

或者應用程序如何知道收據是真實的還是沙箱,因爲我從將應用程序傳遞給我的服務器的附加參數沒有問題。

什麼不起作用:您不能只說應用程序的DEBUG版本使用沙盒環境,並且應用程序的ADHOC或RELEASE版本使用生產環境。使用ADHOC版本,完全可以使用iTunes Test Accounts進行應用內購買。

回答

9

當您驗證收據時,如果您收到狀態碼21007,則表示它是沙盒收據。看這裏:https://developer.apple.com/library/content/technotes/tn2413/_index.html#//apple_ref/doc/uid/DTS40016228-CH1-RECEIPTURL

我應該使用什麼網址來驗證我的收據?
請始終使用生產URL驗證您的收據;如果您收到21007狀態碼,請繼續使用沙箱網址進行驗證。遵循這種方法可確保您的應用程序在沙盒中進行測試或評估或在App Store中生效時不必在URL之間切換。

21007狀態碼指示此收據是沙箱收據,但它已發送到生產服務進行驗證。狀態爲0表示收據已正確驗證。有關更多信息,請參閱WWDC 2012: Managing Subscriptions with In-App Purchase

+2

對於依賴21007非常仔細。請閱讀這裏的關鍵筆記http://stackoverflow.com/questions/9677193/ios-storekit-can-i-detect-when-im-in-the-sandbox – Fattie 2013-05-17 05:15:18

相關問題