InAppPurchase总结

一.简介

1.功能
IAP可用于支付 内容,功能,服务,订阅。不能用来支付 实物,实体服务,虚拟货币,带有色情/仇恨/暴力/赌博等等性质的内容或服务

 

2.商品按类型可分为:
Consumable  每次都收费(消耗品)


Non-consumable  付费一次(非消耗品)


Auto-renewable subscriptions  自动同步订阅(服务有效期间内自动同步其他机器上的订阅)
Free subscriptions  免费订阅 仅用于 Newsstand-enabled apps.


Non-renewing subscriptions  非自动同步订阅,由开发者决定其他机器是否更新

 

3.交易模式
Built-in Product Model 內建product模式,这种方式写死了可以购买哪些物品,提供什么服务
Server Product Model 服务器提供product模式,这种方式就是比较灵活的通过自己的服务器控制提供哪些商品,购买后提供哪些东西

 

二.程序流程

InAppPurchase总结


1.程序添加
1)添加一个不带通配符的APP ID,在itunesconnect中添加程序
2)设置iap,添加商品(包括id,名称,详细描述,截图等)
3)添加测试帐号


2.程序内代码编写
1)检查用户是否关闭了程序内付费[SKPaymentQueue canMakePayments]
2)根据给定的标识集合取得商品列表
3)根据用户选择的商品显示支付页面

InAppPurchase总结


附:相关类

SKProduct    商品

// 本地化描述

@property(nonatomic, readonly) NSString *localizedDescription

// 本地化标题

@property(nonatomic, readonly) NSString *localizedTitle

// 价格

@property(nonatomic, readonly) NSDecimalNumber *price

// 地域

@property(nonatomic, readonly) NSLocale *priceLocale

// 标识符

@property(nonatomic, readonly) NSString *productIdentifier

 

SKProductsRequest 请求商品列表

@property(nonatomic, assign) id<SKProductsRequestDelegate> delegate

- (id)initWithProductIdentifiers:(NSSet *)productIdentifiers



SKProductsRequestDelegate 请求商品列表委托

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



SKProductsResponse    商品列表返回

// 无效产品id列表

@property(nonatomic, readonly) NSArray *invalidProductIdentifiers

// 产品列表

@property(nonatomic, readonly) NSArray *products

 

SKPayment    付款

// 产品标识

@property(nonatomic, copy, readonly) NSString *productIdentifier

// 数量

@property(nonatomic, readonly) NSInteger quantity

@property(nonatomic, copy, readonly) NSData *requestData
// 生成一个payment
+ (id)paymentWithProduct:(SKProduct *)product

 

SKPaymentQueue 付款队列

@property(nonatomic, readonly) NSArray *transactions

// 检测是否可以内支付

+ (BOOL)canMakePayments

+ (SKPaymentQueue *)defaultQueue



// payment 必须有一个产品id并且quantity>0,否则异常,添加后就会依次显示支付窗口

- (void)addPayment:(SKPayment *)payment

// 添加一个委托

- (void)addTransactionObserver:(id < SKPaymentTransactionObserver >)observer

// 结束交易

- (void)finishTransaction:(SKPaymentTransaction *)transaction

- (void)removeTransactionObserver:(id < SKPaymentTransactionObserver >)observer

// 查看有哪些已经restored的交易

- (void)restoreCompletedTransactions

 

SKPaymentTransaction    交易流程

@property(nonatomic, readonly) NSError *error

// 如果是restored的流程,他有个原始流程

@property(nonatomic, readonly) SKPaymentTransaction *originalTransaction

@property(nonatomic, readonly) SKPayment *payment

// 交易日期

@property(nonatomic, readonly) NSDate *transactionDate

// 标识

@property(nonatomic, readonly) NSString *transactionIdentifier

// 回执

@property(nonatomic, readonly) NSData *transactionReceipt

// 状态:成功,失败,进行中,restored

@property(nonatomic, readonly) SKPaymentTransactionState transactionState

参考:http://iamgarlic.blogspot.com/2011/04/ios-in-app-purchase-1.html

http://iamgarlic.blogspot.com/2011/04/ios-in-app-purchase-2.html

 

 
  

你可能感兴趣的:(APP)