iOS的in-app purchase C#伺服器二次驗證實現

來源:互聯網
上載者:User

標籤:這不   des   pps   問題   pos   datawit   好的   遊戲伺服器   ios8   

iOS的in-app purchase實現,早在ios4的時候,我實現了一次,這次升級到ios8,重新看了下文檔,ios本身有了更新,加上這次我們要做伺服器二次驗證,還是好好摸索了下。


首先我要說的是,ios的文檔內雖然給出了伺服器驗證的代碼,但是完全是用object-c實現的。我想這本身沒什麼太多價值吧。至少我還沒遇見用oc來實現遊戲邏輯伺服器的。如果是應用,可能很多人會使用PHP,asp,或者Java來實現伺服器,那麼這塊我就不說了,網上可以搜到非常多的資料。我這裡著重介紹C#伺服器的實現(為什麼遊戲伺服器用C#,不用C++?項目就是這樣,也就不解釋了)。用戶端的代碼網上到處都是了,不再羅列


設計思路:


注意點:

1.ios7以後的版本,transaction中的transactionReceipt已經被淘汰,雖然目前到8.1.3為止,仍舊可以訪問該變數,但是誰知道哪天就不行了呢,正確的存取方法

NSURL *url = [[NSBundle mainBundle] appStoreReceiptURL];

NSData *receipt = [NSData datawithContentsOfURL:url];

2.接下來很容易出現問題的部分,按照ios的文檔,此時你需要把這個NSData*的收據資料發送到你的伺服器上進行二次驗證,ios很輕巧的給出了一段oc的範例代碼。(但是有幾個人會用OC來寫遊戲伺服器啊,範例代碼完全沒有參考價值)。也就是說,此時,我們需要把NSData*轉換成我們伺服器能讀取的資料格式,大部分的伺服器代碼(java,php,c++,C#)我們會使用byte數組,或是string,char數組來傳遞。我們的項目比較特殊,使用了Unity3D的介面,所以只接受string格式。

這裡我要說的是,我看到網上有人,包括unity3d的某個外掛程式是在用戶端上直接使用httpwebrequest的方式,然後用戶端直接處理httpwebresponse,這種做法可以獲得正確的驗證,但這不是伺服器二次驗證,因為根本沒有遞交到伺服器上,只是在用戶端代為行使了伺服器的權利。還有網上有文章介紹在用戶端使用httprequest把資料POST到伺服器,再由伺服器POST給app store,我沒有試過這種方式,但是我一樣覺得這完全多此一舉,且麻煩。最佳的方式,就應該是像ios文檔描述的那樣,使用socket發送給伺服器,由伺服器post給app store。


但是要注意的是,此時讀取出來的NSData*不能直接轉NSString*,可能裡面由結束符,直接轉的話,你將無法獲得完整或是正確的字串。所以直接調用NSData的base64EncodeString,才能轉出爭取完整的字串。(其實這步更好的是放到伺服器上去加密,假如你不像我一樣必須傳遞給伺服器string類型的話,你可以直接把NSData傳遞給本地的socket,但是我估計,無論此時你本地是C++還是C#,如果你不適用基於64的加密程式,直接轉string,都會出現無法正確轉出字串的,如果你能把NSData轉byte數組來傳遞,也許就沒有這個問題了)

3.伺服器收到加密後的字串,然後使用httpwebrequest post資料。注意,post的body主體必須是json字串,{“receipt-data”:“伺服器收到的收據資料”},大括弧也是要的哦,我因為沒有加大括弧,曾不停的出現{“status”:21002}的錯誤

4.設定HttpwebRequest

method肯定是POST,這個不多說

ContentType可以是"application/x-www-form-urlencoded"或者“application/json”

ContentLength可以設,可以不設,看你怎麼傳遞資料,

Body就是你要傳給appstore的JSON字串,在C#裡沒有這個變數,直接使用流寫入,PHP,java等有,所以看用什麼語言實現了

iOS的in-app purchase C#伺服器二次驗證實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.