最新詳細蘋果應(yīng)用內(nèi)支付IAP開發(fā)教程

前段時間公司app需要接入蘋果支付,看了很多有關(guān)IAP的教程,雖然寫的都很不錯,但每篇文章都不是很全很詳細,有的容易出問題的地方都一筆而過了。當(dāng)然,如果你有一定的iOS開發(fā)經(jīng)驗,這些也就應(yīng)該是一筆而過。

最近有很多人問我IAP的問題,所以準(zhǔn)備寫一篇教程,完全面對小白,手把手傳授技能,希望大家不要讓IAP難住或者耽誤較多的開發(fā)時間與成本,也希望大家看過會對自己有所幫助。

首先呢,IAP的工作流程大概是這樣的:

1.向服務(wù)器請求商品訂單號碼以及ituns配置的商品ID

2.根據(jù)商品ID,向服務(wù)器發(fā)起購買商品請求

3.購買流程結(jié)束后, 向服務(wù)器發(fā)起驗證憑證以及支付結(jié)果的請求

4.驗證流程結(jié)束完成購買流程。

itunesconnect

下面是具體的流程了:

1.首先,你要有一個開發(fā)者賬號(這好像是廢話了...)

登錄itunesconnect.apple.com。

點擊協(xié)議、稅務(wù)和銀行業(yè)務(wù),把里面的Contact Info,Bank Info,Tax Info這三個信息填完整(少一個都不會拿到商品信息)

2.創(chuàng)建App或者選擇已經(jīng)有的App, 點擊進入詳情之后, 點擊App內(nèi)購項目這一選項

點擊加號。

這里解釋一下這幾種類型:

1.消耗型項目

對于消耗型 App 內(nèi)購買項目,用戶每次下載時都必須進行購買。一次性服務(wù)通常屬于消耗型項目,例如釣魚 App 中的魚餌。

2.非消耗型項目

對于非消耗型 App 內(nèi)購買項目,用戶僅需要購買一次。不會過期或隨使用而減少的服務(wù)通常為非消耗型項目,例如游戲 App 的新跑道。

3.自動續(xù)訂訂閱

通過自動續(xù)訂訂閱,用戶可以購買指定時間期限內(nèi)的更新和動態(tài)內(nèi)容。除非用戶取消選擇,否則訂閱(例如雜志訂閱等)會自動續(xù)訂。

4.免費訂閱

免費訂閱是開發(fā)人員在“報刊雜志”中推廣其內(nèi)容的絕佳方式。用戶注冊免費訂閱后,此訂閱內(nèi)容在與該用戶 Apple ID 相關(guān)聯(lián)的所有設(shè)備上可用。免費訂閱不會過期,并且僅能在位于“報刊雜志”類別中的 App 中提供。

5.非續(xù)訂訂閱

非續(xù)訂訂閱允許有時限性的營銷服務(wù)。對于 App 內(nèi)購買項目中的限時訪問內(nèi)容,就需使用非續(xù)訂訂閱。例如,導(dǎo)航 App 中語音導(dǎo)航功能的一周訂閱,或者年度訂閱已存檔的視頻或音頻的在線目錄。

舉個例子:比如Q幣,就屬于消耗型的商品,或比如QQ會員,就屬于非續(xù)訂訂閱了。通常的的開發(fā)是使用這兩種類型的比較多。其他的就不舉例說明了,大家自己發(fā)現(xiàn)吧,啊哈哈。

選擇消耗形項目, 然后繼續(xù),輸入商品的名稱, 產(chǎn)品的ID(自定義), 在下邊添加語言的地方添加一下商品的描述信息, 然后上傳一張商品界面的截圖(這里可以隨便, 影響不是很大)保存就可以了。
這里是創(chuàng)建好的商品

商品id是你獲取商品的標(biāo)示,當(dāng)然id是你自己命名的。

好了,到這里itunesconnect的配置就基本完成了,下面是代碼了。

代碼

導(dǎo)入 StoreKit.Framework 這個框架

在需要支付的vc里 #import<StoreKit/StoreKit.h>

1在 - (void)viewDidLoad里添加購買監(jiān)聽

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

