1.2充值部分

1.2.1 是否是越狱iOS设备

说明

检测设备是否是越狱设备,iOS越狱设备不允许进行内购。

接口

-(BOOL) isJailbreakDevice;

参数说明

示例

if (![mCydoniaSDK isJailbreakDevice]) {
//开始内购
}

1.2.2 是否开启年龄限制

说明

检测游戏是否开启年龄限制,在游戏对接阶段就已经确定是否开启年龄限制,对游戏是个固定值。

接口

-(BOOL) isInAppBillingAgeLimitOn;

参数说明

示例

if (![mCydoniaSDK isInAppBillingAgeLimitOn]) {
        NSLog(@"未开启年龄限制,不需要设定年龄");
        return;
    }

1.2.3 玩家是否设定生日

说明

在开启年龄限制的前提下,检测玩家是否设定了生日。如果没有设定需要弹出设定UI.

接口

-(BOOL) isBirthdaySet;

参数说明

示例

if (![mCydoniaSDK isInAppBillingAgeLimitOn]) {
        NSLog(@"未开启年龄限制,不需要设定年龄");
        return;
    }
    Boolean isSetBirthday = [mCydoniaSDK isBirthdaySet];
    if (isSetBirthday) {
        NSLog(@"生日已经设定");
    }else{
        NSLog(@"生日未设定,需要弹出设定UI");
        
    }

1.2.4 玩家设定生日

说明

在开启年龄限制的前提下,需要此API设定玩家生日,配合前面的UI需求。

接口

-(void) setBirthday:(NSString*)birthday :(SDKResponseBlock) sdkResponse;

参数说明

  • birthday:玩家选择的生日,格式是"yyyyMM"。例如:"200012"

示例

if (![mCydoniaSDK isInAppBillingAgeLimitOn]) {
        NSLog(@"未开启年龄限制,不需要设定年龄");
        return;
    }
    //设定生日,格式是年月:"yyyyMM"
    NSString* birthday = @"199001";
    [mCydoniaSDK setBirthday: birthday :^(NSDictionary *resultDictionary) {
        [self describeDictionarya:resultDictionary];
        NSNumber* statusNumber = [resultDictionary objectForKey:@"status"];
        int status = [statusNumber intValue];
        if ( status==200 ) {
            NSLog(@"设定生日成功");
        }else{
            //300:玩家数据不匹配 301:已经设定过密码 302:生日格式不对
            NSString *msg = [resultDictionary objectForKey:@"msg"];
            NSLog(@"%d----------%@",status,msg);
        }
        
    }];

1.2.5 玩家是否在充值限制内

说明

在开启年龄限制的前提下,每次充值都要检测本次充值是否在充值范围内。

接口

-(void) isInChargeLimit:(NSNumber*)itemPrice :(SDKResponseBlock) sdkResponse;

参数说明

  • itemPrice:需要购买的item的价格

示例

//检测购买此道具时是否超过充值限制
            NSNumber * itemPrice = [[NSNumber alloc] initWithDouble:120];
            [mCydoniaSDK isInChargeLimit:itemPrice :^(NSDictionary *resultDictionary) {
                NSNumber* statusNumber = [resultDictionary objectForKey:@"status"];
                int status = [statusNumber intValue];
                if ( status==200 ) {
                    //没有超过限制,可以充值
                    
                }else{
                    //超出了本月年龄限制,本月无法充值
                    NSString *msg = [resultDictionary objectForKey:@"msg"];
                    NSLog(@"%d----------%@",status,msg);
                }
            }];

1.2.6 充值

说明

实现充值功能

接口

-(BOOL) purchaseItem:(NSString *)productId withBillingPara:(NSString*) billingPara;

参数说明

  • productId:商品ID

  • billingPara:便于未消除订单的重新充值,需要自定义标识来识别此订单属于哪个服等

通过实现CydoniaIAPManagerDelegate接收返回结果

  • status:状态码

  • msg:返回信息

  • appleOrderId:苹果订单ID

  • receipt:订单收据信息

  • para:上面传入的billingPara,用于掉单处理

示例

//billingPara一般传入本单所在服务器等信息,主要用于掉单后的补单处理,根据实际需求设定,例如服务器id_服务器商品id
//billingPara不能用特殊符号,仅能使用a-zA-Z0-9_
[mCydoniaSDK purchaseItem:@"com.cydonia.sdkdevelop.item1" withBillingPara:@"1_10111"];

1.2.7 检测是否有未消除订单

说明

充值有时会有掉单发生,这时候订单会缓存在客户端,在玩家重启游戏或者重新打开充值界面时可以调用此API检测是否有掉单发生,如果有未清除订单需要继续跟服务端通讯完成充值,完成充值后进行下面的消单操作。

接口

-(NSString*) checkIsPayInfoLeft;

参数说明

示例

NSString* leftPayInfo = [mCydoniaSDK checkIsPayInfoLeft];
    //NSLog(@"left Pay Info:%@.",leftPayInfo);
    if (leftPayInfo.length > 0) {
        for(NSString* oneReceipt in [leftPayInfo componentsSeparatedByString:@";"] ){
            NSDictionary* resultDictionary = [self dictionaryWithJsonString:oneReceipt];
            NSNumber* statusNumber = [resultDictionary objectForKey:@"status"];
            NSString *receiptData= [resultDictionary objectForKey:@"receipt"];
            NSString *billingPara = [resultDictionary objectForKey:@"para"];
            SheldonLog(@"购买商品成功,statusNumber=%@,receipt:%@,billingPara:%@.",statusNumber,receiptData,billingPara);
        }
    }

1.2.8 消单

说明

充值完成之后调用消单

接口

-(void) clearPayInfo;

参数说明

示例

[mCydoniaSDK clearPayInfo];

Last updated