前言:最近項目中接觸到內購,本文主要介紹如何開發應用內購(In App Purchase),有一些是根據實際需求作的考慮,有不一樣的看法歡迎留言指教~本文demo:https://github.com/maligh/MLIAPManager 運行時不要忘記更改Bundleid 跟productId。若是對你有幫助請不要吝惜你的star~python
前期需準備: * 1.在蘋果後臺添加商品,記下你的商品id. *2.在蘋果後臺建立好沙盒測試帳號.這兩步就不介紹了,能夠簡書搜一下,bing一下,soso一下,google一下。(我要改掉意識中百度一下這種說法,😄)git
整個內購流程以下:github
Products Id
集合,(固然你也能夠把Products Id
硬編碼到程序中,這樣會致使不能動態配置商品).Products Id
以及信息設置購買界面UI.(這裏跟圖一有些不一樣)Product Id
向App Store請求產品信息,併發起購買payment
.(使用StoreKit
)payment
,並返回完成的transaction
transaction
中獲取receipt憑證數據
,並將其發送給服務器,等待返回.receipt憑證數據
是否使用過,保存而後發給App Store驗證是否合法以上流程需注意:json
receipt憑證數據
本地持久化,並加入請求失敗重發機制;除了重發,請求也可能遭到攔截篡改,合理的加密方法能夠增長僞造破解的難度。客戶端內購代碼就不羅列了,請看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 而後你會獲得相似:併發
結尾:好啦,不囉嗦了,快兩點了😂,有不懂得或不一樣看法的請留言,互相交流~互相學習~歡迎star~,最後感謝你的時間~app