iOS開發--應用內購買

在最近的這個項目中作到了應用內購買鑽石功能,在這個功能點上以前也是沒有任何經驗 經過百度獲得了答案,這裏博主就不把應用內購買的代碼列出來數據庫

網上有不少,難度並不大,可是應用內購買應注意的事項我認爲有如下幾點:緩存

1.在ituns connect主頁裏保證稅務,協議和銀行業務的功能項已經開通好了,不然是沒法註冊購買的產品的信息服務器

2.註冊購買產品的product id須要用到程序代碼裏,因此程序代碼中product id 就是註冊的產品id.網絡

3.在程序代碼中拿到產品信息後支付完成後須要拿到一個叫作SKPaymentTransaction對象裏邊的一個屬性:transactionReceipt 返回的是一個nsdata類型測試

可是咱們應該用字符串接收,由於這些數據是要發送給本身的服務器進行驗證的(verifyReceipt)一句代碼以下:code

 NSString *templeTransactionRe = [[NSString alloc] initWithData:transaction.transactionReceipt encoding:NSUTF8StringEncoding];對象

得到收據後須要發送給服務器驗證,由於這裏涉及到測試服務器和正式服務器兩個地址,因此我當時是經過判斷收據中是否包含關鍵字「sandbox」(也能夠經過返回的code碼) 若是有這個value 說明是測試環境下拿到的收據 這時咱們須要服務器選擇測試地址進行驗證,不然是正式環境的地址ip

博主當初在第三步花了比較長的時間 沒經驗沒辦法。因此如今特地寫下來字符串

4.緩存:這是第三步涉及到的緩存 是由於蘋果扣錢在先 本地服務器驗證收據在後!若是蘋果已經扣走了用戶的錢,而在本地服務器請求驗證時忽然間網絡斷了或是別的緣由致使驗證失敗而沒有返回給用戶相應的虛擬幣或鑽石之類的(這種狀況很嚴重的),這時須要把收據和交易單號存到本地數據庫,在用戶下一次進入到此界面應及時調出數據庫中的收據再一次請求本地服務器返回給用戶相應的虛擬幣或鑽石!這樣不會讓用戶白白損失「幾個億」(切記這裏的緩存的重要性)產品

相關文章
相關標籤/搜索