美文网首页
iOS内购代码实现

iOS内购代码实现

作者: 東玖零 | 来源:发表于2020-12-17 12:51 被阅读0次

开通付费协议后,再配置上内购商品和测试人员,我们就开始撸代码了。
github上Htain Lin Shwe大神写了一个IAPHelper这个框架,如果不放心也有时间的话可以自己看一下逻辑再实现一遍。
如何引用就直接在github上看吧,这就不多说了,直接上代码。

- (void)appleBuy {
    if (!self.viewModel.address && ![self.viewModel.data isIgnoreAddressBuy]) {
        [Common showToast:@"请选择收货地址!"];
        return;
    }
    if(![IAPShare sharedHelper].iap) {
        NSString *pid = [NSString stringWithFormat:@"%d",10000 + self.viewModel.data.dataId.intValue];
        NSSet* dataSet = [[NSSet alloc] initWithObjects:pid, nil];
        [IAPShare sharedHelper].iap = [[IAPHelper alloc] initWithProductIdentifiers:dataSet];
    }
    [IAPShare sharedHelper].iap.production = [k_user.phone isEqualToString:@"xxxx"] ? NO : YES;
    weak_self
    IAPHelper *iap = [IAPShare sharedHelper].iap;
    MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:[k_delegate window] animated:YES];
    hud.mode = MBProgressHUDModeIndeterminate;
    hud.animationType = MBProgressHUDAnimationZoomIn;
    [self setHud:hud];
    [iap requestProductsWithCompletion:^(SKProductsRequest* request,SKProductsResponse *response) {
        [weakSelf handelProductsWithCompletion:response];
    }];
}

- (void)handelProductsWithCompletion:(SKProductsResponse *)response {
    weak_self
    if([IAPShare sharedHelper].iap.products.count > 0) {
        SKProduct *product = [[IAPShare sharedHelper].iap.products objectAtIndex:0];
        DLog(@"Price: %@",[[IAPShare sharedHelper].iap getLocalePrice:product]);
        DLog(@"Title: %@",product.localizedTitle);
        [[IAPShare sharedHelper].iap buyProduct:product onCompletion:^(SKPaymentTransaction* trans) {
            if (trans.error) {
                DLog(@"trans.error %@",[trans.error localizedDescription]);
            } else if (trans.transactionState == SKPaymentTransactionStatePurchased) {
                DLog(@"SKPaymentTransactionStatePurchased");
                [[IAPShare sharedHelper].iap checkReceipt:[NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]] AndSharedSecret:@"App 专用共享密钥" onCompletion:^(NSString *response, NSError *error) {
                    //Convert JSON String to NSDictionary
                    NSDictionary* rec = [IAPShare toJSON:response];
                    if ([rec[@"status"] integerValue] == 0) {
                        [[IAPShare sharedHelper].iap provideContentWithTransaction:trans];
                        DLog(@"SUCCESS %@",response);
                        DLog(@"Pruchases %@",[IAPShare sharedHelper].iap.purchasedProducts);
                        [weakSelf paySuccess];// 走支付成功的逻辑
                    } else {
                        DLog(@"check Fail",response);
                    }
                }];
            } else if(trans.transactionState == SKPaymentTransactionStateFailed) {
                DLog(@"SKPaymentTransactionStateFailed");
            }
            dispatch_async(dispatch_get_main_queue(), ^{
                [weakSelf.hud hideAnimated:YES];
            });
        }];//end of buy product
    } else {
        dispatch_async(dispatch_get_main_queue(), ^{
            [weakSelf.hud hideAnimated:YES];
            [Common showToast:@"没有获取到商品"];
        });
    }
}

WX20201217-124705@2x.png WX20201217-124826@2x.png WX20201217-124912@2x.png

相关文章

  • iOS内购代码实现

    开通付费协议后,再配置上内购商品和测试人员,我们就开始撸代码了。github上Htain Lin Shwe大神写了...

  • iOS 苹果内购流程

    本文参考: iOS开发之内购完全笔记 iOS开发内购全套图文教程 iOS应用程序内购/内付费(一) 代码...

  • iOS-内购代码实现

    内购: --应用程序本身的增值产品,游戏装备,应用程序中增值功能同样可以内购 --三(苹果)七(开发商)开 --内...

  • iOS 内购代码

    1:配置一个明确的APPID 2:配置和相关的项目 配置内购的物品 配置测试账号 配置银行相关 3:代码实现...

  • iOS 内购经验

    最近在做iOS内购,碰到的一些问题及解决方案,希望能帮到大家 1、如果需要内购实现代码,请留下你的QQ 2、关于内...

  • iOS 内购流程

    一.先配置内购环境: 二.主要代码实现部分

  • iOS 内购最新讲解

    一.总说内购的内容 协议、税务和银行业务 信息填写 内购商品的添加 添加沙盒测试账号 内购代码的具体实现 内购的注...

  • iOS 内购最新讲解

    一.总说内购的内容 协议、税务和银行业务 信息填写 内购商品的添加 添加沙盒测试账号 内购代码的具体实现 内购的注...

  • iOS 内购充值代码

  • iOS内购代码教程

    继上一篇iOS内购图文教程,下面是代码教程创建一个单例类.h文件 .m文件 在礼物页面,调起单例,添加内购代理方法...

网友评论

      本文标题:iOS内购代码实现

      本文链接:https://www.haomeiwen.com/subject/caxzgktx.html