0312 抖音sdk最终版本; 在unity端 有对SdkProject/library/libs/humesdk-1.0.0.aar进行加载
15个文件已修改
1个文件已添加
675 ■■■■■ 已修改文件
Channel/Android/hygame/debug/libs/library-debug-hygame.aar 补丁 | 查看 | 原始文档 | blame | 历史
Channel/Android/hygame/release/libs/library-release-hygame.aar 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/hygame/AndroidManifest.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/hygame/build.gradle 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/hygame/deps.gradle 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/hygame/java/com/secondworld/sdk/BtGameApp.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/hygame/java/com/secondworld/sdk/BtGameMain.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/channel/hygame/java/com/secondworld/sdk/BtGamePlatform.java 178 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/gradle.properties 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/libs/humesdk-1.0.0.aar 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/PlatformDiff.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermissionStart.java 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/plugins/quick/java/com/secondworld/sdk/QuickSdkMgr.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdCreateRole.java 87 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdPayFinished.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdPlatformPay.java 137 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Channel/Android/hygame/debug/libs/library-debug-hygame.aar
Binary files differ
Channel/Android/hygame/release/libs/library-release-hygame.aar
Binary files differ
SdkProject/channel/hygame/AndroidManifest.xml
@@ -4,10 +4,8 @@
    package="com.secondworld.sdk">
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
SdkProject/channel/hygame/build.gradle
@@ -1,4 +1,15 @@
//当前脚本为渠道的差异化配置
allprojects {
    repositories {
        maven {
            url 'https://artifact.bytedance.com/repository/Volcengine/'
        }
        flatDir {
            dirs 'libs'
        }
    }
}
dependencies {
//    implementation project(path: ':quick')
}
}
SdkProject/channel/hygame/deps.gradle
@@ -1 +1,15 @@
//此脚本为渠道的第三方远程依赖库配置,会复制到unity中用于构建
//此脚本为渠道的第三方远程依赖库配置,会复制到unity中用于构建
dependencies {
    //在build.gradle文件的dependencies中引入SDK,集成Lite版本
// Applog 上报组件(必须)
    implementation 'com.bytedance.applog:RangersAppLog-Lite-cn:6.15.4'
// 商业化组件(必须) 6.14.2 以上版本商业化组件独立,注:必须接入以免平台限制应用上传
    implementation 'com.bytedance.applog:RangersAppLog-All-convert:6.15.4'
// 调试工具(可选)
    //debugImplementation 'com.bytedance.applog:RangersAppLog-DevTools:3.0.0'
    implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61'
    compile(name: 'humesdk-1.0.0', ext: 'aar')
    //implementation(name: 'humesdk-1.0.0', ext: 'aar')
}
SdkProject/channel/hygame/java/com/secondworld/sdk/BtGameApp.java
@@ -5,7 +5,7 @@
    @Override
    public void onCreate() {
        super.onCreate();
        //QuickSdkMgr.I.register("40450025922275820036898902533267","31232581");
    }
    @Override
SdkProject/channel/hygame/java/com/secondworld/sdk/BtGameMain.java
@@ -20,6 +20,8 @@
//        QuickSdkMgr.I.requestPermissions(activity);
        //QuickSdkMgr.I.init(activity);
        com.quicksdk.Sdk.getInstance().onCreate(activity);
        LogUtil.d("BtGameMain", "启动的是 BtGameMain!");
        PlatformDiff.I.OnCreate(GameAppProxy.app.getApplicationContext());
    }
    @Override
@@ -95,4 +97,7 @@
        }
        return super.onKeyDown(keyCode, event);
    }
}
SdkProject/channel/hygame/java/com/secondworld/sdk/BtGamePlatform.java
@@ -1,19 +1,159 @@
                                               package com.secondworld.sdk;
