iOS內(nèi)購問題

本人項(xiàng)目是早教類項(xiàng)目,用到了內(nèi)購的功能,記錄一下,用到的是?非續(xù)訂訂閱 類型的內(nèi)購。

注意:1,審核的通過,需要在客戶端或者server進(jìn)行雙重驗(yàn)證,不然迭代版本的時(shí)候會(huì)被拒。2,你還要上傳內(nèi)購的具體位置在APP審核信息的附件里面,即便你上傳了,審核人員還是找不到還是被拒,那么你只能回復(fù)他的郵件,需要注意的是回復(fù)郵件上傳的附件的文件不能包含中文,如果你的文件包含了中文就一直提示服務(wù)器錯(cuò)誤,上傳不上去。

驗(yàn)證操作讓后臺(tái)去驗(yàn)證,因?yàn)榭蛻舳水吘箾]后臺(tái)驗(yàn)證的好,防止別人刷單,為什么要做product_id商品id,bundle_id包名,transaction_id訂單號(hào),因?yàn)?客戶端傳遞過來的 憑證,是不可信的,有可能是別人篡改后的結(jié)果。比如,他們有個(gè)自己的內(nèi)購,我們把這個(gè)憑證發(fā)到蘋果是可以拿到返回結(jié)果的,但是?product_id,bundle_id沒辦法一樣。 ? ?

"transaction_id": "1000000460004095" 一定要進(jìn)行去重驗(yàn)證,一個(gè)訂單號(hào)只能加一次款

"bundle_id": "com.rtjk.xshl" 當(dāng)前的產(chǎn)品的包名,一定要驗(yàn)證返回的包名和此包名要一致

"product_id": "6hongliao" 對(duì)應(yīng)商品品id,自己做一個(gè)金額的映射就行,對(duì)應(yīng)到具體的金額,建議命名要規(guī)則

為保證審核的通過,需要在客戶端或者server進(jìn)行雙重驗(yàn)證,即,先以線上交易驗(yàn)證地址進(jìn)行驗(yàn)證,如果蘋果正式驗(yàn)證服務(wù)器的返回驗(yàn)證碼code為21007,則再一次連接沙盒測(cè)試服務(wù)器進(jìn)行驗(yàn)證即可。在應(yīng)用提審時(shí),蘋果IAP提審驗(yàn)證時(shí)是在沙盒環(huán)境的進(jìn)行的,即:蘋果在審核App時(shí),只會(huì)在sandbox環(huán)境購買,其產(chǎn)生的購買憑證,也只能連接蘋果的測(cè)試驗(yàn)證服務(wù)器,如果沒有做雙驗(yàn)證,需要特別注意此問題,否則會(huì)被拒。

蘋果人員審核的時(shí)候,是用的沙箱環(huán)境,但是如果你是迭代版本,蘋果審核的時(shí)候會(huì)查看你是否進(jìn)行認(rèn)證沒有,如果沒有認(rèn)證會(huì)被拒。

基本上所有的 操作都可以再前端完成操作,包括對(duì)支付憑證的驗(yàn)證,但是如果在客戶端驗(yàn)證憑證可能存在被篡改的危險(xiǎn),

服務(wù)器去重驗(yàn)證和加款,是建立在 用戶已經(jīng)在前端支付成功,然后由ios會(huì)得到一個(gè)字節(jié)流,然后 base64后轉(zhuǎn)給 后臺(tái)。

后臺(tái)通過這個(gè)字符串 去請(qǐng)求蘋果的服務(wù)器,然后得到一個(gè)json字符串去給用戶加款,其中注意事項(xiàng)為

//沙箱static final String testUrl = "https://sandbox.itunes.apple.com/verifyReceipt";

//正式 static final String product = ?"https://buy.itunes.apple.com/verifyReceipt";

請(qǐng)求蘋果地址 返回的 內(nèi)容為

conten-type = application/json

請(qǐng)求的蘋果的內(nèi)容為String param = "{\"receipt-data\":\""+客戶端返回的base64+"\"}";

