你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> 【附Demo】iOS快速上手應用內購(IAP)

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

編輯:IOS開發基礎

1344515034198.jpg

投稿文章,作者:SuperMario_Nil(簡書)

前言:

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

前期需准備:

1、在蘋果後台添加商品,記下你的商品id。

2、在蘋果後台創建好沙盒測試賬號。

這兩步就不介紹了,可以自行搜索。

1457495-616f81cec455bacf.jpg

整個內購流程如下:

  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

以上流程需注意:

6~7步的時候,請求可能發送失敗。客戶端需考慮將receipt憑證數據本地持久化,並加入請求失敗重發機制;除了重發,請求也可能遭到攔截篡改,合理的加密方法可以增加偽造破解的難度。

6~7步也可以改成客戶端本地驗證,不過不推薦除非是一些單機應用。

服務器驗證的時候注意:

測試時應該使用地址:https://sandbox.iTunes.Apple.com/verifyReceipt

生產環境地址:https://buy.itunes.apple.com/verifyReceipt

這裡要注意APP提交審核的時候測試人員使用的一般是沙盒環境。

客戶端內購代碼就不羅列了,請看DEMO,注釋寫的挺詳細的,有更好見解的請留言,覺得有幫助請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

然後你會得到類似:

1457495-93b15077b68ab246.jpg

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved