IAP 简单流程整理
来源:互联网 发布:报纸排版软件有哪些 编辑:程序博客网 时间:2024/05/02 01:41
IAP,就是程序内购买,比如游戏中购买游戏币、读书应用中订阅书籍等。OK,我们开始吧。
1、在itunesconnect.apple.com中创建一个应用,点击Manage In-App Purchases,可以通过create new创建新的产品,其中的Product ID就是以后用来交易的ID。
2、进行客户端开发
2.1、添加框架
StoreKit.framework
2.2、导入头文件
#import <StoreKit/StoreKit.h>
2.3、添加监听
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];//监听购买结果
2.4、实现购买结果
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchased:// 交易完成
break;
case SKPaymentTransactionStateFailed:// 交易失败
break;
case SKPaymentTransactionStateRestored:// 已经购买过该商品
break;
case SKPaymentTransactionStatePurchasing:// 交易中
break;
default:
break;
}
}
}
2.5、发起购买
如果交易只在本地,跳过第3步。如果为了安全或交易的东西在服务器,比如网游里的道具,则需要服务器端开发
[[SKPaymentQueue defaultQueue] addPayment:[SKPayment paymentWithProductIdentifier:productID]];
2.6、交易完成后清除交易
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
3、服务器开发
3.1、获得交易凭证
在- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions返回SKPaymentTransactionStatePurchased交易成功时,返回的
SKPaymentTransaction对象里transaction.transactionReceipt就是凭证。
3.2、验证交易凭证
把凭证进行base64后以post的方式json格式发送到苹果服务器验证
https://sandbox.itunes.apple.com/verifyReceipt // 沙盒
https://buy.itunes.apple.com/verifyReceipt // 正式
{"receipt-data":"base64后的凭证信息"} // post内容
会返回json格式信息,如果status=0则认为凭证是合法的。
4、测试
4.1、创建测试帐号
打开itunesconnect.apple.com首页,进入Manage Users,点击Test Users。添完保存即可。
注意:创建的帐号不能是真是的用户帐号
4.2、测试过程
注意:测试的时候如果appstore绑定了帐号不是测试帐号,无限购买失败
注意:有文档说创建了产品,当时可以会出现无限购买失败,需要等待一会等苹果的沙盒准备完成
5、其他
5.1查询产品信息
5.1.1发起获取
SKProductsRequest *request=[[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:productID]];
request.delegate=self;
[request start];
[request release];
备注:如果产品为com.xx.a,com.xx.b,productID为com.xx时可以查出全部(新版可能已经无法查出全部了)
5.1.2申明SKProductsRequestDelegate并实现
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
并可以获得产品信息
for( SKProduct *product in response.products ) {
NSLog(@"product info");
}
5.1.2发起获取
SKProductsRequest *request=[[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:productID]];
request.delegate=self;
[request start];
[request release];
6 提交
创建版本后,一定不要点击“Prepare for upload”或“Read for upload”。要在版本详情里的IAP中勾选后,才能点击“Read for upload”。否则IAP中的产品会永远“Read for submit”!!只有重新上传才能解决。(新版已经不需要勾选了,只有添加新的时可能需要勾选)
7 坑
7.1 越狱机,可以IAP已经破坏而无法购买7.2 审核的时候,如果用生产服务器验证是,出现21007,要使用测试服务器再验证一下,一般都能过
- IAP 简单流程整理
- MTK串口简单流程整理
- STM32 IAP实现流程
- STC IAP 资料整理
- IAP-In App Purchase流程
- IAP-In App Purchase流程
- IAP-In App Purchase流程
- IAP-应用内购买流程
- IAP内购整个流程
- 项目IAP代码更新流程
- Apple那边的IAP整理
- AssetBundle系统整理(一)_简单流程
- Unity IAP的简单使用
- IAP(In App Purchase)流程总结
- 上传IAP商品到iTunesConnect流程
- iOS 内购( IAP)处理流程
- 苹果内购IAP流程(转载)
- 一个关于IAP整理(部份)
- mtk android sd卡调试
- Eclipse中自动添加注释(作者,时间)
- 国外人工智能界牛人主页
- inno setup 安装/卸载 弹出网页
- 11-30
- IAP 简单流程整理
- 11-29
- jsp Flex 通过HTTPService Session 数据传递
- SqlServer Sysobjects系统表
- 2013年Java继续火的五大理由
- HyperionPlanning创建应用程序
- Java隐晦的int溢出 切忌想当然
- 【转】研究生必读→如何获得全文文献
- HttpHandler的认识与加深理解