Channel/Android/hygame/debug/libs/library-debug-hygame.aarBinary files differ
Channel/Android/hygame/release/libs/library-release-hygame.aarBinary 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.aarBinary 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")); } }