Swift中接入StoreKit-簡(jiǎn)單實(shí)現(xiàn)

//引入StoreKit

import?StoreKit

//創(chuàng)建PurchaseManager類

class PurchaseManager: NSObject {

//創(chuàng)建PurchaseManager單例

? ? static let shared = PurchaseManager()


?? ? ? // 私有初始化方法防止外部實(shí)例化

? ? private override init() {}

?? func requestProductInfo() {

?? ? ? ? ? ifSKPaymentQueue.canMakePayments() {

?? ? ? ? ? ? ? print("拉支付")

?? ? ? ? ? ? ? letproductIdentifiers:Set = ["iap100006"]

?? ? ? ? ? ? ? letrequest =SKProductsRequest(productIdentifiers: productIdentifiers)

?? ? ? ? ? ? ? request.delegate=PurchaseManager.shared

?? ? ? ? ? ? ? request.start()

?? ? ? ? ? }else{

?? ? ? ? ? ? ? // 用戶禁止了應(yīng)用內(nèi)購(gòu)買

?? ? ? ? ? ? ? print("用戶禁止了應(yīng)用內(nèi)購(gòu)買")

?? ? ? ? ? }

?? ? ? }


? ? funcpurchaseProduct(_product:SKProduct) {

?? ? ? ? ? letpayment =SKPayment(product: product)

?? ? ? ? ? SKPaymentQueue.default().add(payment)

?? ? ? }


}

extension PurchaseManager: SKProductsRequestDelegate {

? ? func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {

? ? ? ? ifletproduct = response.products.first{

? ? ? ? ? ? // 顯示產(chǎn)品信息,準(zhǔn)備購(gòu)買流程

? ? ? ? ? ? print("產(chǎn)品標(biāo)題: \(product.localizedTitle)")

? ? ? ? ? ? print("產(chǎn)品描述: \(product.localizedDescription)")

? ? ? ? ? ? print("產(chǎn)品價(jià)格: \(product.price)")


? ? ? ? ? ? // 在這里可以將產(chǎn)品信息展示給用戶镰官,并觸發(fā)購(gòu)買流程

? ? ? ? ? ? // 例如顯示在UI上,或者直接調(diào)用購(gòu)買方法

? ? ? ? ? ? purchaseProduct(product)

? ? ? ? }else{

? ? ? ? ? ? // 未找到產(chǎn)品信息

? ? ? ? ? ? print("未找到產(chǎn)品信息")

? ? ? ? }

? ? }

}

