公司項(xiàng)目用到內(nèi)購(gòu)這塊饿自,看著上個(gè)版本的老代碼,覺(jué)得很亂龄坪,就整理了下昭雌,將內(nèi)購(gòu)支付功能封裝成了一個(gè)工具類,外界只需要調(diào)用一個(gè)方法健田,傳入商品id烛卧,就能夠?qū)崿F(xiàn)支付功能,請(qǐng)求商品成功妓局,失敗总放,支付成功,失敗都有對(duì)應(yīng)的閉包模塊供外界調(diào)用進(jìn)行相關(guān)的處理
1.首先是判斷手機(jī)是否打開(kāi)的內(nèi)購(gòu)項(xiàng)目的功能
//驗(yàn)證是否能夠內(nèi)購(gòu)
public class func canMakePayments() -> Bool {
return SKPaymentQueue.canMakePayments()
}
2.開(kāi)啟內(nèi)購(gòu)商品請(qǐng)求
//根據(jù)商品id創(chuàng)建訂單請(qǐng)求
public func startPaymentRequest(productId:String) {
var productArr = [String]()
productArr.append(productId)
let productSet = NSSet(array: productArr)
let request = SKProductsRequest(productIdentifiers: productSet as! Set<String>)
request.delegate = self
request.start()
}
3.支付成功與失敗的回調(diào)
if let block = transactionSuccess {
block(currentTransaction)
}
if let block = transactionFailure {
block(currentTransaction)
}
這里相關(guān)處理的并不是很詳細(xì)好爬,有具體需要的可以酌情修改添加部分回調(diào)即可
詳細(xì)的代碼已經(jīng)上傳到了GitHub源碼上局雄,有需要的可以前去查看