iOS内购
来源:互联网 发布:固定收益 经典知乎 编辑:程序博客网 时间:2024/04/20 11:34
此处只说代码思路
1.调用后台接口创建订单传入productid、userid等,create order,返回orderid。
2.客户端通过productid去请求苹果服务器去查询此产品的详细信息,
NSSet *set=[NSSet setWithObject:self.productId];
SKProductsRequest *request= [[SKProductsRequest alloc]initWithProductIdentifiers:set];
request.delegate=self;
[request start];
产品详细信息的回调方法,
-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
SKMutablePayment *payment=nil;
如果能查到此商品,将商品封装到SKMutablePayment中,添加监听者
if (response.products.count>0) {
payment= [SKMutablePayment paymentWithProduct:response.products[0]];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
}else{
productid错误
return;
}
if (![SKPaymentQueue canMakePayments]) {
DLog(@"设备不支持购买.");
return;
}
开始发起内购请求
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
3.实现监听方法,去监听支付进展情况
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchasing:
continue;
case SKPaymentTransactionStatePurchased:
[self finishTransaction:transaction wasSuccessful:YES];
break;
case SKPaymentTransactionStateFailed:
[self finishTransaction:transaction wasSuccessful:NO];
break;
case SKPaymentTransactionStateRestored:
[self finishTransaction:transaction wasSuccessful:NO];
break;
default:
break;
}
}
}
4.支付完成以后将transaction传给服务器,服务器请求苹果进行验证(为了安全起见最好验证,客户端验证不安全)
客户端拿到服务端返回的code值,支付完成。支付完成后要注销[[SKPaymentQueue defaultQueue] finishTransaction:transaction]
否则苹果不会认为此次支付完成。(验证成功与否,咱们都注销交易,否则会出现虚假凭证信息一直验证不通过..每次进程序都得输入苹果账号的情况
)
注:这是大概思路,内购坑多,后续填充。- ios iap 内购
- IOS内购代码
- ios 内购开发
- iOS 内购 分享
- iOS 内购
- iOS内购实现
- ios 内购资料
- iOS 内购 开发
- iOS内购
- iOS内购
- 关于iOS内购
- iOS 集成内购
- iOS内购
- iOS 内购
- Unity iOS内购
- iOS 内购
- ios 内购流程
- iOS内购
- 机器学习入门——多变量线性回归
- 【PAT】1075. PAT Judge
- 微服务实战(一):微服务架构的优势与不足
- spring boot 学习(四)Druid连接池的使用配置
- 5-1
- iOS内购
- Access denied for user ''@'localhost' to database 'mysql'
- 0122
- FFmpeg中AVPacket处理函数av_free_packet()和av_packet_free()的区别以及用法
- struts2路径问题
- JedisPoolConfig中方法解读
- Python绝技笔记--------python操作注册表来获取之前连接的网络信息
- 八皇后
- 关于Core Animation