extension PurchaseManager: SKPaymentTransactionObserver {

? ? funcpaymentQueue(_queue:SKPaymentQueue,updatedTransactionstransactions: [SKPaymentTransaction]) {

? ? ? ? fortransactionintransactions {

? ? ? ? ? ? switchtransaction.transactionState{

? ? ? ? ? ? case.purchased:

? ? ? ? ? ? ? ? // 處理購(gòu)買成功

? ? ? ? ? ? ? ? print("購(gòu)買成功")

? ? ? ? ? ? ? ? SKPaymentQueue.default().finishTransaction(transaction)

? ? ? ? ? ? case.failed:

? ? ? ? ? ? ? ? // 處理購(gòu)買失敗

? ? ? ? ? ? ? ? ifleterror = transaction.error{

? ? ? ? ? ? ? ? ? ? print("購(gòu)買失敗: \(error.localizedDescription)")

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? SKPaymentQueue.default().finishTransaction(transaction)

? ? ? ? ? ? case.restored:

? ? ? ? ? ? ? ? // 處理已恢復(fù)購(gòu)買

? ? ? ? ? ? ? ? print("已恢復(fù)購(gòu)買")

? ? ? ? ? ? ? ? SKPaymentQueue.default().finishTransaction(transaction)

? ? ? ? ? ? case.deferred, .purchasing:

? ? ? ? ? ? ? ? // 處理購(gòu)買中或者等待用戶確認(rèn)購(gòu)買

? ? ? ? ? ? ? ? print("購(gòu)買中...")

? ? ? ? ? ? @unknown default:

? ? ? ? ? ? ? ? fatalError("未知狀態(tài)")

? ? ? ? ? ? }

? ? ? ? }


? ? ? ? // 添加觀察者

? ? ? ? func addPaymentObserver() {

? ? ? ? ? ? SKPaymentQueue.default().add(self)

? ? ? ? }


? ? ? ? // 移除觀察者

? ? ? ? func removePaymentObserver() {

? ? ? ? ? ? SKPaymentQueue.default().remove(self)

? ? ? ? }

? ? }


? ? // 添加觀察者

? ? func addPaymentObserver() {

? ? ? ? SKPaymentQueue.default().add(self)

? ? }


? ? // 移除觀察者

? ? func removePaymentObserver() {

? ? ? ? SKPaymentQueue.default().remove(self)

? ? }

}

使用

PurchaseManager.shared.requestProductInfo()


自測(cè)可以拉起支付

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子雨效,更是在濱河造成了極大的恐慌黎茎,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件续徽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡亲澡,警方通過查閱死者的電腦和手機(jī)钦扭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來床绪,“玉大人客情,你說我怎么就攤上這事』嵯眩” “怎么了裹匙?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)末秃。 經(jīng)常有香客問我概页,道長(zhǎng),這世上最難降的妖魔是什么练慕? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任惰匙,我火速辦了婚禮,結(jié)果婚禮上铃将,老公的妹妹穿的比我還像新娘项鬼。我一直安慰自己,他們只是感情好劲阎,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布绘盟。 她就那樣靜靜地躺著,像睡著了一般悯仙。 火紅的嫁衣襯著肌膚如雪龄毡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天锡垄,我揣著相機(jī)與錄音沦零,去河邊找鬼。 笑死货岭,一個(gè)胖子當(dāng)著我的面吹牛路操,可吹牛的內(nèi)容都是我干的疾渴。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼屯仗,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼搞坝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起祭钉,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤瞄沙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后慌核,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡申尼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年垮卓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片师幕。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡粟按,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出霹粥,到底是詐尸還是另有隱情灭将,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布后控,位于F島的核電站庙曙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏浩淘。R本人自食惡果不足惜捌朴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望张抄。 院中可真熱鬧砂蔽,春花似錦、人聲如沸署惯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)极谊。三九已至诡右,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間怀酷,已是汗流浹背稻爬。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蜕依,地道東北人桅锄。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓琉雳,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親友瘤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子翠肘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 內(nèi)購(gòu) 一. 內(nèi)購(gòu)的簡(jiǎn)介 何謂內(nèi)購(gòu)在iOS的App中, 如果你要購(gòu)買某件商品, 使用蘋果的支付方式進(jìn)行購(gòu)買, 即為內(nèi)...
    面糊閱讀 1,543評(píng)論 2 51
  • iOS支付 iOS支付分為兩類,第三方支付和應(yīng)用內(nèi)支付(內(nèi)購(gòu))辫秧。 第三方支付包括:支付寶支付束倍、微信支付、銀聯(lián)支付盟戏、...
    羊駝先生丶閱讀 898評(píng)論 0 0
  • iOS支付 iOS支付分為兩類绪妹,第三方支付和應(yīng)用內(nèi)支付(內(nèi)購(gòu))。 第三方支付包括:支付寶支付柿究、微信支付邮旷、銀聯(lián)支付、...
    帥不過oneS閱讀 2,850評(píng)論 2 8
  • 我在點(diǎn)擊購(gòu)買的時(shí)候突然斷網(wǎng)了,這個(gè)時(shí)候并沒有返回成功,但是我在連上網(wǎng)絡(luò)后,并不會(huì)在走代理方法,只有當(dāng)進(jìn)程殺死后,然...
    90后的思維閱讀 1,142評(píng)論 0 4
  • iOS支付 iOS支付分為兩類蝇摸,第三方支付和應(yīng)用內(nèi)支付(內(nèi)購(gòu))婶肩。 第三方支付包括:支付寶支付、微信支付貌夕、銀聯(lián)支付律歼、...
    請(qǐng)輸入賬號(hào)名閱讀 6,176評(píng)論 3 22