直播平台开发时iOS 开发内购功能,直播平台源码搭建
1、首先登录苹果账号,在直播平台源码搭建完成好后,进入后台管理中心添加商品,选择功能----App内购买项目------添加商品类型、商品的ID、以及说明信息。
2、在直播平台源码搭建后台创建沙盒测试账号:沙盒账号可以随便填写符合邮箱格式即可。
3、在直播平台源码搭建后台设置充值规则、所填的苹果项目ID和上面苹果账号里面商品的ID对应、设置商品价格信息等规则。
4、当用户点击购买时内购开始,首先接口在直播平台源码中请求订单信息、用苹果支付ID取获取商品信息,向苹果发起订单请求。
//内购开始
-(void)applePay:(NSDictionary *)dic{[self.delegate applePayShowHUD];NSDictionary *dics = @{@"uid":[Config getOwnID],@"coin":[dic valueForKey:@"coin"],@"money":[dic valueForKey:@"money_ios"],@"changeid":dic[@"id"]};[YBToolClass postNetworkWithUrl:@"Charge.getIosOrder" andParameter:dics success:^(int code, id _Nonnull info, NSString * _Nonnull msg) {if (code == 0) {NSString *infos = [[info firstObject] valueForKey:@"orderid"];self.OrderNo = infos;//订单//苹果支付IDNSString *setStr = [NSString stringWithFormat:@"%@",[dic valueForKey:@"product_id"]];NSSet *set = [[NSSet alloc] initWithObjects:setStr, nil];self.request = [[SKProductsRequest alloc] initWithProductIdentifiers:set];self.request.delegate = self;[self.request start]; }else{[self.delegate applePayHUD];[MBProgressHUD showError:msg];}} fail:^{ }];
}
5、获取到产品信息、加入到支付队列
(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{[self.delegate applePayHUD];self.products = response.products;self.request = nil;for (SKProduct *product in response.products) {
NSLog(@"已获取到产品信
息 %@,%@,%@",product.localizedTitle,product.localizedDescription,product.price);self.product = product;}if (!self.product) {[self showAlertView:YZMsg(@"无法获取商品信息")];return;}//3.获取到产品信息,加入支付队列SKPayment *payment = [SKPayment paymentWithProduct:self.product];[[SKPaymentQueue defaultQueue] addTransactionObserver:self];[[SKPaymentQueue defaultQueue] addPayment:payment];
}
6、根据苹果支付API回调获取支付结果
- (void)recordTransaction:(SKPaymentTransaction *)transaction {// Optional: Record the transaction on the server side...
//记录当前购买成功的商品// NSLog(@"recordTransaction");
}
- (void)provideContent:(NSString *)productIdentifier {// NSLog(@"provideContent %@", productIdentifier);//针对购买的商品,提供不同的服务。[_purchasedProducts addObject:productIdentifier];
}
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{for (SKPaymentTransaction *transaction in transactions){switch (transaction.transactionState){case SKPaymentTransactionStatePurchased:[self completeTransaction:transaction];break;case SKPaymentTransactionStateFailed:[self failedTransaction:transaction];break;case SKPaymentTransactionStateRestored:[self restoreTransaction:transaction];default:break;}}
}
- (void)completeTransaction:(SKPaymentTransaction *)transaction {//NSLog(@"completeTransaction...");[self recordTransaction: transaction];[self provideContent: transaction.payment.productIdentifier];[self verifyReceipt:transaction];[[SKPaymentQueue defaultQueue] finishTransaction: transaction];}
7、服务器验证购买凭据、提交验证请求,并获得官方验证的结果,验证支付成功,更新界面增加钻石,到此整个苹果支付内购完成。
#pragma mark 服务器验证购买凭据
- (void) verifyReceipt:(SKPaymentTransaction *)transaction
{//苹果:域名+/Appapi/Pay/notify_ios[self.delegate applePayHUD];NSURL *url = [NSURL URLWithString:[h5url stringByAppendingFormat:@"/Appapi/Pay/notify_ios"]];NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0f];request.HTTPMethod = @"POST";NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[[NSBundle mainBundle] appStoreReceiptURL]];NSData *transData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:nil error:nil];NSString *encodeStr = [transData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];NSString *payload = [NSString stringWithFormat:@"{\"receipt-data\" : \"%@\",\"sandbox\":%@,\"out_trade_no\" : \"%@\"}", encodeStr,@"0",self.OrderNo];//把bodyString转换为NSData数据NSData *bodyData = [payload dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];//把bodyString转换为NSData数据[request setHTTPBody:bodyData];// 提交验证请求,并获得官方的验证JSON结果NSData *result = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];if (result == nil) {// [MBProgressHUD showError:@"验证失败"];}else{NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:result options:NSJSONReadingAllowFragments error:nil];if(dict==nil){[MBProgressHUD showError:YZMsg(@"请查看网站是否开启了调试模式")];return;}if ([[dict valueForKey:@"status"] isEqual:@"success"]) {//比对字典中以下信息基本上可以保证数据安全[MBProgressHUD showError:YZMsg(@"充值成功")];[self.delegate applePaySuccess];}else{[MBProgressHUD showError:[dict valueForKey:@"info"]];}}
}
以上就是直播平台开发时iOS 开发内购功能,直播平台源码搭建过程中,在直播平台源码搭建完成好后,进入后台管理中心添加商品,选择功能----App内购买项目------添加商品类型、商品的ID、以及说明信息。
声明:本篇文章为小编原创文章,转载请注明出处及作者。
直播平台开发时iOS 开发内购功能,直播平台源码搭建相关推荐
- 2021最新闪拍竞拍网源码【内有小程序及源码搭建教程】
2021最新闪拍竞拍网源码[内有小程序及源码搭建教程] 功能比较多,源码完整, 后台测试地址 http://ipai.ym929.cn/web/ admin admin 前段测试地址 http://i ...
- 短信平台专业版软件客户端功能详解源码搭建|移讯云短信系统
国际短信平台专业版软件客户端功能详解|移讯云短信系统 首页显示 剩余条数 充值总数 提交总数 成功数量 失败数量 未知数量 代发数量 签名数量 最新提交 平台公告 API接口文档 短信发送 发送短信选 ...
- uni app ios 苹果内购
app ios 苹果内购 的步骤 1,准备工作先要uniapp 开发ios 内购需要准备的沙盒 测试账号,在苹果手机登录沙盒账号 也就是把自己的Apple ID退出登录沙盒账号,manifest.js ...
- ios内购功能是什么意思
一.最近公司很多的项目用到了内购,抽空整理下内购的详细内容吧. 1.先从内购的iTunesConnect里配置说起吧,我们先进入苹果的iTunesConnect链接https://itunesconn ...
- 直播平台源码搭建教程盘点直播技术中的编解码、直播协议、网络传输与简单实现
直播平台源码搭建教程盘点直播技术中的编解码.直播协议.网络传输与简单实现 Live CheatSheet | 直播技术理论基础与实践概论 音视频直播的基本流程都是采集 → 编码推流 → 网络分发 → ...
- 直播系统源码App中Android酷炫礼物动画直播平台源码搭建教程(上篇)
直播系统源码App中Android酷炫礼物动画直播平台源码搭建教程(上篇) 在当下移动直播火爆的年代,如果你曾经使用过移动端直播应用,相信会被里面那令人惊叹的礼物动画效果迷住,比如像下面这样的效果. ...
- 扫盲!直播app源码搭建直播平台为什么要用到ShareSDK
接触了很多搭建直播平台的客户,在跟客户对接直播平台搭建部署资料时,很多客户都对ShareSDK搞不明白,不知道具体是做什么用的,即使知道有这样一个服务,但对于ShareSDK在直播app源码搭建部署时 ...
- DSP:6678开发板NDK网口通信完整实现(附源码)
如果出现图片打不开,或是显示异常,请点击下方链接阅读原文!!! DSP:6678开发板NDK网口通信完整实现(附源码) - 子木的文章 - 知乎 https://zhuanlan.zhihu.com/ ...
- 开发板ARM加FPGA架构运动控制卡 运动控制器 架构源码 原理图 资料包含此运动控制卡原理图,PCB图
开发板ARM加FPGA架构运动控制卡 运动控制器 架构源码 原理图 资料包含此运动控制卡原理图,PCB图, FPGA 源码,ARM去掉算法后的框架源码. 注意实物图是旧版的,出售的图纸是新版本的,元器 ...
最新文章
- .NET使用OpenSSL生成的pem密钥文件[1024位]
- linux 查看 文档 不显示注释 命令
- mapreduce介绍
- 德国艺术家用99部手机成功在Google地图上制造交通阻塞
- 这个口罩小朋友戴上就不肯脱!真相原来是这样!
- 设置qt的QChart曲线背景色透明
- Python工作笔记002---PYTHON之DEF函数
- win10系统远程ubuntu(linux)桌面
- javabean封装mysql
- ELK 日志管理系统,初次尝试记录
- php获取手机品牌,9 大国产手机品牌相机水印大比拼,哪款才是你的最爱?
- 计算机excel无法打开,双击Excel软件无法打开表格文件怎么办?
- 进程调度时间片轮转c语言,时间片轮转调度算法的C语言模拟实现
- docker 安装 禅道系统
- Atitit 常用街机系统and 模拟器总结 snk neo geo cps mame sfc smc
- 数据传输速率与带宽之间的关系
- 计算机绘图作业西南交大,西南交大计算机绘图A 离线作业.doc
- icon图标 地址栏 收藏夹显示 代码
- sql server中的怎么把数值型转换为字符串
- linux dd 备份uboot,刷机前如何备份uboot、分区、编程器固件?路由器刷机备份命令使用方法...
热门文章
- 解决maven 引用JDK内部类编译错误 程序包:com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler不存在...
- mysql数据库出现缓慢_MySQL查询缓慢的N种原因,以及N+1种解决方法
- Jsp之一 WEB应用程序概述
- glut glfw glad SOIL glm freetype等配置
- ZJUT online OJ c++通关模拟题(problem1335-problem1516) 题解
- 【OpenCV入门教程之三】 图像的载入,显示和输出 一站式完全解析
- the mid-autumn festival
- 【数据可视化】bar函数绘制简单柱状图
- 传奇单机架设教程 小白也能开传奇
- 2022.1.25复盘