{

? ? environment = Sandbox; //沙河環(huán)境?Sandbox

? ? receipt =? ? {

? ? ? ? "adam_id" = 0;

? ? ? ? "app_item_id" = 0;

? ? ? ? "application_version" = 25;//項(xiàng)目版本號(hào)

? ? ? ? "bundle_id" = "lianmeng.com"; //項(xiàng)目bundle_id?一定要驗(yàn)證返回的包名和此包名要一致

? ? ? ? "download_id" = 0;

? ? ? ? "in_app" =? ? ? ? (

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? "is_trial_period" = false;

? ? ? ? ? ? ? ? "original_purchase_date" = "2019-12-11 06:19:22 Etc/GMT";

? ? ? ? ? ? ? ? "original_purchase_date_ms" = 1576045162000;

? ? ? ? ? ? ? ? "original_purchase_date_pst" = "2019-12-10 22:19:22 America/Los_Angeles";

? ? ? ? ? ? ? ? "original_transaction_id" = 1000000603451122;

? ? ? ? ? ? ? ? "product_id" = "lianmeng_kechengnianka";//對(duì)應(yīng)產(chǎn)品id,自己做一個(gè)金額的映射就行,對(duì)應(yīng)到具體的金額,建議命名要規(guī)則

? ? ? ? ? ? ? ? "purchase_date" = "2019-12-11 06:19:22 Etc/GMT";

? ? ? ? ? ? ? ? "purchase_date_ms" = 1576045162000;

? ? ? ? ? ? ? ? "purchase_date_pst" = "2019-12-10 22:19:22 America/Los_Angeles";

? ? ? ? ? ? ? ? quantity = 1;

? ? ? ? ? ? ? ? "transaction_id" = 1000000603451122;//一定要進(jìn)行去重驗(yàn)證,一個(gè)訂單號(hào)只能加一次款

? ? ? ? ? ? },

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? "is_trial_period" = false;

? ? ? ? ? ? ? ? "original_purchase_date" = "2019-12-11 06:19:59 Etc/GMT";

? ? ? ? ? ? ? ? "original_purchase_date_ms" = 1576045199000;

? ? ? ? ? ? ? ? "original_purchase_date_pst" = "2019-12-10 22:19:59 America/Los_Angeles";

? ? ? ? ? ? ? ? "original_transaction_id" = 1000000603451312;

? ? ? ? ? ? ? ? "product_id" = "lianmeng_kechengnianka";

? ? ? ? ? ? ? ? "purchase_date" = "2019-12-11 06:19:59 Etc/GMT";

? ? ? ? ? ? ? ? "purchase_date_ms" = 1576045199000;

? ? ? ? ? ? ? ? "purchase_date_pst" = "2019-12-10 22:19:59 America/Los_Angeles";

? ? ? ? ? ? ? ? quantity = 1;

? ? ? ? ? ? ? ? "transaction_id" = 1000000603451312;

? ? ? ? ? ? },

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? "is_trial_period" = false;

? ? ? ? ? ? ? ? "original_purchase_date" = "2019-12-11 08:13:59 Etc/GMT";

? ? ? ? ? ? ? ? "original_purchase_date_ms" = 1576052039000;

? ? ? ? ? ? ? ? "original_purchase_date_pst" = "2019-12-11 00:13:59 America/Los_Angeles";

? ? ? ? ? ? ? ? "original_transaction_id" = 1000000603500479;

? ? ? ? ? ? ? ? "product_id" = "lianmeng_kechengnianka";

? ? ? ? ? ? ? ? "purchase_date" = "2019-12-11 08:13:59 Etc/GMT";

? ? ? ? ? ? ? ? "purchase_date_ms" = 1576052039000;

? ? ? ? ? ? ? ? "purchase_date_pst" = "2019-12-11 00:13:59 America/Los_Angeles";

? ? ? ? ? ? ? ? quantity = 1;

? ? ? ? ? ? ? ? "transaction_id" = 1000000603500479;

? ? ? ? ? ? },

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? "is_trial_period" = false;

? ? ? ? ? ? ? ? "original_purchase_date" = "2019-12-11 06:21:21 Etc/GMT";

? ? ? ? ? ? ? ? "original_purchase_date_ms" = 1576045281000;

? ? ? ? ? ? ? ? "original_purchase_date_pst" = "2019-12-10 22:21:21 America/Los_Angeles";

? ? ? ? ? ? ? ? "original_transaction_id" = 1000000603451541;

