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