SDKInterface.m 10.6 KB
#include "SDKInterface.h"
#import <UIKit/UIKit.h>

#import "tzfjsj/MindsMassesAllManagerCodes.h"
#import "tzfjsj/ArcadiaMassesHuiTiaoNotificationAnnie.h"
#import "tzfjsj/ExpiredMassesInformationKorean.h"

@implementation SDKInterface : Interface

int mExchange;
NSString *MassesAppId;
NSString *MassesAppKey;
NSString *MassesLeakOrderUrl;

- (void)SDKinit:(UIViewController *) control
{

    [super SDKinit:control];
    
    [FeastHaiBaoJuheConfigStark JockeygetInstanceDealt];
    [[MindsMassesAllManagerCodes BulletMassesInstanceTheta]ExpiredMassesChuShiHuaKorean];
    [[MindsMassesAllManagerCodes BulletMassesInstanceTheta]FoughtMassesYangShiNation:@"sdk"];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveLoginMessage:) name:FeastMassesLoginNotificationStark object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(HCKAssetsToolCallBack:) name:@"MassesToolCallBack" object:nil];
    
    [[MergingHaiBaoJuheCheckerPencils FencinggetInstanceLarge] sendNotice:HaiBaoJuheSDKNotificationInitSDK notiName:@"InitSuccess" statusCode:HaiBaoJuheSDK_NO_ERROR description:@"initSuccess" extendData:nil];
    
    NSString* channelId = [[FeastHaiBaoJuheConfigStark JockeygetInstanceDealt] MindsgetValueByKeyCodes:@"gamechannelid"];
    if(channelId == nil || [channelId length] <= 0){
        channelId = @"unknown";
    }
}

/**
 登录SDK
 */
- (void)SDKloginSDK
{
    //APPID APPKEY
    MassesAppId = [[FeastHaiBaoJuheConfigStark JockeygetInstanceDealt] MindsgetValueByKeyCodes:@"APP_ID"];
    MassesAppKey =[[FeastHaiBaoJuheConfigStark JockeygetInstanceDealt] MindsgetValueByKeyCodes:@"APP_KEY"];
    [[MindsMassesAllManagerCodes BulletMassesInstanceTheta]BubblesMassesDengLuEnsure:MassesAppId :MassesAppKey :self.controller];
    
}

/**
 loginCheck
 */
- (void)receiveLoginMessage:(NSNotification *)notification
{
    NSLog(@"loginchek");
    HaiBaoJuheLoginInfo *loginInfo = [HaiBaoJuheLoginInfo alloc];
    loginInfo.openId = [[ExpiredMassesInformationKorean getInstance]openId];
    loginInfo.sign = [[ExpiredMassesInformationKorean getInstance] token];
    loginInfo.timestamp = [[ExpiredMassesInformationKorean getInstance] timestamp];
    NSString *birthday = [[ExpiredMassesInformationKorean getInstance] birthday];
    self.birthday = birthday;
    if([birthday length] == 8){//已认证
        self.code = ALREADY_VERIFY;
    }else{
        self.code = NO_VERIFY_HANDLER;
    };
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        [[MergingHaiBaoJuheCheckerPencils FencinggetInstanceLarge] startCheck:loginInfo];
    });
}


-(NSString*)DataTojsonString:(id)object
{
    NSString *jsonString = nil;
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:object
                                                       options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
                                                         error:&error];
    jsonString = [jsonData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
    return jsonString;
}

/**
 苹果支付结果回调
 */

