文档章节

iOS 内购 大致步骤

山里来的
 山里来的
发布于 2018/09/20 09:42
字数 437
阅读 48
收藏 0
  1. 你的苹果开发者账号需要完善银行税务等资料。不完成后面有大坑!

完善开发者账号资料

  1. 需要创建内购项目

内购项目

  1. 核心代码(伪代码)

导入头文件

#import<StoreKit/StoreKit.h>

//开始充值请求 rechargeid是自己设置产品id

-(void)startRechargeWithRechargeId:(NSString *)rechargeId {
    SKProductsRequest *queryRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:@[rechargeId]]];
    queryRequest.delegate = self;
    [queryRequest start];
	}```
//充值查询回调

```-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
	NSArray * recharges = response.products;
    	if(recharges.count == 0){
     	// 充值查询失败
        	return;
    	}
    SKProduct *sp = recharges[0];
    SKPayment *payment = [SKPayment paymentWithProduct:sp];
    [[SKPaymentQueue defaultQueue] addPayment:payment];
	}
	#pragma mark - 充值查询请求不成功
	-(void)request:(SKRequest *)request didFailWithError:(NSError *)error {
    if(error) {
        NSLog(@"失败原因>>>%@",error);
        [self dismissHUD];
    }
	}
	//反馈信息
	- (void)requestDidFinish:(SKRequest *)request {
    NSLog(@"充值信息>>>%@",request);
	}

//完成交易事务

-(void)completeTransaction:(SKPaymentTransaction *)transaction {
    //验证购买凭证
    [self verifyPruchaseWithRechargeId:transaction.payment.productIdentifier];
    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
	}
  1. 找后台验证凭据,凭据格式要和后台协商好(换个后台协商凭据格式就要搞一天)
-(void)verifyPruchaseWithRechargeId:(NSString *)rechargeId {
	if(!rechargeId || rechargeId.length == 0){
		//验证充值失败!(获取充值ID失败,请联系客服)
        	return;
    	}
    
    //获取验证凭据
    NSData *receiptData = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]];
    if(!receiptData || receiptData.length == 0){
         [self showImplyInfo:@"验证充值失败!(获取充值凭证失败,请联系客服)" isActive:NO];
        return;
    }

	// 下面凭证转化取一种就行,看后台习惯哪种
	// 凭证可以转为base64
        receiptHex  = [receiptData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];


	//或者凭证转换为hex 
        receiptHex = [self hexFromData:receiptData];

	}

转化方法

-(NSString *)hexFromData:(NSData *)data {
    if(!data) return nil;
    NSMutableString *hex = [NSMutableString string];
    char *chars = (char *)data.bytes;
    for(NSUInteger i = 0; i < data.length; i++) {
        [hex appendFormat:@"%0.2hhx",chars[i]];
    }
    return hex;
	}
	

© 著作权归作者所有

山里来的
粉丝 8
博文 106
码字总数 21112
作品 0
长沙
私信 提问
iOS炫酷动画图案、多种选择器、网络测速、滑动卡片效果等源码

iOS精选源码 对网络进行测速(http://www.code4app.com/thread-31311-1-1.html) 自实现大标题,配合原生骨架屏demo(http://www.code4app.com/thread-31316-1-1.html) 简单方便的pickerVIew记录...

Android爱开源
2018/11/08
90
0
迈绝伦团队工作汇总

项目负责人:余志恒 up_java后台:无 mz_java后台:论坛全部功能完成 bwk后台:无 项目负责人:季景胜 up_Android:无 upzg_Android:无 mzqk_Android:环信聊天功能完成 bwk_Android:无 项...

风化的骆驼
2017/01/11
2
0
iOS 学习资料整理

视频教程(英文) Developing iOS 7 Apps for iPhone and iPad 斯坦福开放教程之一, 课程主要讲解了一些 iOS 开发工具和 API 以及 iOS SDK 的使用, 属于 iOS 基础视频 iPad and iPhone Applic...

拉偶有所依
2015/01/19
2.5K
5
疯狂ios讲义之使用CoreLocation定位(1)

9.1 iOS的定位支持 iOS设备支持的定位方式有多种,最早期的iPhone只支持通过运营商的基站信号进行定位,后来iOS系统开始引入WiFi支持,从而允许iOS设备通过周围的WiFi信号进行定位。 从iPhon...

博文视点
2014/04/02
1K
1
iOS开发,我的2018进阶之路总结!

4G改变了生活,抓住机会的人已经在这个社会有了立足之地,马上迎来5G的时代,你做好准备了吗! 对于即将迎来的5G时代,无疑会是音视频的又一个高潮!那么作为程序员的我们,应该怎么样去迎接...

_小迷糊
01/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux 磁盘不足异常

linux 报 No space left on device 异常 ,则是磁盘不足 ,导致异常 运行 df -h 命令查询磁盘使用率,如果有100%,则查找目录大日志文件删除 1.磁盘不足导致系统应用写入文件失败,如系统日志...

zaolonglei
37分钟前
3
0
即学即用的 30 段 Python 实用代码

☞ 分享:最全最新的Python学习大礼包 ☜ 点击查看 编译:Pita & AI开发者,作者:Fatos Morina Python是目前最流行的语言之一,它在数据科学、机器学习、web开发、脚本编写、自动化方面被许...

Object_Man
37分钟前
4
0
The server time zone value 'EDT' is unrecognized or represents more than one time zone.

2019-10-14 18:07:43.714 ERROR 74363 --- [Druid-ConnectionPool-Create-1855026648] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql://10.30......

yizhichao
50分钟前
8
0
html加载顺序以及影响页面二次渲染额的因素

本文转载于:专业的前端网站➱html加载顺序以及影响页面二次渲染额的因素 浏览器请求发往服务器以后,返回HTML页面,页面内容开始渲染,具体的执行顺序为: 1. 浏览器开始载入html代码,发现<...

前端老手
53分钟前
9
0
BeginnersBook JSP、JSTL、Servlet 教程

来源:ApacheCN BeginnersBook 翻译项目 译者:飞龙 协议:CC BY-NC-SA 4.0 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并...

ApacheCN_飞龙
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部