2 檢測是否允許內(nèi)購

if([SKPaymentQueue canMakePayments]){

? ? ? ? ? ? [selfrequestProductData:productID]; ? ? ??

}else{

NSLog(@"不允許程序內(nèi)付費"); ? ? ??

}

3請求商品信息

- (void)requestProductData:(NSString*)type{

NSArray*product = [[NSArrayalloc] initWithObjects:type,nil];

NSSet*nsset = [NSSetsetWithArray:product];

SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:nsset];

request.delegate=self;? ??

[request start];

}

4.1成功收到產(chǎn)品返回信息

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{

NSArray*product = response.products;

if([product count] ==0){

NSLog(@"沒有商品");

return;

}

?SKPayment * payment = [SKPayment paymentWithProduct:p];

[[SKPaymentQueue defaultQueue] addPayment:payment];

}

4.2失敗執(zhí)行的方法

- (void)request:(SKRequest*)request didFailWithError:(NSError*)error {

NSLog(@"商品信息請求錯誤:%@", error);

}

- (void)requestDidFinish:(SKRequest*)request {

NSLog(@"請求結(jié)束");

}

5監(jiān)聽購買結(jié)果

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transaction {

for(SKPaymentTransaction *tranintransaction){

switch(tran.transactionState) {

caseSKPaymentTransactionStatePurchased:

NSLog(@"交易完成");

break;

caseSKPaymentTransactionStatePurchasing:

NSLog(@"商品添加進列表");

break;

caseSKPaymentTransactionStateRestored:

NSLog(@"已經(jīng)購買過商品");

break;

caseSKPaymentTransactionStateFailed:

NSLog(@"交易失敗");

break;

default:

[SVProgressHUDdismiss];

break;

}

在請求商品信息的時候,因為是去請求蘋果的服務(wù)器,所以請求時間會稍微有點長,所以響應(yīng)的解決方法也是有的,就是做一些本地化。不過我沒搞(啊哈哈),大家有需求的可以弄一下。

測試

有關(guān)測試呢,需要添加沙箱的測試帳號, 在itunsconnect中選擇用戶與職能,然后添加測試帳號, 這個帳號可以用于測試購買。 另外, 在測試的時候, 可能比較慢, 所以我的項目中加入了不可交互的HUD進行提示, 避免用戶進行多次商品的添加與購買。

添加一個測試用戶就好了

恩,我所知道的有關(guān)IAP的大體上這些,可以滿足簡單的支付了。

這篇文章可能會漏掉一些知識點,代碼也不是很健全,大家所需了解的應(yīng)該是原理和流程,其他的就好說了。

希望這篇文章會對一些初學(xué)者,或者對IAP有所疑問的開發(fā)者能有所幫助。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • iOS應(yīng)用內(nèi)付費(IAP)開發(fā)步驟 1.蘋果iTunes Connect內(nèi)購產(chǎn)品信息錄入。 1)創(chuàng)建app內(nèi)購買項...
    MillerWang閱讀 11,335評論 0 7
  • 在我們應(yīng)用開發(fā)中我們經(jīng)常在自己的項目中使用到支付,下面我們來談?wù)刬OS這塊的支付;iOS支付主要分為兩類,第三方支...
    Hither閱讀 8,553評論 9 42
  • iOS支付 iOS支付分為兩類,第三方支付和應(yīng)用內(nèi)支付(內(nèi)購)。 第三方支付包括:支付寶支付、微信支付、銀聯(lián)支付、...
    請輸入賬號名閱讀 6,484評論 3 22
  • 《通往財富自由之路》第一季已結(jié)束,為了給訂閱用戶更好的、更快捷、更方便的復(fù)習(xí)概念,笑來老師帶來了他的音頻節(jié)目大福利...
    艾問才會贏閱讀 494評論 2 3
  • 我本以為具備計算機專業(yè)功底就不必再去花什么時間去學(xué)習(xí)各種具體的技術(shù)細節(jié)了,因為計算機專業(yè)所學(xué)的理論就好像是九陽神功...
    Stroman閱讀 232評論 0 0

友情鏈接更多精彩內(nèi)容