- (void)HCKAssetsToolCallBack:(NSNotification *)notification
{
    NSDictionary* payResultDic = notification.object;
    NSString* receiptStr = [payResultDic objectForKey:@"MassesToolResult"];
    NSString* queryId = [payResultDic objectForKey:@"query_id"];
    
    //收到回调,保存queryid和data
    NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
    NSMutableArray* queryIdArray = [userDefaults objectForKey:@"queryIds"];
    NSMutableArray* tempQueryIdArray = [[NSMutableArray alloc] initWithCapacity:10];
    if (queryIdArray) {
    }else{
        queryIdArray = [[NSMutableArray alloc]initWithCapacity:10];
    }
    for (NSString* arrayQueryId in queryIdArray) {
        [tempQueryIdArray addObject:arrayQueryId];
    }
    [tempQueryIdArray addObject:queryId];
    [userDefaults setObject:tempQueryIdArray forKey:@"queryIds"];
    [userDefaults setObject:receiptStr forKey:queryId];
    
    NSDictionary* receiptDic = [NSDictionary dictionaryWithObjectsAndKeys:receiptStr,@"receipt",queryId,@"query_id", nil];
    NSString* result = [[NetCenter getInstance] httpPostSynFillOD:MassesLeakOrderUrl :receiptDic];
    
    if([@"success" isEqualToString:result]){//确认订单成功
        [[MergingHaiBaoJuheCheckerPencils FencinggetInstanceLarge] sendNotice:HaiBaoJuheSDKNotificationGzyazf notiName:@"success" statusCode:HaiBaoJuheSDK_NO_ERROR description:@"success" extendData:nil];
        //删除已保存的
        [userDefaults removeObjectForKey:queryId];
        [tempQueryIdArray removeObject:queryId];
        [userDefaults setObject:tempQueryIdArray forKey:@"queryIds"];
        [userDefaults removeObjectForKey:@"lastqueryid"];
    }
        [userDefaults synchronize];
}

/**
 支付 创建订单
 */
- (void)SDKgzyazfWithGzyazfmentInfo:(HaiBaoJuheCreateOrderInfo *)payInfo
{
    NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
    NSString* lastqueryid = [userDefaults objectForKey:@"lastqueryid"];
    
    MassesLeakOrderUrl = [[NSString alloc] initWithFormat:@"%@?uid=%@&playerid=%@",
                                  [DiapersHaiBaoJuheUtilsCascade FeastcreateGzyazfUrlStark],
                                  [payInfo userId],
                                  [payInfo playerId]];
    [userDefaults setObject:MassesLeakOrderUrl forKey:@"lastMassesLeakOrderUrl"];
    
    if (lastqueryid!=nil) {
        //创建订单前进行补单
        NSData* receiptData = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]];
        NSString* receiptStr = [receiptData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
        if (receiptStr!=nil) {
            receiptStr = [receiptStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
            //如果不为空,进行最后一次补单
            NSDictionary* receiptDic = [NSDictionary dictionaryWithObjectsAndKeys:receiptStr,@"receipt",lastqueryid,@"query_id", nil];
            NSString* result = [[NetCenter getInstance] httpPostSynFillOD:MassesLeakOrderUrl :receiptDic];
            if([@"success" isEqualToString:result]){//确认订单成功
                //删除已保存的
                [userDefaults removeObjectForKey:@"lastqueryid"];
            }
        }
    }
    
    mExchange = [payInfo exchange].intValue;
    [super SDKgzyazfWithGzyazfmentInfo:payInfo];
    MassesLeakOrderUrl = [[NSString alloc] initWithFormat:@"%@?uid=%@&playerid=%@",
                                  [DiapersHaiBaoJuheUtilsCascade FeastcreateGzyazfUrlStark],
                                  [payInfo userId],
                                  [payInfo playerId]];
    [userDefaults synchronize];
}

/**
 SDK
 */
- (void)SDKgotoUserCenter
{
}

- (void)SDKreport:(HaiBaoJuheReportInfo *)reportInfo
{
    NSLog(@"reportInfo");
    NSString* reportType = [reportInfo reportType];
    if (reportInfo) {
        if ([reportType isEqualToString:REPORT_ENTER]) {
            
            dispatch_async(dispatch_get_global_queue(0, 0), ^{
                [self handlerLeakOrder];
            });
        }else if ([reportType isEqualToString:REPORT_CREATEROLE]){
            
        }
    }
}

