广东网站建设电话咨询,结构优化,如何建设网站哪个济南兴田德润简介,付费链接生成平台2015年最全的内购图文教程#xff0c;首先是填各种资料#xff0c;最后是代码#xff0c;废话不多说#xff0c;直接上图 第一部分协议 第一步.png第二步.jpg第三步.jpg第四步.png第五步.png第六步.png第七步.jpg第八步.jpg第九步.jpg第十步.pngCNAPS CODE 查询地址https:/…2015年最全的内购图文教程首先是填各种资料最后是代码废话不多说直接上图 第一部分协议 第一步.png 第二步.jpg 第三步.jpg 第四步.png 第五步.png 第六步.png 第七步.jpg 第八步.jpg 第九步.jpg 第十步.png CNAPS CODE 查询地址https://e.czbank.com/CORPORBANK/query_unionBank_index.jsp 十一步.jpg 十二步.jpg 十三步.png 十四步.png 十五步.jpg 十七步.jpg 十八步.jpg 十九步.png 二十步.png 第二部分创建内购项目 1.png 2.png 3.png 4.png 5.png 6.png 7.png 第三部分贴加内购项目测试账号 创建测试账号.png 沙盒测试员.png 账号信息.png 第四部分主要实现代码 首先导入StoreKit.framework库 .h文件 #import StoreKit/StoreKit.henum{
IAP0p2020,
IAP1p100,
IAP4p600,
IAP9p1000,
IAP24p6000,
}buyCoinsTag;//代理 interface RechargeVC : UIViewController SKPaymentTransactionObserver,SKProductsRequestDelegate { int buyType; } - (void) requestProUpgradeProductData; -(void)RequestProductData; -(void)buy:(int)type; - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions; -(void) PurchasedTransaction: (SKPaymentTransaction *)transaction; - (void) completeTransaction: (SKPaymentTransaction *)transaction; - (void) failedTransaction: (SKPaymentTransaction *)transaction; -(void) paymentQueueRestoreCompletedTransactionsFinished: (SKPaymentTransaction *)transaction; -(void) paymentQueue:(SKPaymentQueue *) paymentQueue restoreCompletedTransactionsFailedWithError:(NSError *)error; - (void) restoreTransaction: (SKPaymentTransaction *)transaction; -(void)provideContent:(NSString *)product; -(void)recordTransaction:(NSString *)product; end .m文件 #import RechargeVC.h//在内购项目中创的商品单号
#define ProductID_IAP0p20 Nada.JPYF01//20 #define ProductID_IAP1p100 Nada.JPYF02 //100 #define ProductID_IAP4p600 Nada.JPYF03 //600 #define ProductID_IAP9p1000 Nada.JPYF04 //1000 #define ProductID_IAP24p6000 Nada.JPYF05 //6000 interface RechargeVC () end implementation RechargeVC - (void)viewDidLoad { [super viewDidLoad]; [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; [self buy:IAP0p20]; } -(void)buy:(int)type { buyType type; if ([SKPaymentQueue canMakePayments]) { [self RequestProductData]; NSLog(允许程序内付费购买); } else { NSLog(不允许程序内付费购买); UIAlertView *alerView [[UIAlertView alloc] initWithTitle:提示 message:您的手机没有打开程序内付费购买 delegate:nil cancelButtonTitle:NSLocalizedString(关闭,nil) otherButtonTitles:nil]; [alerView show]; } } -(void)RequestProductData { NSLog(---------请求对应的产品信息------------); NSArray *product nil; switch (buyType) { case IAP0p20: product[[NSArray alloc] initWithObjects:ProductID_IAP0p20,nil]; break; case IAP1p100: product[[NSArray alloc] initWithObjects:ProductID_IAP1p100,nil]; break; case IAP4p600: product[[NSArray alloc] initWithObjects:ProductID_IAP4p600,nil]; break; case IAP9p1000: product[[NSArray alloc] initWithObjects:ProductID_IAP9p1000,nil]; break; case IAP24p6000: product[[NSArray alloc] initWithObjects:ProductID_IAP24p6000,nil]; break; default: break; } NSSet *nsset [NSSet setWithArray:product]; SKProductsRequest *request[[SKProductsRequest alloc] initWithProductIdentifiers: nsset]; request.delegateself; [request start]; } //SKProductsRequestDelegate 请求协议 //收到的产品信息 - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{ NSLog(-----------收到产品反馈信息--------------); NSArray *myProduct response.products; NSLog(产品Product ID:%,response.invalidProductIdentifiers); NSLog(产品付费数量: %d, (int)[myProduct count]); // populate UI for(SKProduct *product in myProduct){ NSLog(product info); NSLog(SKProduct 描述信息%, [product description]); NSLog(产品标题 % , product.localizedTitle); NSLog(产品描述信息: % , product.localizedDescription); NSLog(价格: % , product.price); NSLog(Product id: % , product.productIdentifier); } SKPayment *payment nil; switch (buyType) { case IAP0p20: payment [SKPayment paymentWithProductIdentifier:ProductID_IAP0p20]; //支付25 break; case IAP1p100: payment [SKPayment paymentWithProductIdentifier:ProductID_IAP1p100]; //支付108 break; case IAP4p600: payment [SKPayment paymentWithProductIdentifier:ProductID_IAP4p600]; //支付618 break; case IAP9p1000: payment [SKPayment paymentWithProductIdentifier:ProductID_IAP9p1000]; //支付1048 break; case IAP24p6000: payment [SKPayment paymentWithProductIdentifier:ProductID_IAP24p6000]; //支付5898 break; default: break; } NSLog(---------发送购买请求------------); [[SKPaymentQueue defaultQueue] addPayment:payment]; } - (void)requestProUpgradeProductData { NSLog(------请求升级数据---------); NSSet *productIdentifiers [NSSet setWithObject:com.productid]; SKProductsRequest* productsRequest [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers]; productsRequest.delegate self; [productsRequest start]; } //弹出错误信息 - (void)request:(SKRequest *)request didFailWithError:(NSError *)error{ NSLog(-------弹出错误信息----------); UIAlertView *alerView [[UIAlertView alloc] initWithTitle:NSLocalizedString(Alert,NULL) message:[error localizedDescription] delegate:nil cancelButtonTitle:NSLocalizedString(Close,nil) otherButtonTitles:nil]; [alerView show]; } -(void) requestDidFinish:(SKRequest *)request { NSLog(----------反馈信息结束--------------); } -(void) PurchasedTransaction: (SKPaymentTransaction *)transaction{ NSLog(-----PurchasedTransaction----); NSArray *transactions [[NSArray alloc] initWithObjects:transaction, nil]; [self paymentQueue:[SKPaymentQueue defaultQueue] updatedTransactions:transactions]; } //SKPaymentTransactionObserver 千万不要忘记绑定代码如下 //----监听购买结果 //[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions//交易结果 { NSLog(-----paymentQueue--------); for (SKPaymentTransaction *transaction in transactions) { switch (transaction.transactionState) { case SKPaymentTransactionStatePurchased:{//交易完成 [self completeTransaction:transaction]; NSLog(-----交易完成 --------); UIAlertView *alerView [[UIAlertView alloc] initWithTitle: message:购买成功 delegate:nil cancelButtonTitle:NSLocalizedString(关闭,nil) otherButtonTitles:nil]; [alerView show]; } break; case SKPaymentTransactionStateFailed://交易失败 { [self failedTransaction:transaction]; NSLog(-----交易失败 --------); UIAlertView *alerView2 [[UIAlertView alloc] initWithTitle:提示 message:购买失败请重新尝试购买 delegate:nil cancelButtonTitle:NSLocalizedString(关闭,nil) otherButtonTitles:nil]; [alerView2 show]; }break; case SKPaymentTransactionStateRestored://已经购买过该商品 [self restoreTransaction:transaction]; NSLog(-----已经购买过该商品 --------); case SKPaymentTransactionStatePurchasing: //商品添加进列表 NSLog(-----商品添加进列表 --------); break; default: break; } } } - (void) completeTransaction: (SKPaymentTransaction *)transaction { NSLog(-----completeTransaction--------); // Your application should implement these two methods. NSString *product transaction.payment.productIdentifier; if ([product length] 0) { NSArray *tt [product componentsSeparatedByString:.]; NSString *bookid [tt lastObject]; if ([bookid length] 0) { [self recordTransaction:bookid]; [self provideContent:bookid]; } } // Remove the transaction from the payment queue. [[SKPaymentQueue defaultQueue] finishTransaction: transaction]; } //记录交易 -(void)recordTransaction:(NSString *)product{ NSLog(-----记录交易--------); } //处理下载内容 -(void)provideContent:(NSString *)product{ NSLog(-----下载--------); } - (void) failedTransaction: (SKPaymentTransaction *)transaction{ NSLog(失败); 转载于:https://www.cnblogs.com/haohao-developer/p/5613998.html