ios內購二次驗證安全性問題 iOS內購之二次驗證

2021-10-13 02:33:12 字數 2409 閱讀 9535

開篇:關於ios內購整體流程網上能找到很多。我抽絲剝繭,著重說一下二次驗證及收據回傳的資料問題。

二次驗證

具體區別不一一表述,可以檢視下面的鏈結。

ios二次驗證兩種做法的區別

我要著重說的是二次驗證的實際做法和收到的資料是什麼。

一、二次驗證具體如何驗證

// 從沙盒中獲取交易憑證(收據)

nsdata *receiptdata = [nsdata datawithcontentsofurl:receipturl];

// 轉化為base64字串

nsstring *receiptstring = [receiptdata base64encodedstringwithoptions:0];

// 拼接請求資料

nsstring *bodystring = [nsstring stringwithformat:@"", receiptstring];

nsdata *bodydata = [bodystring datausingencoding:nsutf8stringencoding];

// 建立請求到蘋果官方進行購買驗證

// 建立連線並傳送同步請求

nserror *error = nil;

nsdata *responsedata = [nsurlconnection sendsynchronousrequest:requestm returningresponse:nil error:&error];

if (error) {

nslog(@"驗證購買過程中發生錯誤,錯誤資訊:%@",error.localizeddescription);

return;

nsdictionary *dic = [nsjsonserialization jsonobjectwithdata:responsedata options:nsjsonreadingallowfragments error:nil];

二、收據回傳得到的資料分析

上文得到的dic就是我們通過收據得到的所有資料

在這裡有個坑,我相信有很多同學都踩過。

就是你支付成功了,但是在這個陣列裡卻找不到你想要的資料。

我們可以看下面一張圖,然後再分析分析。

內購型別.png

可以看到有四種型別,但是具體到我們專案中我們該如何選擇和操作呢。

4.非自動續訂型:這個就是1個月優酷會員啦,或者3個月季度會員啥的。有期限,到期時也不會自動扣錢。一般的都是選擇這個,不然像愛奇藝的自動續訂,使用者不知情時,會被罵死,哈哈

說了這麼多,來看看訂單資料長啥樣

product_id = "lalalalahahaha",//商品的標識,和產品定,隨便寫但是不能重複

quantity = "1",//購買商品的數量

transaction_id = "1000000357637984",//交易的標識

purchase_date_ms = "1512613065000",//購買時間毫秒

original_purchase_date_pst = "2017-12-06 18:17:45 america/los_angeles",//購買時間,太平洋標準時間

purchase_date_pst = "2017-12-06 18:17:45 america/los_angeles",//太平洋標準時間

original_purchase_date_ms = "1512613065000",//毫秒

is_trial_period = "false",

original_purchase_date = "2017-12-07 02:17:45 etc/gmt",//原始購買時間

original_transaction_id = "1000000357637984",//原始交易id

purchase_date = "2017-12-07 02:17:45 etc/gmt"//購買時間

注:2.其他三種每次購買,都會生成新的訂單資訊,不會覆蓋原來的,所以你購買多少次,上面就會顯示多少條。

三、內購二次驗證實際開發中具體做法

1.我們把收據資訊傳給伺服器

2.伺服器自行處理所有的訂單資訊,返回乙個成功與失敗的狀態給我們。所有的操作,後台都已經記錄在案了,我們不再需要管。我們只需要知道,此次購買是否成功就行了。

結語:內購其實很簡單,只是有時候不經意就會入坑,在此特意記錄下困惑的地方,幫助自己深刻記憶,也希望幫助到其他遇到該問題的童鞋。

iOS 內購被拒問題

when validating receipts on your server,your server needs to be able to validation fails with the error code sandbox receipt used in production,you sh...

iOS 內購上線被拒問題

我的csdn qq技術群 549943887 github 首先內購確實挺坑,分紅為3 7,蘋果拿走 30。這個內購專案整合好了,沙盒測試也沒問題了,所以開始準備提交了,把內購專案也按要求填寫好了。第一次提交,被拒,反饋 specifically,the loading indicator spun...

Unity與IOS內購恢復問題

asset store上面有很多iap外掛程式,上面都有文件,根據他的步驟來就可以完成簡單的內購,恢復內購的時候,這些外掛程式都會統一的呼叫乙個函式,而且是根據恢復的個數來確定這個函式的呼叫次數。最開始使用的時候,因為返回的是乙個引數,感覺就不應該是這個函式,因為恢復內購的個數不止乙個,經過測試之後...