? ? ? ? ? ? ? ? "product_id" = "lianmeng_kechengbanianka";

? ? ? ? ? ? ? ? "purchase_date" = "2019-12-11 06:21:21 Etc/GMT";

? ? ? ? ? ? ? ? "purchase_date_ms" = 1576045281000;

? ? ? ? ? ? ? ? "purchase_date_pst" = "2019-12-10 22:21:21 America/Los_Angeles";

? ? ? ? ? ? ? ? quantity = 1;

? ? ? ? ? ? ? ? "transaction_id" = 1000000603451541;

? ? ? ? ? ? },

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? "is_trial_period" = false;

? ? ? ? ? ? ? ? "original_purchase_date" = "2019-12-11 06:22:22 Etc/GMT";

? ? ? ? ? ? ? ? "original_purchase_date_ms" = 1576045342000;

? ? ? ? ? ? ? ? "original_purchase_date_pst" = "2019-12-10 22:22:22 America/Los_Angeles";

? ? ? ? ? ? ? ? "original_transaction_id" = 1000000603451660;

? ? ? ? ? ? ? ? "product_id" = "lianmeng_kechengnianka";

? ? ? ? ? ? ? ? "purchase_date" = "2019-12-11 06:22:22 Etc/GMT";

? ? ? ? ? ? ? ? "purchase_date_ms" = 1576045342000;

? ? ? ? ? ? ? ? "purchase_date_pst" = "2019-12-10 22:22:22 America/Los_Angeles";

? ? ? ? ? ? ? ? quantity = 1;

? ? ? ? ? ? ? ? "transaction_id" = 1000000603451660;

? ? ? ? ? ? },

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? "is_trial_period" = false;

? ? ? ? ? ? ? ? "original_purchase_date" = "2019-12-11 05:59:34 Etc/GMT";

? ? ? ? ? ? ? ? "original_purchase_date_ms" = 1576043974000;

? ? ? ? ? ? ? ? "original_purchase_date_pst" = "2019-12-10 21:59:34 America/Los_Angeles";

? ? ? ? ? ? ? ? "original_transaction_id" = 1000000603446070;

? ? ? ? ? ? ? ? "product_id" = "lianmeng_kechengchengzhangka";

? ? ? ? ? ? ? ? "purchase_date" = "2019-12-11 05:59:34 Etc/GMT";

? ? ? ? ? ? ? ? "purchase_date_ms" = 1576043974000;

? ? ? ? ? ? ? ? "purchase_date_pst" = "2019-12-10 21:59:34 America/Los_Angeles";

? ? ? ? ? ? ? ? quantity = 1;

? ? ? ? ? ? ? ? "transaction_id" = 1000000603446070;

? ? ? ? ? ? },

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? "is_trial_period" = false;

? ? ? ? ? ? ? ? "original_purchase_date" = "2019-12-11 06:17:40 Etc/GMT";

? ? ? ? ? ? ? ? "original_purchase_date_ms" = 1576045060000;

? ? ? ? ? ? ? ? "original_purchase_date_pst" = "2019-12-10 22:17:40 America/Los_Angeles";

? ? ? ? ? ? ? ? "original_transaction_id" = 1000000603450733;

? ? ? ? ? ? ? ? "product_id" = "lianmeng_kechengnianka";

? ? ? ? ? ? ? ? "purchase_date" = "2019-12-11 06:17:40 Etc/GMT";

? ? ? ? ? ? ? ? "purchase_date_ms" = 1576045060000;

? ? ? ? ? ? ? ? "purchase_date_pst" = "2019-12-10 22:17:40 America/Los_Angeles";

? ? ? ? ? ? ? ? quantity = 1;

? ? ? ? ? ? ? ? "transaction_id" = 1000000603450733;

? ? ? ? ? ? },

? ? ? ? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? "is_trial_period" = false;

? ? ? ? ? ? ? ? "original_purchase_date" = "2019-12-13 01:35:30 Etc/GMT";

? ? ? ? ? ? ? ? "original_purchase_date_ms" = 1576200930000;

? ? ? ? ? ? ? ? "original_purchase_date_pst" = "2019-12-12 17:35:30 America/Los_Angeles";