public class BtGamePlatform extends PlatformDiff {
    @Override
    public String platformName() {
        return "hygame";
    }
    @Override
    public  String platformProductCode()  {
        return "84324345567485956654600331002691";
    }
    @Override
    public  String platformProductKey() {
        return "12355811";
    }
}
package com.secondworld.sdk;
import android.Manifest;
import android.content.Context;
import android.widget.Toast;
import com.bytedance.applog.AppLog;
import com.bytedance.applog.InitConfig;
import com.bytedance.applog.game.GameReportHelper;
import com.bytedance.applog.util.UriConstants;
import com.bytedance.hume.readapk.HumeSDK;
import com.quicksdk.User;
import com.secondworld.sdk.utils.LogUtil;
import org.json.JSONException;
import org.json.JSONObject;
public class BtGamePlatform extends PlatformDiff {
    @Override
    public String platformName() {
        return "hygame";
    }
    @Override
    public  String platformProductCode()  {
        return "84324345567485956654600331002691";
    }
    @Override
    public  String platformProductKey() {
        return "12355811";
    }
    @Override
    public void CreateRoleEvent(String roleID)
    {
        GameReportHelper.onEventCreateGameRole(roleID);
    }
    @Override
    public void PayEvent(String title, String goodsID, int mount)
    {
        //内置事件 “支付”,属性:商品类型,商品名称,商品ID,商品数量,支付渠道,币种,是否成功(必传),金额(必传)
        // 付费金额单位为元
        GameReportHelper.onEventPurchase("gift", title,
                goodsID,1, "youxitu","¥", true, mount);
    }
    @Override
    public void PrePayEvent(String title, String goodsID, int mount)
    {
        //关键行为
        JSONObject paramsObj = new JSONObject();
        try {
            paramsObj.put("origin_event", "prepay"); // 添加原始事件名称参数
        } catch (JSONException e) {
            e.printStackTrace();
        }
        AppLog.onEventV3("game_addiction", paramsObj);
    }
    @Override
    public void OnCreate(Context var0)
    {
        String channel = "dy";
        /* 初始化SDK开始 */
        // 第一个参数APPID: 参考2.1节获取
        // 第二个参数CHANNEL: 填写渠道信息,请注意不能为空
        final InitConfig config = new InitConfig("520784", channel);
        // 设置数据上送地址
        config.setUriConfig(UriConstants.DEFAULT);
        config.setImeiEnable(false);//建议关停获取IMEI(出于合规考虑)
        config.setAutoTrackEnabled(true); // 全埋点开关,true开启,false关闭
        config.setLogEnable(false); // true:开启日志,参考4.3节设置logger,false:关闭日志
        AppLog.setEncryptAndCompress(true); // 加密开关,true开启,false关闭
        config.setMacEnable(false);
        config.setOperatorInfoEnabled(false);
        config.setEnablePlay(true);
        config.setAutoStart(false);
        //AppLog.init(var0, config, GameActivityProxy.I.activity);
        AppLog.init(var0, config);
        /* 初始化SDK结束 */
    }
    @Override
    public String[] platformPermission()
    {
        //return new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE};
        return new String[] {};
    }
    @Override
    public void RegisterEvent(String platform) {
        GameReportHelper.onEventRegister(platform,true);
        Login();
    }
    @Override
    public void Login()
    {
        switch (QuickSdkMgr.I.sdkInitState) {
            case FAILED:
            {
                if (GameActivityProxy.I.activity == null)
                    return;
                if (QuickSdkMgr.I.hasPermissions(GameActivityProxy.I.activity)) {
                    //init(BtGameMain.I.activity);
                    Toast.makeText(GameAppProxy.app, "异常请重启游戏", Toast.LENGTH_LONG).show();
                }
                break;
            }
            case SUCCEED: {
                //User.getInstance().login(GameActivityProxy.I.activity);
                GameActivityProxy.I.activity.runOnUiThread(new Runnable()
                {
                    @Override
                    public void run()
                    {
                        User.getInstance().login(GameActivityProxy.I.activity);
                    }
                });
                break;
            }
            case UNKNOWN:
            {
                QuickSdkMgr.I.sdkInitState = PlatformSdkMgr.SdkInitState.LOADING;
                break;
            }
            case LOADING: {
                //Toast.makeText(GameAppProxy.app, "账号登录成功后,请再次点击进入游戏", Toast.LENGTH_LONG).show();
                QuickSdkMgr.I.requestPermissions(GameActivityProxy.I.activity);
                break;
            }
        }
    }
    @Override
    public void StartRequestPermission()
    {
        //QuickSdkMgr.I.requestPermissions(GameActivityProxy.I.activity);
        //获取渠道名称 context为宿主的context
        String channel = HumeSDK.getChannel(GameAppProxy.app.getApplicationContext());
        if (channel == null || channel.isEmpty())
        {
            channel = "dy";
        }
        //获取humeSDK版本号
        String version = HumeSDK.getVersion();
        LogUtil.i("HumeSDK", "DYStart " + channel + " "+ version);
        AppLog.getInitConfig().setChannel(channel);
        AppLog.start();
    }
}
SdkProject/gradle.properties
@@ -1,21 +1,21 @@
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app"s APK  ·
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=false
## Automatically convert third-party libraries to use AndroidX
android.enableJetifier=false
#当前构建的渠道名称
CHANNEL_NAME=hygame2
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app"s APK  ·
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=false
## Automatically convert third-party libraries to use AndroidX
android.enableJetifier=false
#当前构建的渠道名称
CHANNEL_NAME=hygame
SdkProject/library/libs/humesdk-1.0.0.aar
Binary files differ
SdkProject/library/src/main/java/com/secondworld/sdk/PlatformDiff.java
@@ -1,12 +1,32 @@
package com.secondworld.sdk;
public abstract class PlatformDiff {
    public static PlatformDiff I;
    //平台名称
    public abstract String platformName();
    public abstract String platformProductCode();
    public abstract String platformProductKey();
}
package com.secondworld.sdk;
import android.content.Context;
public abstract class PlatformDiff {
    public static PlatformDiff I;
    //平台名称
    public abstract String platformName();
    public abstract String platformProductCode();
    public abstract String platformProductKey();
    public abstract void CreateRoleEvent(String roleID);  //创建角色后需要处理的逻辑,如不同sdk的汇报接口不同
    public abstract void PayEvent(String title, String goodsID, int mount); //支付后需要处理的逻辑,如不同sdk的汇报接口不同
    public abstract void PrePayEvent(String title, String goodsID, int mount); //发起支付订单后需要处理的逻辑,如不同sdk的汇报接口不同
    public abstract void OnCreate(Context var0); //启动成功后需要处理的逻辑,如不同sdk的汇报接口不同
    public abstract String[] platformPermission(); //请求的权限类型
    public abstract void RegisterEvent(String platform); //注册后需要处理的逻辑,如不同sdk的汇报接口不同
    public abstract void Login(); //登录后需要处理的逻辑,如不同sdk登录流程不同
    //请求权限 常规quickSDK登录流程 1.游戏方弹出隐私政策等 2.游戏方请求权限,拒绝权限也可进入下一步 3.初始化quicksdk 4.登录
    //加入抖音sdk后,抖音必须在生命周期初始化,在权限请求后启动,按规定流程修改为
    // 1.游戏方弹出隐私政策等
    // 2.必须在用户主动交互应用场景才能请求权限 如在登录界面出现点击登录按钮后,初始化quicksdk
    // 3.登录
    public abstract void StartRequestPermission(); //请求权限
}
SdkProject/library/src/main/java/com/secondworld/sdk/command/CmdRequestPermissionStart.java
@@ -1,33 +1,32 @@
package com.secondworld.sdk.command;
import com.secondworld.sdk.GameActivityProxy;
import com.secondworld.sdk.PermissionManager;
import com.secondworld.sdk.QuickSdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
import com.secondworld.sdk.utils.LogUtil;
import org.json.JSONException;
import org.json.JSONObject;
public class CmdRequestPermissionStart implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.RequestPermissionStart;
    }
    @Override
    public void process(JSONObject json) throws JSONException {
        //QuickSdkMgr.I.requestPermissions(GameActivityProxy.I.activity);
        GameActivityProxy.I.activity.runOnUiThread(new Runnable()
        {
            @Override
            public void run()
            {
                LogUtil.i("SdkManager", "CmdRequestPermissionStart process");
                QuickSdkMgr.I.requestPermissions(GameActivityProxy.I.activity);
            }
        });
    }
}
package com.secondworld.sdk.command;
import com.secondworld.sdk.GameActivityProxy;
import com.secondworld.sdk.PlatformDiff;
import com.secondworld.sdk.QuickSdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
import com.secondworld.sdk.utils.LogUtil;
import org.json.JSONException;
import org.json.JSONObject;
public class CmdRequestPermissionStart implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.RequestPermissionStart;
    }
    @Override
    public void process(JSONObject json) throws JSONException {
        GameActivityProxy.I.activity.runOnUiThread(new Runnable()
        {
            @Override
            public void run()
            {
                LogUtil.i("SdkManager", "CmdRequestPermissionStart process");
                //QuickSdkMgr.I.requestPermissions(GameActivityProxy.I.activity);
                PlatformDiff.I.StartRequestPermission();
            }
        });
    }
}
SdkProject/plugins/quick/java/com/secondworld/sdk/QuickSdkMgr.java
@@ -47,22 +47,29 @@
    public String channelID;
    int REQUEST_RECORD_PERMISSION_SETTING = 110;
    private boolean hasPermissions(Activity activity) {
    public boolean hasPermissions(Activity activity) {
        //权限提取到各自项目中
//        return (ContextCompat.checkSelfPermission(activity,
//                Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED)
//                && (ContextCompat.checkSelfPermission(activity,
//                Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED);
        return ContextCompat.checkSelfPermission(activity,
                Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
        String[] permissionStr = PlatformDiff.I.platformPermission();
        for (int i = 0; i < permissionStr.length; i++)
        {
            if (ContextCompat.checkSelfPermission(activity, permissionStr[i]) != PackageManager.PERMISSION_GRANTED)
            {
                return false;
            }
        }
        return true;
    }
    public void requestPermissions(Activity activity) {
        try {
            if (!hasPermissions(activity)) {
                ActivityCompat.requestPermissions(activity, new String[]{
                        Manifest.permission.WRITE_EXTERNAL_STORAGE}, RequestCode.QUICK);
                ActivityCompat.requestPermissions(activity, PlatformDiff.I.platformPermission(), RequestCode.QUICK);
            }
            else
            {
@@ -119,40 +126,14 @@
    }
    public void init(Activity activity) {
        sdkInitState = SdkInitState.LOADING;
        Sdk.getInstance().init(activity, productCode, productKey);
    }
    public void login() {
        switch (sdkInitState) {
            case FAILED:
            case UNKNOWN: {
                if (GameActivityProxy.I.activity == null)
                    return;
                if (hasPermissions(GameActivityProxy.I.activity)) {
                    //init(BtGameMain.I.activity);
                    Toast.makeText(GameAppProxy.app, "异常请重启游戏", Toast.LENGTH_LONG).show();
                }
                break;
            }
            case SUCCEED: {
                //User.getInstance().login(GameActivityProxy.I.activity);
                GameActivityProxy.I.activity.runOnUiThread(new Runnable()
                {
                    @Override
                    public void run()
                    {
                        User.getInstance().login(GameActivityProxy.I.activity);
                    }
                });
                break;
            }
            case LOADING: {
                Toast.makeText(GameAppProxy.app, "正在初始化中,请稍等!", Toast.LENGTH_LONG).show();
                break;
            }
        }
        PlatformDiff.I.Login();
    }
    public void loginOut() {
@@ -247,8 +228,8 @@
                sdkInitState = SdkInitState.SUCCEED;
                LogUtil.debug("SdkManager", "初始化成功");
                UnityMsgHandler.sendMessageToUnity(CodeA2U.PlatformInitOk);
                PlatformDiff.I.RegisterEvent("youxitu");
            }
            @Override
            public void onFailed(String message, String trace) {
                //初始化失败
SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdCreateRole.java
@@ -1,43 +1,44 @@
package com.secondworld.sdk.command;
import com.quicksdk.entity.GameRoleInfo;
import com.secondworld.sdk.QuickSdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
import org.json.JSONObject;
public class CmdCreateRole implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.CreateRole;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        GameRoleInfo roleInfo = new GameRoleInfo();
        roleInfo.setServerID(json.getString("sid"));
        roleInfo.setServerName(json.getString("serverName"));
        roleInfo.setGameRoleName(json.getString("roleName").trim().replace(" ", ""));
        roleInfo.setGameRoleID(json.getString("roleID"));
        roleInfo.setGameBalance(json.getString("money"));
        roleInfo.setVipLevel( json.getString("vipLevel"));  //设置当前用户vip等级,必须为数字整型字符串,请勿传"vip1"等类似字符串
        roleInfo.setGameUserLevel(json.getString("level"));//设置游戏角色等级
        String familyName = json.getString("familyName").trim().replace(" ","");
        if (familyName.isEmpty())
        {
            familyName = "default";
        }
        roleInfo.setPartyName(familyName);//设置帮派名称
        roleInfo.setRoleCreateTime( json.getString("createTime")); //UC,当乐与1881,TT渠道必传,值为10位数时间戳
        roleInfo.setPartyId(json.getString("familyID")); //设置帮派id,必须为整型字符串
        roleInfo.setGameRoleGender("男");
        roleInfo.setGameRolePower(json.getString("fightPower")); //设置角色战力,必须为整型字符串
        roleInfo.setPartyRoleId("11"); //设置角色在帮派中的id
        roleInfo.setPartyRoleName("帮主"); //设置角色在帮派中的名称
        roleInfo.setProfessionId("-1"); //设置角色职业id,必须为整型字符串
        roleInfo.setProfession("-1"); //设置角色职业名称
        roleInfo.setFriendlist("无"); //设置好友关系列表,格式请参考:http://open.quicksdk.net/help/detail/aid/190
        QuickSdkMgr.I.setGameRoleInfo(roleInfo, true);
    }
}
package com.secondworld.sdk.command;
import com.quicksdk.entity.GameRoleInfo;
import com.secondworld.sdk.PlatformDiff;
import com.secondworld.sdk.QuickSdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
import org.json.JSONObject;
public class CmdCreateRole implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.CreateRole;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        GameRoleInfo roleInfo = new GameRoleInfo();
        roleInfo.setServerID(json.getString("sid"));
        roleInfo.setServerName(json.getString("serverName"));
        roleInfo.setGameRoleName(json.getString("roleName").trim().replace(" ", ""));
        roleInfo.setGameRoleID(json.getString("roleID"));
        roleInfo.setGameBalance(json.getString("money"));
        roleInfo.setVipLevel( json.getString("vipLevel"));  //设置当前用户vip等级,必须为数字整型字符串,请勿传"vip1"等类似字符串
        roleInfo.setGameUserLevel(json.getString("level"));//设置游戏角色等级
        String familyName = json.getString("familyName").trim().replace(" ","");
        if (familyName.isEmpty())
        {
            familyName = "default";
        }
        roleInfo.setPartyName(familyName);//设置帮派名称
        roleInfo.setRoleCreateTime( json.getString("createTime")); //UC,当乐与1881,TT渠道必传,值为10位数时间戳
        roleInfo.setPartyId(json.getString("familyID")); //设置帮派id,必须为整型字符串
        roleInfo.setGameRoleGender("男");
        roleInfo.setGameRolePower(json.getString("fightPower")); //设置角色战力,必须为整型字符串
        roleInfo.setPartyRoleId("11"); //设置角色在帮派中的id
        roleInfo.setPartyRoleName("帮主"); //设置角色在帮派中的名称
        roleInfo.setProfessionId("-1"); //设置角色职业id,必须为整型字符串
        roleInfo.setProfession("-1"); //设置角色职业名称
        roleInfo.setFriendlist("无"); //设置好友关系列表,格式请参考:http://open.quicksdk.net/help/detail/aid/190
        QuickSdkMgr.I.setGameRoleInfo(roleInfo, true);
        PlatformDiff.I.CreateRoleEvent(json.getString("roleID"));
    }
}
SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdPayFinished.java
@@ -1,16 +1,19 @@
package com.secondworld.sdk.command;
import com.secondworld.sdk.utils.CodeU2A;
import org.json.JSONObject;
public class CmdPayFinished implements  ICommand{
    @Override
    public int getCode() {
        return CodeU2A.PayFinished;
    }
    @Override
    public void process(JSONObject json) throws Exception {
    }
}
package com.secondworld.sdk.command;
import com.secondworld.sdk.PlatformDiff;
import com.secondworld.sdk.utils.CodeU2A;
import org.json.JSONObject;
public class CmdPayFinished implements  ICommand{
    @Override
    public int getCode() {
        return CodeU2A.PayFinished;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        int money = (int) json.getDouble("money");
        PlatformDiff.I.PayEvent("title" + money, "goodsID"+money, money);
    }
}
SdkProject/plugins/quick/java/com/secondworld/sdk/command/CmdPlatformPay.java
@@ -1,68 +1,69 @@
package com.secondworld.sdk.command;
import com.quicksdk.entity.GameRoleInfo;
import com.quicksdk.entity.OrderInfo;
import com.secondworld.sdk.GameAppProxy;
import com.secondworld.sdk.QuickSdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
import org.json.JSONObject;
import java.net.URLEncoder;
public class CmdPlatformPay implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.PlatformPay;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        JSONObject extraData = new JSONObject();
        extraData.put("appid", GameAppProxy.appId);
        extraData.put("cpinfo", json.getString("cpInfo"));
        extraData.put("cporderid", json.getString("orderId"));
        extraData.put("serverid", json.getString("sid"));
        extraData.put("channelID", QuickSdkMgr.I.channelID);
        GameRoleInfo roleInfo = new GameRoleInfo();
        roleInfo.setServerID(json.getString("sid"));
        roleInfo.setServerName(json.getString("serverName"));
        roleInfo.setGameRoleName(json.getString("roleName").trim().replace(" ", ""));
        roleInfo.setGameRoleID(json.getString("roleID"));
        roleInfo.setGameBalance(json.getString("money"));
        roleInfo.setVipLevel(json.getString("vipLevel"));  //设置当前用户vip等级,必须为数字整型字符串,请勿传"vip1"等类似字符串
        roleInfo.setGameUserLevel(json.getString("level"));//设置游戏角色等级
        String familyName = json.getString("familyName").trim().replace(" ","");
        if (familyName.isEmpty())
        {
            familyName = "default";
        }
        roleInfo.setPartyName(familyName);//设置帮派名称
        roleInfo.setRoleCreateTime(json.getString("createTime")); //UC,当乐与1881,TT渠道必传,值为10位数时间戳
        roleInfo.setPartyId(json.getString("familyID")); //设置帮派id,必须为整型字符串
        roleInfo.setGameRoleGender("男");
        roleInfo.setGameRolePower(json.getString("fightPower")); //设置角色战力,必须为整型字符串
        roleInfo.setPartyRoleId("11"); //设置角色在帮派中的id
        roleInfo.setPartyRoleName("帮主"); //设置角色在帮派中的名称
        roleInfo.setProfessionId("-1"); //设置角色职业id,必须为整型字符串
        roleInfo.setProfession("-1"); //设置角色职业名称
        roleInfo.setFriendlist("无"); //设置好友关系列表,格式请参考:http://open.quicksdk.net/help/detail/aid/190
        OrderInfo orderInfo = new OrderInfo();
        orderInfo.setCpOrderID(json.getString("orderId"));
        orderInfo.setGoodsName(json.getString("title"));//商品名称,不带数量
        orderInfo.setCount(1);//游戏币数量
        orderInfo.setAmount((float) json.getDouble("mount"));
        orderInfo.setGoodsID(json.getString("cpInfo"));
        orderInfo.setGoodsDesc(json.getString("title"));
        orderInfo.setExtrasParams(
                URLEncoder.encode(extraData.toString(), "utf-8"));
        QuickSdkMgr.I.pay(orderInfo, roleInfo);
    }
}
package com.secondworld.sdk.command;
import com.quicksdk.entity.GameRoleInfo;
import com.quicksdk.entity.OrderInfo;
import com.secondworld.sdk.GameAppProxy;
import com.secondworld.sdk.PlatformDiff;
import com.secondworld.sdk.QuickSdkMgr;
import com.secondworld.sdk.utils.CodeU2A;
import org.json.JSONObject;
import java.net.URLEncoder;
public class CmdPlatformPay implements ICommand {
    @Override
    public int getCode() {
        return CodeU2A.PlatformPay;
    }
    @Override
    public void process(JSONObject json) throws Exception {
        JSONObject extraData = new JSONObject();
        extraData.put("appid", GameAppProxy.appId);
        extraData.put("cpinfo", json.getString("cpInfo"));
        extraData.put("cporderid", json.getString("orderId"));
        extraData.put("serverid", json.getString("sid"));
        extraData.put("channelID", QuickSdkMgr.I.channelID);
        GameRoleInfo roleInfo = new GameRoleInfo();
        roleInfo.setServerID(json.getString("sid"));
        roleInfo.setServerName(json.getString("serverName"));
        roleInfo.setGameRoleName(json.getString("roleName").trim().replace(" ", ""));
        roleInfo.setGameRoleID(json.getString("roleID"));
        roleInfo.setGameBalance(json.getString("money"));
        roleInfo.setVipLevel(json.getString("vipLevel"));  //设置当前用户vip等级,必须为数字整型字符串,请勿传"vip1"等类似字符串
        roleInfo.setGameUserLevel(json.getString("level"));//设置游戏角色等级
        String familyName = json.getString("familyName").trim().replace(" ","");
        if (familyName.isEmpty())
        {
            familyName = "default";
        }
        roleInfo.setPartyName(familyName);//设置帮派名称
        roleInfo.setRoleCreateTime(json.getString("createTime")); //UC,当乐与1881,TT渠道必传,值为10位数时间戳
        roleInfo.setPartyId(json.getString("familyID")); //设置帮派id,必须为整型字符串
        roleInfo.setGameRoleGender("男");
        roleInfo.setGameRolePower(json.getString("fightPower")); //设置角色战力,必须为整型字符串
        roleInfo.setPartyRoleId("11"); //设置角色在帮派中的id
        roleInfo.setPartyRoleName("帮主"); //设置角色在帮派中的名称
        roleInfo.setProfessionId("-1"); //设置角色职业id,必须为整型字符串
        roleInfo.setProfession("-1"); //设置角色职业名称
        roleInfo.setFriendlist("无"); //设置好友关系列表,格式请参考:http://open.quicksdk.net/help/detail/aid/190
        OrderInfo orderInfo = new OrderInfo();
        orderInfo.setCpOrderID(json.getString("orderId"));
        orderInfo.setGoodsName(json.getString("title"));//商品名称,不带数量
        orderInfo.setCount(1);//游戏币数量
        orderInfo.setAmount((float) json.getDouble("mount"));
        orderInfo.setGoodsID(json.getString("cpInfo"));
        orderInfo.setGoodsDesc(json.getString("title"));
        orderInfo.setExtrasParams(
                URLEncoder.encode(extraData.toString(), "utf-8"));
        QuickSdkMgr.I.pay(orderInfo, roleInfo);
        PlatformDiff.I.PrePayEvent(json.getString("title"), json.getString("cpInfo"), (int) json.getDouble("mount"));
    }
}