java内购_iOS 内购 大致步骤

本文介绍了iOS内购的实现过程,包括创建内购项目,使用SKProductsRequest进行充值请求,处理充值回调,验证购买凭证,并与Java后台进行交互。在实现过程中,强调了苹果开发者账号资料的完善以及与后台验证凭据格式的重要性。
摘要由CSDN通过智能技术生成

你的苹果开发者账号需要完善银行税务等资料。不完成后面有大坑!

fbddc45e6c1b814892ed18e1c39b4700.png

需要创建内购项目

36c28bb61a9fa2dd95ff02f40a3775f0.png

核心代码(伪代码)

导入头文件

#import

//开始充值请求 rechargeid是自己设置产品id

-(void)startRechargeWithRechargeId:(NSString *)rechargeId {

SKProductsRequest *queryRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:@[rechargeId]]];

queryRequest.delegate = self;

[queryRequest start];

}```

//充值查询回调

```-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {

NSArray * recharges = response.products;

if(recharges.count == 0){

// 充值查询失败

return;

}

SKProduct *sp = recharges[0];

SKPayment *payment = [SKPayment paymentWithProduct:sp];

[[SKPaymentQueue defaultQueue] addPayment:payment];

}

#pragma mark - 充值查询请求不成功

-(void)request:(SKRequest *)request didFailWithError:(NSError *)error {

if(error) {

NSLog(@"失败原因>>>%@",error);

[self dismissHUD];

}

}

//反馈信息

- (void)requestDidFinish:(SKRequest *)request {

NSLog(@"充值信息>>>%@",request);

}

//完成交易事务

-(void)completeTransaction:(SKPaymentTransaction *)transaction {

//验证购买凭证

[self verifyPruchaseWithRechargeId:transaction.payment.productIdentifier];

[[SKPaymentQueue defaultQueue] finishTransaction:transaction];

}

找后台验证凭据,凭据格式要和后台协商好(换个后台协商凭据格式就要搞一天)

-(void)verifyPruchaseWithRechargeId:(NSString *)rechargeId {

if(!rechargeId || rechargeId.length == 0){

//验证充值失败!(获取充值ID失败,请联系客服)

return;

}

//获取验证凭据

NSData *receiptData = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]];

if(!receiptData || receiptData.length == 0){

[self showImplyInfo:@"验证充值失败!(获取充值凭证失败,请联系客服)" isActive:NO];

return;

}

// 下面凭证转化取一种就行,看后台习惯哪种

// 凭证可以转为base64

receiptHex = [receiptData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];

//或者凭证转换为hex

receiptHex = [self hexFromData:receiptData];

}

转化方法

-(NSString *)hexFromData:(NSData *)data {

if(!data) return nil;

NSMutableString *hex = [NSMutableString string];

char *chars = (char *)data.bytes;

for(NSUInteger i = 0; i < data.length; i++) {

[hex appendFormat:@"%0.2hhx",chars[i]];

}

return hex;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值