? ? ? ? ? ? ? ? "original_transaction_id" = 1000000604337656;

? ? ? ? ? ? ? ? "product_id" = "lianmeng_kechengnianka";

? ? ? ? ? ? ? ? "purchase_date" = "2019-12-13 01:35:30 Etc/GMT";

? ? ? ? ? ? ? ? "purchase_date_ms" = 1576200930000;

? ? ? ? ? ? ? ? "purchase_date_pst" = "2019-12-12 17:35:30 America/Los_Angeles";

? ? ? ? ? ? ? ? quantity = 1;

? ? ? ? ? ? ? ? "transaction_id" = 1000000604337656;//一定要進(jìn)行去重驗(yàn)證,一個(gè)訂單號(hào)只能加一次款

? ? ? ? ? ? }

? ? ? ? );

? ? ? ? "original_application_version" = "1.0";

? ? ? ? "original_purchase_date" = "2013-08-01 07:00:00 Etc/GMT";

? ? ? ? "original_purchase_date_ms" = 1375340400000;

? ? ? ? "original_purchase_date_pst" = "2013-08-01 00:00:00 America/Los_Angeles";

? ? ? ? "receipt_creation_date" = "2019-12-13 07:21:06 Etc/GMT";

? ? ? ? "receipt_creation_date_ms" = 1576221666000;

? ? ? ? "receipt_creation_date_pst" = "2019-12-12 23:21:06 America/Los_Angeles";

? ? ? ? "receipt_type" = ProductionSandbox;

? ? ? ? "request_date" = "2019-12-13 07:21:32 Etc/GMT";

? ? ? ? "request_date_ms" = 1576221692466;

? ? ? ? "request_date_pst" = "2019-12-12 23:21:32 America/Los_Angeles";

? ? ? ? "version_external_identifier" = 0;

? ? };

? ? status = 0;//表示當(dāng)前請(qǐng)求返回正常

}

耗型項(xiàng)目:對(duì)于消耗型App內(nèi)購買項(xiàng)目,用戶每次下載時(shí)都必須進(jìn)行購買。一次性服務(wù)通常屬于消耗型項(xiàng)目,例如釣魚App 中的魚餌。

非消耗型項(xiàng)目:對(duì)于非消耗型App內(nèi)購買項(xiàng)目,用戶僅需要購買一次。不會(huì)過期或隨使用而減少的服務(wù)通常為非消耗型項(xiàng)目,例如游戲App 的新跑道。

自動(dòng)續(xù)訂訂閱:通過自動(dòng)續(xù)訂訂閱,用戶可以購買指定時(shí)間期限內(nèi)的更新和動(dòng)態(tài)內(nèi)容。除非用戶取消選擇,否則訂閱(例如雜志訂閱等)會(huì)自動(dòng)續(xù)訂。

免費(fèi)訂閱:通過免費(fèi)訂閱,開發(fā)者可以將免費(fèi)訂閱內(nèi)容放入“報(bào)刊雜志”。用戶注冊(cè)免費(fèi)訂閱后,該訂閱內(nèi)容將會(huì)出現(xiàn)在與該用戶Apple ID 關(guān)聯(lián)的所有設(shè)備上。請(qǐng)注意,免費(fèi)訂閱不會(huì)過期,并且僅在支持報(bào)刊雜志功能的 App 中提供。

非續(xù)訂訂閱:非續(xù)訂訂閱允許有時(shí)限性的營銷服務(wù)。對(duì)于 App 內(nèi)購買項(xiàng)目中的限時(shí)訪問內(nèi)容,就需使用非續(xù)訂訂閱。例如,導(dǎo)航App 中語音導(dǎo)航功能的一周訂閱,或者年度訂閱已存檔的視頻或音頻的在線目錄。

后面是一些別人的寫的內(nèi)購地址:

蘋果內(nèi)購 服務(wù)器端驗(yàn)證返回的內(nèi)容? ?稅務(wù)和銀行業(yè)務(wù)添加流程

2017蘋果內(nèi)購最新教程? ? ??內(nèi)購成功驗(yàn)證流程? ? ??內(nèi)購注意點(diǎn)

內(nèi)購(IAP)詳解? ?內(nèi)購服務(wù)端驗(yàn)證

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容