1、首先登录苹果账号,在直播平台源码搭建完成好后,进入后台管理中心添加商品,选择功能----App内购买项目------添加商品类型、商品的ID、以及说明信息。
直播平台开发时iOS 开发内购功能,直播平台源码搭建_直播源码
2、在直播平台源码搭建后台创建沙盒测试账号:沙盒账号可以随便填写符合邮箱格式即可。
直播平台开发时iOS 开发内购功能,直播平台源码搭建_直播源码_02
3、在直播平台源码搭建后台设置充值规则、所填的苹果项目ID和上面苹果账号里面商品的ID对应、设置商品价格信息等规则。
直播平台开发时iOS 开发内购功能,直播平台源码搭建_直播源码_03
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;//订单
            //苹果支付ID
            NSString *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、以及说明信息。
声明:本篇文章为小编原创文章,转载请注明出处及作者。