/**
 SDK
 */
- (void)SDKexitSDK
{
    
}

- (BOOL)hasLogout
{
    return YES;
}

- (void)SDKlogoutSDK
{
    NSLog(@"切换账号");
    [[MergingHaiBaoJuheCheckerPencils FencinggetInstanceLarge] sendNotice:HaiBaoJuheSDKNotificationLogout notiName:@"success" statusCode:HaiBaoJuheSDK_NO_ERROR description:@"success" extendData:nil];
}

- (void)handleOpenurl:(NSURL *)url
{
}

- (void)receivePayMessage : (NSNotification *)notification;
{
    NSString *order_id = [notification object];
    NSLog(@"订单ID:%@", order_id);
}

//补单处理
- (void) handlerLeakOrder{
    NSUserDefaults* userDefaults2 = [NSUserDefaults standardUserDefaults];
    NSMutableArray* queryIdArray = [userDefaults2 objectForKey:@"queryIds"];
    
    NSLog(@"orderDic%@",queryIdArray);
    NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
    NSMutableArray* failQueryIdArray = [[NSMutableArray alloc]initWithCapacity:10];
    
    if(queryIdArray){
        for (NSString* queryId in queryIdArray) {
            NSString* receiptStr = [userDefaults valueForKey:queryId];
            NSDictionary* receiptDic = [NSDictionary dictionaryWithObjectsAndKeys:receiptStr,@"receipt",queryId,@"query_id", nil];
            NSString* lastMassesLeakOrderUrl = [userDefaults objectForKey:@"lastMassesLeakOrderUrl"];
            NSString* result;
            if (lastMassesLeakOrderUrl!=nil) {
                 result = [[NetCenter getInstance] httpPostSynFillOD:lastMassesLeakOrderUrl :receiptDic];
            }else{
                 result = [[NetCenter getInstance] httpPostSynFillOD:[DiapersHaiBaoJuheUtilsCascade FeastcreateGzyazfUrlStark] :receiptDic];
            }
            if([@"success" isEqualToString:result]){//成功
                [userDefaults removeObjectForKey:queryId];
            }else{//补单失败
                [failQueryIdArray addObject:queryId];
            }
        }
        
        if([failQueryIdArray count] > 0){//含有补单失败项
            [userDefaults setObject:failQueryIdArray forKey:@"queryIds"];
        }else{//全部补单成功
            [userDefaults removeObjectForKey:@"queryIds"];
        }
        [userDefaults synchronize];
    }
}


- (void)receiveCreateOrder:(NSNotification *)notification
{
    NSLog(@"创建订单成功");
    FeastHaiBaoJuheGzyazfInfoStark *payInfo = [notification object];
    
    NSNumber *amount = @([[payInfo postAmount] integerValue] * mExchange);
    NSString *serverId = [payInfo serverId];
    NSString *roleName = [payInfo playerName];
    NSString *queryId = [payInfo queryId];
    
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        [self handlerLeakOrder];
    });
    
    NSString *other = [payInfo other];
    
    if (other && [other length] > 0) {
        [[MindsMassesAllManagerCodes BulletMassesInstanceTheta] MassesQuery:serverId :roleName :amount :[payInfo queryId] :self.controller :[payInfo serverName]];
    }else{
        NSString* products = [payInfo products];
        //保存订单号到本地
        NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
        [userDefaults setObject:queryId forKey:@"lastqueryid"];
        [userDefaults synchronize];
        [[MindsMassesAllManagerCodes BulletMassesInstanceTheta] MassesQueryOperation:self.controller MassesHuoWuID:products MassesJiaGe:[payInfo postAmount] MassesHuoWuMing:[payInfo productName] MassesDingDanHao:queryId];
    }
}

@end