123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- //
- // YOUPAILCIAPHelper.m
- // LiveChat
- //
- // Created by 张灿 on 2018/9/28.
- // Copyright © 2018年 caicai. All rights reserved.
- //
- #import "YOUPAILCIAPHelper.h"
- @implementation YOUPAILCIAPHelper
- +(instancetype)shareInstance
- {
- static YOUPAILCIAPHelper * shareInstance = nil;
-
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
-
- shareInstance = [[super allocWithZone:NULL] init];
- });
- return shareInstance;
- }
- +(id)allocWithZone:(struct _NSZone *)zone
- {
- return [YOUPAILCIAPHelper shareInstance];
- }
- -(id)copyWithZone:(struct _NSZone *)zone
- {
- return [YOUPAILCIAPHelper shareInstance];
- }
- - (void)start{
- //设置监听
- [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
- }
- - (void)youpaifpurchase:(NSString*)goodsId{
-
- if ([SKPaymentQueue canMakePayments]){
- [self requestProduction:goodsId];
- }
-
- }
- - (void)requestProduction:(NSString*)productionID{
- LCLog(@"-------------请求对应的产品信息----------------");
- NSArray *product = [[NSArray alloc] initWithObjects:productionID, nil];
-
- NSSet *nsset = [NSSet setWithArray:product];
- SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:nsset];
- request.delegate = self;
- [request start];
- [ZCHUDHelper showWithStatus:@"支付中..."];
- }
- - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
- LCLog(@"--------------收到产品反馈消息---------------------");
- NSArray *product = response.products;
- if([product count] == 0){
- [ZCHUDHelper showTitle:@"应用商店无该产品"];
- return;
- }
-
- LCLog(@"productID:%@", response.invalidProductIdentifiers);
- LCLog(@"产品付费数量:%ld",[product count]);
-
- SKProduct *p = nil;
- for (SKProduct *pro in product) {
- LCLog(@"%@", [pro description]);
- LCLog(@"%@", [pro localizedTitle]);
- LCLog(@"%@", [pro localizedDescription]);
- LCLog(@"%@", [pro price]);
- LCLog(@"%@", [pro productIdentifier]);
- p = pro;
- }
-
- SKPayment *payment = [SKPayment paymentWithProduct:p];
-
- LCLog(@"发送购买请求");
- [[SKPaymentQueue defaultQueue] addPayment:payment];
- }
- //弹出错误信息
- - (void)request:(SKRequest *)request didFailWithError:(NSError *)error{
- LCLog(@"-------弹出错误信息----------");
- LCLog(@"%@",error);
- [ZCHUDHelper showTitle:@"支付失败"];
- }
- -(void) requestDidFinish:(SKRequest *)request
- {
- LCLog(@"----------反馈信息结束--------------");
- LCLog(@"%@",request);
- [ZCHUDHelper dismiss];
- }
- //paymentObserver
- - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transaction{
- for(SKPaymentTransaction *tran in transaction){
-
- switch (tran.transactionState) {
- case SKPaymentTransactionStatePurchasing:
-
- break;
- case SKPaymentTransactionStatePurchased:
- [self completeTransaction:tran];
-
- break;
- case SKPaymentTransactionStateRestored:
- [self completeTransaction:tran];
- break;
- case SKPaymentTransactionStateFailed:
- [self finish:tran];
- break;
- default:
-
- break;
- }
- }
- }
- - (void)completeTransaction:(SKPaymentTransaction *)transaction{
- LCLog(@"交易结束");
- // NSURL *receiptUrl=[[NSBundle mainBundle] appStoreReceiptURL];
- // NSData *receiptData=[NSData dataWithContentsOfURL:receiptUrl];
- // NSString *receiptString=[receiptData base64EncodedStringWithOptions:0];//转化为base64字符串
-
- NSString *base64Encoded = [transaction.transactionReceipt base64EncodedStringWithOptions:0];
- NSMutableDictionary *dict = [NSMutableDictionary dictionary];
- dict[@"receipt_data"] = base64Encoded;
- dict[@"channel"] = @"apple";
- //type2代表购买金币
- [LCHttpHelper requestWithURLString:WalletRecharge parameters:dict needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
- NSDictionary* dict = (NSDictionary*)responseObject;
- NSInteger code = [[dict objectForKey:@"code"] integerValue];
- if (code==0) {//成功
- [ZCHUDHelper showTitle:@"购买成功"];
- [self finish:transaction];
- if (self.purchaseBlock) {
- self.purchaseBlock();
- }
- }
- } failure:^(NSError *error) {
-
- }];
-
- }
- - (void)finish:(SKPaymentTransaction *)transaction{
- [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
- }
- @end
|