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;//订单
//苹果支付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、以及说明信息。
声明:本篇文章为小编原创文章,转载请注明出处及作者。