应用内购买(IAP)各类型在服务端的验证规则
生活随笔
收集整理的這篇文章主要介紹了
应用内购买(IAP)各类型在服务端的验证规则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、非消耗品(比如單本雜志購買,蘋果服務器支持恢復)
1.先驗證服務器有沒有購買記錄,如果有,則不處理,此次操作成功 ;
2.如果服務器沒有購買記錄,則到蘋果服務器驗證
(1)首先到正式驗證地址驗證收據,如果返回狀態非0,則再向測試驗證地址驗證收據。
(2)如果最后返回的狀態為0,表示是有效購買,則插入,增加權限,此次操作成功。
(3)否則失敗。
二、消耗品(比如魚食,蘋果服務器不支持恢復) 1.首先到正式驗證地址驗證收據,如果返回狀態非0,則再向測試驗證地址驗證收據。 2.如果最后返回的狀態為0,表示是有效購買,則插入,增加權限,此次操作成功。 3.否則失敗。
三、自動續訂的訂閱(產品定義有時長,過期自動續訂,蘋果服務器支持恢復) 1.購買時: (1).首先從正式驗證地址驗證收據,如果返回狀態是21007,則再從測試驗證地址驗證收據. (2).如果蘋果返回狀態為0,則表示訂閱還有效,在蘋果返回json的latest_receipt_info或者receipt結構中(latest_receipt_info優先)取出最新過期時間,插入或者更新過期時間,并賦予對應權限,此次操作成功。 (3).如果蘋果返回狀態為21006,則表示訂閱過期,但是還有效。在蘋果返回json的latest_expired_receipt_info結構中,取出交易時間(“purchase_date”,過期的訂閱交易記錄中,沒有過期時間字段),[交易時間+訂閱時長]為結束,賦予權限。 ? ? (4).否則失敗 2.過期驗證時: (1)當用戶第一次購買訂閱之后,會有一個最后的過期時間記錄在服務器,以此計算剩余時間。如果算出此時剩余時間等于0了,取出當前用戶最新的一條訂閱記錄(receipt),通過蘋果驗證接口進行驗證。 (2)首先從正式驗證地址驗證收據,如果返回狀態是21007,則再從測試驗證地址驗證收據. (3)如果蘋果最后返回結果中狀態值為0,表示已經續訂,在latest_receipt_info或者receipt結構中(latest_receipt_info優先),取出最新的過期時間,更新服務器過期時間,并賦予對應權限,remaindDays用新的過期時間算。 (4)如果返回狀態為21006,表示已經退訂,但是還有效。在蘋果返回json的latest_expired_receipt_info結構中, 取出交易時間(“purchase_date”,過期的訂閱交易記錄中,沒有過期時間字段),以[交易時間+訂閱時長]為過期時間,更新服務器過期時間。
四、非自動續訂的訂閱(產品定義沒有時長,時長自己控制,可以多次購買,類似于消耗品,蘋果服務器不支持恢復) 1.驗證過程和消耗品相同
五、免費訂閱(只能在Newsstand里面用,永不過期,蘋果服務器支持恢復) 1.驗證過程和非消耗品相同
二、消耗品(比如魚食,蘋果服務器不支持恢復) 1.首先到正式驗證地址驗證收據,如果返回狀態非0,則再向測試驗證地址驗證收據。 2.如果最后返回的狀態為0,表示是有效購買,則插入,增加權限,此次操作成功。 3.否則失敗。
三、自動續訂的訂閱(產品定義有時長,過期自動續訂,蘋果服務器支持恢復) 1.購買時: (1).首先從正式驗證地址驗證收據,如果返回狀態是21007,則再從測試驗證地址驗證收據. (2).如果蘋果返回狀態為0,則表示訂閱還有效,在蘋果返回json的latest_receipt_info或者receipt結構中(latest_receipt_info優先)取出最新過期時間,插入或者更新過期時間,并賦予對應權限,此次操作成功。 (3).如果蘋果返回狀態為21006,則表示訂閱過期,但是還有效。在蘋果返回json的latest_expired_receipt_info結構中,取出交易時間(“purchase_date”,過期的訂閱交易記錄中,沒有過期時間字段),[交易時間+訂閱時長]為結束,賦予權限。 ? ? (4).否則失敗 2.過期驗證時: (1)當用戶第一次購買訂閱之后,會有一個最后的過期時間記錄在服務器,以此計算剩余時間。如果算出此時剩余時間等于0了,取出當前用戶最新的一條訂閱記錄(receipt),通過蘋果驗證接口進行驗證。 (2)首先從正式驗證地址驗證收據,如果返回狀態是21007,則再從測試驗證地址驗證收據. (3)如果蘋果最后返回結果中狀態值為0,表示已經續訂,在latest_receipt_info或者receipt結構中(latest_receipt_info優先),取出最新的過期時間,更新服務器過期時間,并賦予對應權限,remaindDays用新的過期時間算。 (4)如果返回狀態為21006,表示已經退訂,但是還有效。在蘋果返回json的latest_expired_receipt_info結構中, 取出交易時間(“purchase_date”,過期的訂閱交易記錄中,沒有過期時間字段),以[交易時間+訂閱時長]為過期時間,更新服務器過期時間。
四、非自動續訂的訂閱(產品定義沒有時長,時長自己控制,可以多次購買,類似于消耗品,蘋果服務器不支持恢復) 1.驗證過程和消耗品相同
五、免費訂閱(只能在Newsstand里面用,永不過期,蘋果服務器支持恢復) 1.驗證過程和非消耗品相同
總結
以上是生活随笔為你收集整理的应用内购买(IAP)各类型在服务端的验证规则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务端高并发分布式架构演进之路(转载,图
- 下一篇: Sqlite3中replace语句用法详