iOS苹果内购(详细步骤)
一.设置付费协议
1.进入开发者平台,点击如下图所示:
设置
2.查看付费同意条款
- 设置付费协议
添加这3个信息
4.添加银行账户
5.选择报税表
默认美国
6.根据报税表填写报税情况,根据自己实际情况,在这里我们需要选择NO,后面选了几个勾,以为可以,后面报错了!
三者必须填写
注意:这里可以随便填写。
7.填写联系人,这几个部分可以填写同一人
二.添加内购项目
- 点击添加
2.选择内购项目类型
根据功能选择
3.设置产品价格及名称
4.显示信息
5.审核信息
注意:这些信息都要填完整,否则会提示元数据丢失。
内购项目
三.创建沙盒技术测试号
添加账号
三.代码集成
在需要购买的控制器内
#import <StoreKit/StoreKit.h>
@interface HomeViewController ()<SKProductsRequestDelegate,SKPaymentTransactionObserver>@end
- (void)viewDidLoad {[super viewDidLoad];UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"总共免费使用5次,已消耗完" message:@"付费后可无限次使用" preferredStyle:UIAlertControllerStyleAlert];[alert addAction:[UIAlertAction actionWithTitle:@"付费" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {[IHUtility addWaitingView:@"支付中"];//监听购买结果[[SKPaymentQueue defaultQueue] addTransactionObserver:self];if([SKPaymentQueue canMakePayments]){[self requestProductData:@"com.IntelligentNetwork.QuickIdentificationDiagram.purchase1"];}else{NSLog(@"不允许程序内付费");}}]];[alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]];// 弹出对话框[self presentViewController:alert animated:true completion:nil];
}
//去苹果服务器请求商品
- (void)requestProductData:(NSString *)type{NSArray *product = [[NSArray alloc] initWithObjects:type,nil];NSSet *nsset = [NSSet setWithArray:product];SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:nsset];request.delegate = self;[request start];
}//收到产品返回信息
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{NSLog(@"--------------收到产品反馈消息---------------------");NSArray *product = response.products;NSLog(@"productID:%@", response.invalidProductIdentifiers);if(product.count==0){[WHToast showMessage:@"查找不到商品信息" duration:1 finishHandler:^{}];return;}[IHUtility addWaitingView:@"支付中"];SKProduct *p = nil;for(SKProduct *pro in product) {NSLog(@"%@", [pro description]);NSLog(@"%@", [pro localizedTitle]);NSLog(@"%@", [pro localizedDescription]);NSLog(@"%@", [pro price]);NSLog(@"%@", [pro productIdentifier]);if([pro.productIdentifier isEqualToString: @"com.IntelligentNetwork.QuickIdentificationDiagram.purchase1"]){p = pro;}}SKPayment *payment = [SKPayment paymentWithProduct:p];NSLog(@"发送购买请求");[[SKPaymentQueue defaultQueue] addPayment:payment];
}//请求失败
- (void)request:(SKRequest *)request didFailWithError:(NSError *)error{[IHUtility removeWaitingView];[WHToast showMessage:@"支付失败" duration:1 finishHandler:^{}];
}- (void)requestDidFinish:(SKRequest *)request{[IHUtility removeWaitingView];
}//监听购买结果
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transaction{[IHUtility removeWaitingView];for(SKPaymentTransaction *tran in transaction){[self verifyPurchaseWithPaymentTransaction:[NSNumber numberWithInt:tran.transactionState]];switch(tran.transactionState) {case SKPaymentTransactionStatePurchased:{[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"buyed"];[[SKPaymentQueue defaultQueue] finishTransaction:tran];}break;case SKPaymentTransactionStatePurchasing:break;case SKPaymentTransactionStateRestored:{[[SKPaymentQueue defaultQueue] finishTransaction:tran];}break;case SKPaymentTransactionStateFailed:{[[SKPaymentQueue defaultQueue] finishTransaction:tran];[WHToast showMessage:@"购买失败" duration:1 finishHandler:^{}];}break;default:break;}}
}//交易结束
- (void)completeTransaction:(SKPaymentTransaction *)transaction{NSLog(@"交易结束");[[SKPaymentQueue defaultQueue] finishTransaction:transaction];}- (void)dealloc{[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
}-(void)verifyPurchaseWithPaymentTransaction:(NSNumber*)resultState{//从沙盒中获取交易凭证并且拼接成请求体数据NSURL *receiptUrl=[[NSBundle mainBundle] appStoreReceiptURL];NSData *receiptData=[NSData dataWithContentsOfURL:receiptUrl];
}
四.注意事项
1.内购必须用真机测试
2.测试时必须退出App Store自己的Apple ID,登录沙盒的测试Apple ID .
3.本身请求美国服务器就慢,为防止审核人员误解,我们需要在购买时加载动画。
iOS苹果内购(详细步骤)相关推荐
- iOS苹果内购详细步骤
一.设置协议等相关 1.点击协议.税务和银行业务. 点击协议.税务和银行业务.png 2.点击 Request Contracts 下面的 Request,一直点击直到主协议界面. Request.p ...
- iOS 苹果内购详细步骤
一.设置协议等相关 1.点击协议.税务和银行业务. 2.点击 Request Contracts 下面的 Request,一直点击直到主协议界面. 主协议界面 Contact info :联系人信息 ...
- iOS_苹果内购详细步骤
iOS苹果内购详细步骤 iOS开发支付的两种方式 1 Apple Pay + 调取外部支付,例如支付宝.微信.银联等 2 苹果内购IAP(In-App Purchase) 1 IAP规则详解 1.1 ...
- ios 内购正式环境_iOS苹果内购(详细步骤)
#### 一.设置付费协议 1.进入开发者平台,点击如下图所示: 设置 2.查看付费同意条款 1. 设置付费协议 添加这3个信息 4.添加银行账户 5.选择报税表 默认美国 6.根据报税表填写报税情况 ...
- uni app ios 苹果内购
app ios 苹果内购 的步骤 1,准备工作先要uniapp 开发ios 内购需要准备的沙盒 测试账号,在苹果手机登录沙盒账号 也就是把自己的Apple ID退出登录沙盒账号,manifest.js ...
- java(jfinal) 接入ios苹果内购(连续包月订阅),服务端将二次验证。
大致流程: 1.ios端进行支付,然后收到苹果的一串数据(也叫收据),然后ios端将其转码为BASE64编码的字符串. 2.ios端请求服务端接口,将数据传给服务端,服务端拿到数据后,通过一系列处理后 ...
- iOS苹果内购流程(Apple Pay)
好文:https://github.com/lintide/ApplePayDemo 苹果内购流程 字数631 阅读133 评论1 喜欢6 1.登录开发者中心[开发者中心链接](https://dev ...
- iOS 苹果内购 In-App Purchase 踩过的坑
项目里面要接苹果支付,结果我研究了一个小时的apple pay,结果经理说是苹果内购,当时就感觉被耍了!好了,那就说说In-App Purchase这个吧,前面所有的准备工作经理做完了,我只是码代码, ...
- iOS IAP应用内购详细步骤和问题总结指南
最近公司在做APP内购会员功能 遇到了很多问题 总结记录一下 首先一定要区分Apple pay 和IAP内购的区别 可以先去看一下官方文档地址 有每个步骤的详细解释 本篇文章分为:1. 内购支付流程: ...
- IOS,苹果内购和添加广告
内购--应用内购买 通过苹果应用程序商店有三种主要赚钱的方式: 直接收费(与国内大部分用户的消费习惯相悖) 广告(降低用户体验 应用程序名称带Lite可以添加广告) O2O -> Online推 ...
最新文章
- Linux下不使用qt自带sleep,Linux下Qt多线程编程
- 腾讯全球数字生态大会进入倒计时,原生技术专场开放云报名
- 红帽linux iso镜像,红帽 Red Hat Linux相关产品iso镜像下载
- 给微软的依赖注入框架写一些扩展方法
- 工控蜜罐Conpot部署和入门及高级演变
- liunx 加入域控_[整理篇]linux加入windows域之完美方案
- Windows下编译sqlite3
- 知识图谱编辑器(KG-Editor)
- Go语言实战抽奖系统
- 智能家居APP设计规格
- aspectjweaver和aspectjrt的作用?(作用、说明、案例)
- 散列表的开放定址法以及再散列法(C语言)
- 【Hash篇】什么是哈希值?
- 分位数回归-Quantile regression
- 固件:BIOS和UEFI
- PWM电流源型逆变器
- 【Python】Python生成随机的姓名
- 爬虫遇到验证码必须要知道的解决办法(干货)
- 【阅读笔记】联邦学习实战——联邦学习攻防实战
- python randint什么分布_python随机数分布random均匀分布实例
热门文章
- Java操作Excel表读取的数字变成科学计数法
- 特征工程之特征选择(4)----嵌入法(Embed)
- 计算机播放音乐自录,怎么录制电脑上正在播放的视频音频
- zigbee模块和433无线模块的区别
- 3 步理清 Python 数据分析关键点,新手必看
- golang正则匹配中文字符,查询中文字符会panic退出的问题
- 表格里加横线一分为二_我告诉你excel表格分割线一分为二
- 【tcp】网络连接中的长连接和短连接是什么意思?
- 数据分析常用图表常用场景
- Python 读取5张Excel的Sheet自动生成3张Sheet分析结果(减轻同事的工作量,让原本大约2个小时的工作量缩减到1分钟内)