新聞中心
蘋果內(nèi)支付(iOS IAP)的流程與常用攻擊方式
摘錄: 蘋果應用內(nèi)支付(iOS IAP)的流程與常用攻擊方式
成都創(chuàng)新互聯(lián)公司主營寧洱網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,手機APP定制開發(fā),寧洱h5微信小程序定制開發(fā)搭建,寧洱網(wǎng)站營銷推廣歡迎寧洱等地區(qū)企業(yè)咨詢
按照安全性原則, 客戶端的所有信息都是不可信的,而且支付是業(yè)務(wù)中的核心模塊,所以應該選擇第二種。
下面簡要介紹下,第二種方式的簡單流程。
作為支付,安全性是第一位的,下面簡要分析一下常用的攻擊手段。
客戶端拿到apple的receipt 并發(fā)送到server
server拿到這個receipt,向蘋果驗證得到apple_callback_data
如果apple_callback_data的status是21007,說明是沙盒模式(不用花錢就可以購買) 要根據(jù)具體需求判斷處理邏輯,需要注意的是,ios的審核在支付的時候就采用的沙盒模式。
如果apple_callback_data的status是0,就要從apple_callback_data[‘receipt’][‘in_app’]這個list中拿到所有的記錄,每一個進行充值。然后記錄transaction_id和original_transaction_id來防止同一個transaction被重復使用。
= Original Transaction Identifier
返回所有充值成功和重復的transaction_id, 有client來complete transaction
summary
支付作為核心模塊,除了技術(shù)上的保證,商務(wù)也應該每周進行一次對賬。如果發(fā)現(xiàn)apple上的收入和服務(wù)端記錄的收入有比較大的差距,就應該抓緊查看原因。
最后給出一個apple_callback_data的例子
【iOS】Apple Pay配置
注意:此處以提供商為銀聯(lián)為基準
【1】創(chuàng)建appid時,開啟Apple Pay功能選擇對應的Merchant ID
【2】創(chuàng)建Merchant ID
【3】創(chuàng)建Merchant ID的證書
【4】上傳CSR文件(銀聯(lián)提供的CSR文件)—Continue—Download證書—安裝證書
【5】工程開啟Apple Pay功能
【6】開啟后,工程會自動增加一個文件
【7】銀聯(lián)SDK接入流程(銀聯(lián)官網(wǎng)獲取的)
【7.1】商戶業(yè)務(wù)范圍:優(yōu)先發(fā)展生活服務(wù)類商戶;根據(jù)監(jiān)管要求,限制接入P2P借貸及互聯(lián)網(wǎng)彩票行業(yè);同時暫緩接入基金、理財、保險、養(yǎng)老、貴金屬、眾籌、信貸還款、融資租賃、直銷銀行等互聯(lián)網(wǎng)金融投資行業(yè)。
【7.2】商戶入網(wǎng)服務(wù)流程及步驟
【7.3】銀聯(lián)支付SDK流程時序圖
【7.4】接入需注意環(huán)節(jié)
接入云閃付Apple Pay的商戶,須生成Apple Pay專用的CSR文件并提交至蘋果開發(fā)者網(wǎng)站進行簽名,以簽署證書,取得Apple Pay的訪問權(quán)限。在銀聯(lián)SDK模式中,銀聯(lián)代為商戶生成CSR文件,商戶可直接登錄銀聯(lián)商戶服務(wù)平臺獲取。
iOS系統(tǒng)應用內(nèi)支付開發(fā)有什么限制
一,iOS端開發(fā)。
如果購買成功,我們需要將憑證發(fā)送到服務(wù)器上進行驗證。考慮到網(wǎng)絡(luò)異常情況,iOS端的發(fā)送憑證操作應該可以持久化,如果程序退出,崩潰或網(wǎng)絡(luò)異常,可以恢復重試。
二,服務(wù)器端開發(fā)。
服務(wù)器后臺的工作比較簡單,分為4步:
1,接收iOS端發(fā)來的購買憑證。
2,判斷憑證是否已經(jīng)存在,是否驗證過,然后,存儲該憑證。
3,將該憑證發(fā)送到蘋果的服務(wù)器驗證,并將驗證結(jié)果返回給客戶端。
4,如果需要,修改用戶相應的會員權(quán)限。
考慮到網(wǎng)絡(luò)異常的情況,服務(wù)器的驗證應該是一個可恢復的列隊,如果失敗了,應該進行重試。
Flutter iOS 蘋果IAP(內(nèi)購)實現(xiàn)步驟及問題總結(jié)(全網(wǎng)最全)
點擊 “協(xié)議、稅務(wù)和銀行業(yè)務(wù)”
內(nèi)購用的是付費應用程序,先簽署《付費應用程序協(xié)議》,同意后狀態(tài)變更為“用戶信息待處理”,等待審核。
狀態(tài)更改完畢后,點擊“開始設(shè)置稅務(wù)、銀行業(yè)務(wù)和聯(lián)系信息”。
(1)添加銀行賬戶,按照要求填寫相關(guān)內(nèi)容即可。
(2)選擇報稅表,并填寫。所有與 Apple 有商業(yè)合作者必選都是美國,若有其他需求,可以多選。
繼續(xù)填寫,首先認證公司基本信息,選擇所有人類型,確認無誤后認證條款處打?qū)?/p>
Part I 部分,繼續(xù)核對公司相關(guān)信息,選填內(nèi)容可不填。
Part III 部分,簽署稅務(wù)條約,設(shè)置利益限制條款的種類,選填內(nèi)容可不填。此部分如果需要可勾選上下圖勾選框,不需要可不勾選,我們這個項目沒有用到part III 部分,所以沒有勾選。
Part XXX 部分,確認之前填寫的信息,勾選完畢后,提交
(3)填寫聯(lián)系信息,共5個。高級管理、財務(wù)、技術(shù)、法務(wù)、營銷。只需要提供5個人的基本信息即可。
只可使用一次的產(chǎn)品,使用之后即失效,必須再次購買。
示例: 釣魚 App 中的魚食。
只需購買一次,不會過期或隨著使用而減少的產(chǎn)品。
示例: 游戲 App 的賽道。
允許用戶在固定時間段內(nèi)購買動態(tài)內(nèi)容的產(chǎn)品。除非用戶選擇取消,否則此類訂閱會自動續(xù)期。
示例: 每月訂閱提供流媒體服務(wù)的 App。
允許用戶購買有時限性服務(wù)的產(chǎn)品。此 App 內(nèi)購買項目的內(nèi)容可以是靜態(tài)的。此類訂閱不會自動續(xù)期。
示例: 為期一年的已歸檔文章目錄訂閱。
App 內(nèi)購買項目的截屏,即所售項目的示意圖。例如,如果 App 內(nèi)購買項目是一本圖書,您可以提交圖書的截屏。您也可以提交購買頁的截屏。該截屏僅用于 Apple 審核,不會在 App Store 中顯示。
截屏要求如下:
iOS 至少需要 640 x 920 像素
Apple tvOS 需要 1920 x 1080 像素
macOS 需要 1280 x 800 像素
App 審核圖像上傳后,可以替換,但無法移除。當您的 App 內(nèi)購買項目處于審核中時,您無法更新截屏。
沙箱賬號是不能直接在App Store進行登錄的,只能在點擊了購買商品之后,在彈出的登錄框進行登錄 。
驗證是否已登錄沙箱測試賬號:
設(shè)置--iTunes Store與App Store,頁面拉到最底部,會看到沙箱賬戶項會列出你已登錄的沙箱測試賬號!
操作方法一:打開App Store應用首頁滑到最下方--選中AppleID--注銷
操作方法二:設(shè)置--iTunes Store與App Store--選中AppleID--注銷
checks if the client can make payments(檢測App是否能支付)
getAvailablePurchases
Get all non-consumed purchases 獲取未消費的商品
打印信息查詢;
原因:
沒有先執(zhí)行g(shù)etProducts,直接執(zhí)行requestPurchase方法,要先拉取商品列表,再執(zhí)行購買操作.
問題描述;
1.漏單必須要處理,玩家花RMB購買的東西卻丟失了,是絕對不能容忍的。所謂的漏單就是玩家已經(jīng)正常付費,卻沒有拿到該拿的道具。
解決:只要購買成功,便將購買記錄(receipt等賬單信息)保存下來,然后將賬單信息傳送給我們游戲服務(wù)器,游戲服務(wù)器獲得賬單后,和蘋果服務(wù)器驗證,賬單有效的話,回饋給游戲服務(wù)器處理,游戲服務(wù)器處理后,返回給游戲客戶端處理,處理完畢,將本地保存的購買記錄刪除。
官方文檔:向蘋果校驗支付憑證
21000 App Store無法讀取你提供的JSON數(shù)據(jù)
21002 收據(jù)數(shù)據(jù)不符合格式
21003 收據(jù)無法被驗證
21004 你提供的共享密鑰和賬戶的共享密鑰不一致
21005 收據(jù)服務(wù)器當前不可用
21006 收據(jù)是有效的,但訂閱服務(wù)已經(jīng)過期。當收到這個信息時,解碼后的收據(jù)信息也包含在返回內(nèi)容中
21007 收據(jù)信息是測試用(sandbox),但卻被發(fā)送到產(chǎn)品環(huán)境中驗證 【請求sandbox校驗支付憑證】
21008 收據(jù)信息是產(chǎn)品環(huán)境中使用,但卻被發(fā)送到測試環(huán)境中驗證
消耗類型: 例如:金幣、道具等。
非續(xù)訂訂閱: non-renewable subscription 例如:VIP
您的首個 App 內(nèi)購買項目必須以新的 App 版本提交。請創(chuàng)建您的 App 內(nèi)購買項目,然后前往 App 的“App Store”頁,從“App 內(nèi)購買項目”中進行選擇,點按“提交”。 了解更多
在上傳二進制文件并提交首個 App 內(nèi)購買項目以供審核后,您可以使用下表提交其他 App 內(nèi)購買項目。
唐巧-iOS應用內(nèi)付費(IAP)開發(fā)步驟列表
未完~待續(xù)
當使用內(nèi)購購買過商品之后沒有把這個交易關(guān)閉,所以再次去購買商品后就會調(diào)用以前已經(jīng)購買成功的交易去購買因為已經(jīng)購買過,才會有這個提示
原因:添加內(nèi)購項目時,信息填寫不完整,app審核圖像未上傳
處理方法:上傳app審核圖片( 合適的尺寸 ),點擊提交,狀態(tài)改為正在準備審核中。
這個是內(nèi)購選擇類型不匹配原因?qū)е隆?/p>
購買成功之后,Apple會返回以下四個數(shù)據(jù)給應用
Reference
Review the updated Paid Applications Schedule.
游客身份解決方案:即不登錄也要能購買
1)服務(wù)器端做一個蘋果審核機制,審核期間游客身份可以進行一切行為,一旦審核通過,修改服務(wù)端即可達到強制用戶登錄進行內(nèi)購買的目的(這個有點。。。)
2)游客可以進行內(nèi)購買,購買時以設(shè)備UUID為準,生成一個游客賬號,將購買信息保存在服務(wù)器和本地,當用戶登錄正式賬戶后判斷此設(shè)備是否進行過內(nèi)購,有的話提示用戶將游客身份購買的權(quán)益與現(xiàn)有賬號綁定,如果綁定,游客權(quán)益則遷移到正式賬戶,如果不遷移,則游客身份和正是賬戶是兩個獨立賬戶,正式賬戶不享有游客身份的權(quán)益(我用的這個)
內(nèi)購游客模式解決方案
iOS內(nèi)購規(guī)則
iOS開發(fā)-注意點:蘋果審核被拒,含有第三方支付
即可打印出來你的app中包含的ios的function
檢查下這里面有沒有需要屏蔽的關(guān)鍵詞
通過這個方式把該改的名字都換掉
蘋果應用商店appstore之蘋果支付相關(guān)
1、蘋果對于支付相關(guān)的審核規(guī)則
詳細見[App Store 審核指南 - Apple Developer 。簡單的一句話解釋:就是非實物的產(chǎn)品的支付必須要走蘋果的IAP支付通道,否則你的APP在上架審核的時候就會被appstore拒絕,從而不允許上架到appstore。
我們再來看一下蘋果3.1.1條款,因為這個詳細介紹了蘋果支付的一些規(guī)則,以及不同的類型產(chǎn)品在使用蘋果支付的時候的一些注意的事項,簡單理解使用蘋果支付應該在寫清楚購買的類型,而且不允許出現(xiàn)引導用戶使用其他支付的的字眼,如果是訂閱類型的APP,提供免費使用功能的,應該描述清楚,訂閱產(chǎn)品類型,周期,費用等等,不能含糊不清楚
如果已經(jīng)審核通過上架的非實物交易APP,在蘋果人員復查的過程中,發(fā)現(xiàn)使用第三方支付如(微信、支付寶、銀行卡等)也會會再次下架
談到蘋果的支付,就必須要提一下微信的公眾號的贊賞業(yè)務(wù)和小程序游戲的充值。
微信公眾號贊賞整個事情經(jīng)過是這樣的
同樣的微信里面小程序游戲的充值服務(wù)也是屬于虛擬的服務(wù),如果要在iOS端使用的話也是需要走蘋果的師傅
那么蘋果公司為什么對于這一塊要求這么嚴格呢?因為蘋果作為一個分發(fā)的平臺要抽取30% 的收入,據(jù)相關(guān)的數(shù)據(jù)表明 2008 年 App Store 推出至今,開發(fā)者已獲得了逾 1550 億美元的收入,而僅2019一年的收入就占到了四分之一 。
由此可見這一塊對于蘋果的整體服務(wù)來說也是一塊亮眼的收入,所以蘋果在這一塊來說,可以說是相當?shù)膰栏?/p>
2、常見的一些問題
很多APP之所以在上架時候被拒絕,我覺很多時候都是不了解蘋果的審核機制,特別是在支付這一塊,如果APP涉及到支付相關(guān)問題,一定得先確定自己APP的內(nèi)容是否涉及到虛擬物品相關(guān),如果涉及首先還是需要按照蘋果審核要求操作。
3、有什么比好的較解決方案
如果你的產(chǎn)品屬于游戲類,或者知識付費類(例如得到APP,極客時間之類的)或者影音娛樂類(喜馬拉雅APP,優(yōu)酷視頻,騰訊視頻,愛奇藝)、又或者是直播類(快手、映客,陌陌等)這些是無法避免的必須要走蘋果的IAP的支付通道。
如果你的APP類似知識星球APP,或者幕布APP,石墨文檔之類的,APP僅僅是用于提供服務(wù),那么付費的的操作可以在微信或者網(wǎng)頁端實現(xiàn)從而避免在appstore付費。
還有就是審核的時候針對測試賬號使用蘋果支付,但是審核通過之后,開放微信和支付寶等第三方的支付
文章題目:ios開發(fā)蘋果支付,iosapp支付方式
網(wǎng)站鏈接:http://fisionsoft.com.cn/article/dsdsjdg.html