ios内购

iOS 内购

◇◆丶佛笑我妖孽 提交于 2020-12-29 07:56:53
从开发iOS到现在,内购app也做过两个了,现在好好记录下这个流程。 首先需要在所属的app下创建物品,这个流程网上很多也不难。这边就详细说明了,可参考下面网址。 http://blog.csdn.net/shenjie12345678/article/details/40978977/ 我们定义好一个或多个product 后 每个product id对应着一个product。 我们拿到一个或多个product id,数据处理后对appstore 发起购物请求,等待appstore处理后的响应(之间很多操作,都是appStore和用户之间,客户端无法干预), 客户端对购物成功的回执单进行校验。 这个流程基本就是这样,如上图所示。 理清整个流程后,我们对内购就非常清晰了,要注意的就是细节了,对各种异常情况的处理。各种case 见下列枚举,基本和app的sdk保持一致 typedef enum : NSUInteger { EPaymentTransactionStateNoPaymentPermission, //没有Payment权限 EPaymentTransactionStateAddPaymentFailed, //addPayment失败 EPaymentTransactionStatePurchasing,//正在购买

iOS App 内购 Demo

你。 提交于 2019-12-04 08:01:49
/*注意事项: 1.沙盒环境测试appStore内购流程的时候,请使用没越狱的设备。 2.请务必使用真机来测试,一切以真机为准。 3.项目的Bundle identifier需要与您申请AppID时填写的bundleID一致,不然会无法请求到商品信息。 4.如果是你自己的设备上已经绑定了自己的AppleID账号请先注销掉,否则你哭爹喊娘都不知道是怎么回事。 5.订单校验 苹果审核app时,仍然在沙盒环境下测试,所以需要先进行正式环境验证,如果发现是沙盒环境则转到沙盒验证。 识别沙盒环境订单方法: 1.根据字段 environment = sandbox。 2.根据验证接口返回的状态码,如果status=21007,则表示当前为沙盒环境。 苹果反馈的状态码: 21000App Store无法读取你提供的JSON数据 21002 订单数据不符合格式 21003 订单无法被验证 21004 你提供的共享密钥和账户的共享密钥不一致 21005 订单服务器当前不可用 21006 订单是有效的,但订阅服务已经过期。当收到这个信息时,解码后的收据信息也包含在返回内容中 21007 订单信息是测试用(sandbox),但却被发送到产品环境中验证 21008 订单信息是产品环境中使用,但却被发送到测试环境中验证 */ 开发内购功能,首先需要一个开发者账号,在 App store connect ->

ios 内购 恢复内购

陌路散爱 提交于 2019-11-28 19:52:33
申请内购部分略。。。。。。。 代码部分 1 //准备工作 [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; <SKPaymentTransactionObserver,SKProductsRequestDelegate> //遵循代理 打开支付开关 如下图: 2 //商品查询 msg 是商品编号 if ([SKPaymentQueue canMakePayments]) { NSLog(@"用户允许内购"); NSArray *product = [[NSArray alloc] initWithObjects:msg,nil]; NSSet *nsset = [NSSet setWithArray:product]; //初始化请求 SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:nsset]; request.delegate = self; //开始请求 [request start]; } else { NSLog(@"用户不允许内购"); } 3//请求到商品信息 然后在里面验证 在发起支付 #pragma mark - SKProductsRequestDelegate -

iOS 内购相关

徘徊边缘 提交于 2019-11-28 00:51:06
iOS 内购相关 下面总结一下过往订阅和内购的项目的代码方面的实现细节和注意事项,特别是掉单方面的处理。 后台的协议、商品ID、银行卡、内购类型、沙盒账号测试人员都由运营或者产品在苹果后台中申请处理。 这里主要讲内购的代码,内购的代码主要分为两大部分:商品的查询、商品的购买。 1、首先先创建一个单例,创建单例的第一时间同时要加上对苹果订单状态变化的监听[[SKPaymentQueue defaultQueue] addTransactionObserver:self];这样所有的历史订单都会回调过来,包括已经订阅的、订阅中的、已经内购的、正在内购中的订单,回调在这个方法- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions,苹果会回调历史的订单过来,初始化之后添加监听会有一次机会处理掉单的问题。 + (instancetype)shareManager { static PAIAPPurchaseManager *obj = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ obj = [[PAIAPPurchaseManager