IAPHelper 1.1

IAPHelper 1.1

测试已测试
语言语言 Obj-CObjective C
许可协议 MIT
发布上次发布2016年10月

Saturngod 维护。



  • 作者:
  • saturngod

IAPHelper是为Apple内购提供帮助的工具。它使用 ARC 和 blocks 以便易于使用。适用于新闻订阅。

要求

  • StoreKit
  • iOS 5或更高版本
  • ARC

如何使用

  • IAPHelper文件夹添加到您的项目中。
  • 添加Storekit框架

Cocoapod

pod 'IAPHelper'

初始化

if(![IAPShare sharedHelper].iap) {

    NSSet* dataSet = [[NSSet alloc] initWithObjects:@"com.comquas.iap.test", nil];

    [IAPShare sharedHelper].iap = [[IAPHelper alloc] initWithProductIdentifiers:dataSet];

}

生产模式开关

[IAPShare sharedHelper].iap.production = NO;

请求产品

[[IAPShare sharedHelper].iap requestProductsWithCompletion:^(SKProductsRequest* request,SKProductsResponse* response)
     {

     }];

获取地区价格和标题

SKProduct* product =[[IAPShare sharedHelper].iap.products objectAtIndex:0];

NSLog(@"Price: %@",[[IAPShare sharedHelper].iap getLocalePrice:product]);
NSLog(@"Title: %@",product.localizedTitle);

购买

[[IAPShare sharedHelper].iap buyProduct:product
                                    onCompletion:^(SKPaymentTransaction* trans){
}];

使用共享密钥检查收据

对于检查收据,建议仅在服务器端使用。不建议直接从客户端检查。但是,有时出于某些原因我们只想在客户端使用。使用风险自担。

请查看Apple指南

[[IAPShare sharedHelper].iap checkReceipt:[NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]] AndSharedSecret:@"your sharesecret" onCompletion:^(NSString *response, NSError *error) {

}];

无需共享密钥检查收据

对于检查收据,建议仅在服务器端使用。不建议直接从客户端检查。但是,有时出于某些原因我们只想在客户端使用。使用风险自担。

请查看Apple指南

[[IAPShare sharedHelper].iap checkReceipt:[NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]] onCompletion:^(NSString *response, NSError *error) {

}];

保存产品标识符

[[IAPShare sharedHelper].iap provideContentWithTransaction:transaction];

检查以前的购买

if([[IAPShare sharedHelper].iap isPurchasedProductsIdentifier:@"com.comquas.iap.test"]
    {
        // require saving product identifier first
    }

购买产品

NSLog(@"%@",[IAPShare sharedHelper].iap.purchasedProducts);

清除购买

[[IAPShare sharedHelper].iap clearSavedPurchasedProducts];
[[IAPShare sharedHelper].iap clearSavedPurchasedProductByID:@"com.myproduct.id"];

恢复购买

[[IAPShare sharedHelper].iap restoreProductsWithCompletion:^(SKPaymentQueue *payment, NSError *error) {

        //check with SKPaymentQueue

        // number of restore count
        int numberOfTransactions = payment.transactions.count;

        for (SKPaymentTransaction *transaction in payment.transactions)
        {
            NSString *purchased = transaction.payment.productIdentifier;
            if([purchased isEqualToString:@"com.myproductType.product"])
            {
                //enable the prodcut here
            }
        }

}];

示例

if(![IAPShare sharedHelper].iap) {
      NSSet* dataSet = [[NSSet alloc] initWithObjects:@"com.comquas.iap.test", nil];

      [IAPShare sharedHelper].iap = [[IAPHelper alloc] initWithProductIdentifiers:dataSet];
  }

[IAPShare sharedHelper].iap.production = NO;

  [[IAPShare sharedHelper].iap requestProductsWithCompletion:^(SKProductsRequest* request,SKProductsResponse* response)
   {
       if(response > 0 ) {
       SKProduct* product =[[IAPShare sharedHelper].iap.products objectAtIndex:0];

        NSLog(@"Price: %@",[[IAPShare sharedHelper].iap getLocalePrice:product]);
        NSLog(@"Title: %@",product.localizedTitle);

        [[IAPShare sharedHelper].iap buyProduct:product
                                  onCompletion:^(SKPaymentTransaction* trans){

              if(trans.error)
              {
                  NSLog(@"Fail %@",[trans.error localizedDescription]);
              }
              else if(trans.transactionState == SKPaymentTransactionStatePurchased) {

                  [[IAPShare sharedHelper].iap checkReceipt:[NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]] AndSharedSecret:@"your sharesecret" onCompletion:^(NSString *response, NSError *error) {

                      //Convert JSON String to NSDictionary
                      NSDictionary* rec = [IAPShare toJSON:response];

                      if([rec[@"status"] integerValue]==0)
                      {

                        [[IAPShare sharedHelper].iap provideContentWithTransaction:trans];
                          NSLog(@"SUCCESS %@",response);
                          NSLog(@"Pruchases %@",[IAPShare sharedHelper].iap.purchasedProducts);
                      }
                      else {
                          NSLog(@"Fail");
                      }
                  }];
              }
              else if(trans.transactionState == SKPaymentTransactionStateFailed) {
                   NSLog(@"Fail");
              }
                                  }];//end of buy product
       }
}];