iOS快速上手應用內購(IAP)附Demo

前言:最近項目中接觸到內購,本文主要介紹如何開發應用內購(In App Purchase),有一些是根據實際需求作的考慮,有不一樣的看法歡迎留言指教~本文demo:https://github.com/maligh/MLIAPManager 運行時不要忘記更改Bundleid 跟productId。若是對你有幫助請不要吝惜你的star~python

前期需準備: * 1.在蘋果後臺添加商品,記下你的商品id. *2.在蘋果後臺建立好沙盒測試帳號.這兩步就不介紹了,能夠簡書搜一下,bing一下,soso一下,google一下。(我要改掉意識中百度一下這種說法,😄)git


圖一.png

整個內購流程以下:github

  1. 應用發送請求到服務器,獲取全部的可用Products Id集合,(固然你也能夠把Products Id硬編碼到程序中,這樣會致使不能動態配置商品).
  2. 根據服務器返回的Products Id 以及信息設置購買界面UI.(這裏跟圖一有些不一樣)
  3. 用戶點擊購買商品.
  4. 客戶端根據相應的Product Id向App Store請求產品信息,併發起購買payment.(使用StoreKit)
  5. App Store處理該payment,並返回完成的transaction
  6. 客戶端從transaction中獲取receipt憑證數據,並將其發送給服務器,等待返回.
  7. 服務器驗證receipt憑證數據是否使用過,保存而後發給App Store驗證是否合法
  8. 服務器獲得App Store驗證結果,返回給客戶端相應購買成功或失敗信息
  9. 客戶端提示用戶購買結果以及處理相應UI.

以上流程需注意:json

  • 6~7步的時候,請求可能發送失敗。客戶端需考慮將receipt憑證數據本地持久化,並加入請求失敗重發機制;除了重發,請求也可能遭到攔截篡改,合理的加密方法能夠增長僞造破解的難度。
  • 6~7步也能夠改爲客戶端本地驗證,不過不推薦除非是一些單機應用。
  • 服務器驗證的時候注意:測試時應該使用地址:https://sandbox.iTunes.Apple.com/verifyReceipt ,生產環境地址:https://buy.itunes.apple.com/verifyReceipt . 這裏要注意APP提交審覈的時候測試人員使用的通常是沙盒環境

客戶端內購代碼就不羅列了,請看demo:https://github.com/maligh/MLIAPManager ,註釋寫的挺詳細的,有更好看法的請留言,以爲有幫助請star~~😄 下面我貼一下大概服務端代碼: demo文件中iap.py:服務器

import httplib
import  json
receipt = raw_input("Enter Your transactionReceiptString:")
jsonStr = json.dumps({"receipt-data": receipt})
#connect = httplib.HTTPSConnection("buy.itunes.apple.com")
# sandbox
connect = httplib.HTTPSConnection("sandbox.itunes.apple.com")
headers = {"Content-type": "application/json"}
connect.request("POST", "/verifyReceipt", jsonStr)
result = connect.getresponse()
data = result.read()
connect.close()
decodedJson = json.loads(data)
print decodedJson#測試查看
# status = decodedJson[u'status']
# if status == 0:
	# 驗證成功邏輯
# elif status == 21007:
	# 從新給沙盒環境發送一遍
# else:
	# 驗證失敗邏輯
複製代碼

使用方法: 替換iap.py 中的receipt值 而後進入命令行中執行 /usr/bin/python2.7 iap.py 而後你會獲得相似:併發

receipt.png


結尾:好啦,不囉嗦了,快兩點了😂,有不懂得或不一樣看法的請留言,互相交流~互相學習~歡迎star~,最後感謝你的時間~app

相關文章
相關標籤/搜索