iOS游戏开发三:苹果内支付实现 In-app

本文作者分享了在iOS游戏中实现苹果内支付的实践经验,包括遇到的问题及解决方法。文章适合已有商品ID并配置好测试账号的开发者,提供内支付流程的详细代码示例。
摘要由CSDN通过智能技术生成

首先你必须熟悉内支付的流程,可以到网上搜搜看。

前几天因为需要做了个苹果的内支付,当中遇到了不少苦头,感觉网上的各种博客对内支付这一块都是点到即止,没有真真正正实现自己的需求。正所谓辛苦就有所得,通过东接西搬,终于内力小成,特与大家分享一下自己的经验。这里我假设你已经把商品的ID什么的都已经注册成功了,测试账号也有了。

下面直接贴代码了~~~~

//
//  IAPHelperViewController.h
//  

#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>

@interface IAPHelperViewController : UIViewController<SKProductsRequestDelegate,SKPaymentTransactionObserver>
{
    NSString* kMyInAppIdentifier;
    BOOL receiptValid;
    UIActivityIndicatorView* spinner;
}

+ (IAPHelperViewController *) sharedIAPHelper;

- (void) requestProUpgradeProductData;

- (void) requestProductData;

- (void) buyGolds:(int)buyType;

- (BOOL) canInAppPayment;

- (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) recordTransaction:(SKPaymentTransaction *)product;

- (void) verifyReceiptFromMyServer:(SKPaymentTransaction *)transaction;

@end

//
//  IAPHelperViewController.m
//  

#import "IAPHelperViewController.h"
#include "cocos2d.h"
using namespace cocos2d;

const static int IAP1p99 = flag1;//主要是标记用户点击了那个商品
const static int IAP2p99 = flag2;
const static int IAP3p99 = flag3;
const static int IAP4p99 = flag4;
const static int IAP5p99 = flag5;
#define MyServerURL        @"your server address , not apple"
#define ProductOne         @"product  1 id"
#define ProductThree       @".......  2 .."
#define ProductFive        @".......  3 .."
#define ProductFifteen     @".......  4 .."
#define ProductFifty       @"......   5 .."
#define MyFrint            NSLog(@"\n%s %d\n",__FUNCTION__, __LINE__)


@interface IAPHelperViewController ()

@end

@implementation IAPHelperViewController

//定义单例变量
static IAPHelperViewController* singleton = nil;
//单例模式
+ (IAPHelperViewController *) sharedIAPHelper
{
    MyFrint;
    if (singleton == nil) {
        singleton = [[IAPHelperViewController alloc] initWithNibName:nil bundle:nil];
    }
    return singleton;
}
//初始化 这里应该根据自己的情况初始化 我用的是C++写的界面 OC不鸟~~~~~~
- (id) initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    MyFrint;  
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        receiptValid = NO;
    }
    r
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值