內購的關鍵類:
1.skpayment(skmutablepayment可將自己的引數一對一與蘋果產生的payment對應起來)
2.transactionobserver:交易狀態更新時執行此方法,此方法會傳入交易skpaymenttransaction陣列,對陣列進行遍歷,對不同狀態進行對應的操作
(skpaymenttransactionstatepurchasing,skpaymenttransactionstatepurchased,skpaymenttransactionstatefailed,skpaymenttransactionstaterestored,skpaymenttransactionstatedeferred)
3.skpaymenttransaction:包括transactionreceipt,payment,transactionidentifier等關鍵屬性,transactionreceipt是後端驗籤的關鍵。
內購流程1:
skpayment *payment = [skpayment paymentwithproductidentifier:productid];//傳入productid
[[skpaymentqueue defaultqueue] addtransactionobserver:self];//新增observer,並執行協議,對支付狀態進行更新
//observer**方法
- (void)paymentqueue:(skpaymentqueue *)queue updatedtransactions:(nsarray *)transactions}}
如果使用者已經支付,但是驗籤沒有通過,繼續支付時會產生可免費恢復的對話方塊,這時即使再添件payment,也都是purchasing的狀態,必需將purchased狀態的paymenttrananction 通過[[skpaymentqueue defaultqueue] finishtransaction:transaction]後才能逐個執行paymentque裡面purchasing狀態下的訂單(這是針對同乙個productidentifier的產品),不同的productidentifier產品仍可正常支付
iOS內購實現流程和丟單優化
客戶端流程 這裡只做個總結,網上有很多詳細的介紹,這裡就不多講 1.itc新增商品 2.itc新增沙盒測試賬號 3.新增銀行資訊 這一步一定要有,不然呼叫支付會出現invalid productid情況 4.啟動支付介面 5.支付成功後,會返回乙個json資料串receipt,把這個receipt用...
iOS 內購遇到的坑
原因 當使用內購購買過商品後沒有把這個交易事件關,所以當我們再次去購買商品後就會呼叫以前已經購買成功的交易事件去購買因為已經購買過,才會有這個提示 解決方法 1.當我們使用 skpaymentqueue defaultqueue addpayment payment 這個方法進行支付請求後,因為我們...
IOS內購(IAP)的那些事
最近看了內購相關的東西,發現坑還真是不少,這裡做個總結。蘋果內購的主要流程 獲取商品資訊 建立交易 把交易新增到佇列 交易成功獲取憑證 拿著憑證做二次驗證 交易成功 通過產品id獲取商品資訊 skproduct import 把商品id資訊放入乙個集合中 nsset sets nsset setwi...