MainActivity.java 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644
  1. package com.wenting.youyiplugin;
  2. import android.Manifest;
  3. import android.app.Activity;
  4. import android.content.pm.ApplicationInfo;
  5. import android.content.pm.PackageInfo;
  6. import android.content.pm.PackageManager;
  7. import android.content.pm.Signature;
  8. import android.content.res.Configuration;
  9. import android.content.res.Resources;
  10. import android.net.Uri;
  11. import android.os.Bundle;
  12. import android.os.Handler;
  13. import android.os.Message;
  14. import android.provider.Settings;
  15. import android.text.TextUtils;
  16. import android.util.Base64;
  17. import android.util.Log;
  18. import android.view.View;
  19. import android.content.Intent;
  20. import androidx.annotation.NonNull;
  21. import androidx.core.app.ActivityCompat;
  22. import androidx.core.content.ContextCompat;
  23. import com.google.gson.Gson;
  24. import com.sdk.mysdklibrary.MySdkApi;
  25. import com.sdk.mysdklibrary.interfaces.InitCallBack;
  26. import com.sdk.mysdklibrary.interfaces.LoginCallBack;
  27. import com.sdk.mysdklibrary.interfaces.PayCallBack;
  28. import com.sdk.mysdklibrary.localbeans.GameRoleBean;
  29. import com. sdk. mysdklibrary. localbeans. OrderInfo;
  30. import com.unity3d.player.UnityPlayer;
  31. import com.unity3d.player.UnityPlayerActivity;
  32. import org.json.JSONObject;
  33. import java.security.MessageDigest;
  34. import java.security.NoSuchAlgorithmException;
  35. import java.util.ArrayList;
  36. import java.util.HashMap;
  37. import java.util.Locale;
  38. public class MainActivity extends UnityPlayerActivity implements Handler.Callback, ActivityCompat.OnRequestPermissionsResultCallback
  39. {
  40. private static final int MSG_INIT = 101;
  41. private static final int MSG_LOGIN = 102;
  42. private static final int MSG_SWITCH_ACCOUNT = 103;
  43. private static final int MSG_PAY = 104;
  44. private static final int MSG_CREATE_ROLE_LOG = 105;
  45. private static final int MSG_LOGIN_ROLE_LOG = 106;
  46. private static final int MSG_LEVEL_LOG = 107;
  47. private static final int MSG_REPORT_ACTION = 108;
  48. private static final int MSG_CAN_ENTER_SERVER_JUDGE = 109;
  49. private static final int MSG_EXIT = 110;
  50. private static final int PERMISSION_REQUEST_CODE = 1;
  51. private final String LOG = "ZT_GAME";
  52. private String gameObjectName;
  53. private boolean mInited = false;
  54. private Handler mHandler = new Handler(this);
  55. private String zt_cpid = "100079";
  56. private String zt_gameid = "100252";
  57. private String zt_gameKey = "ba8f0bc56b5de3b2";
  58. private HashMap<String, String> goodIdMap = new HashMap<>();
  59. private void callUnityFunc(String funcName, String paramStr)
  60. {
  61. if (TextUtils.isEmpty(this.gameObjectName)) {
  62. Log.e(LOG, "gameObject is null, please set gameObject first");
  63. return;
  64. }
  65. Log.e("--------", "callUnityFunc: " + funcName);
  66. UnityPlayer.UnitySendMessage("SDKMgr", funcName, paramStr);
  67. }
  68. public boolean handleMessage(Message msg)
  69. {
  70. switch (msg.what)
  71. {
  72. case MSG_INIT:
  73. HashMap<String, String> initObj = (HashMap<String, String>)msg.obj;
  74. Log.i(LOG, "onInitFinished 开始初始化SDK");
  75. // sdkInstance.init(this, initObj.get("gameId"), initObj.get("appKey"), initObj.get("gameVersion"));
  76. mInited = true;
  77. callUnityFunc("OnInitSuccess", "");
  78. break;
  79. case MSG_LOGIN:
  80. Log.i(LOG, "调用登录");
  81. MySdkApi.openLogin(this,new MyLoginCallback());
  82. // sdkInstance.login(this, mLoginCallBack);
  83. break;
  84. case MSG_SWITCH_ACCOUNT:
  85. Log.i(LOG, "切换用户");
  86. MySdkApi.logout(this);
  87. // sdkInstance.switchAccountLogin();
  88. break;
  89. case MSG_PAY: {
  90. HashMap<String, Object> payObj = (HashMap<String, Object>) msg.obj;
  91. //String cpOrderId = (String) payObj.get("cpOrderId");
  92. //String amount = (String) payObj.get("amount");
  93. //String goodsId = (String) payObj.get("goodsId");
  94. //String goodsName = (String) payObj.get("goodsName");
  95. //String roleId = (String) payObj.get("roleId");
  96. //String roleName = (String) payObj.get("roleName");
  97. //String serverId = (String) payObj.get("serverId");
  98. //String serverName = (String) payObj.get("serverName");
  99. //int level = (int) payObj.get("level");
  100. //String extendParams = (String) payObj.get("extendParams");
  101. //String desc = (String) payObj.get("goodsDesc");
  102. //int pcount = 1;//(int) payObj.get("count");
  103. Log.i(LOG, "调用支付");
  104. //roleInfo, orderInfo
  105. String roleInfo = (String) payObj.get("roleInfo");
  106. String orderInfo = (String) payObj.get("orderInfo");
  107. GameRoleInfo gameRoleInfo = new Gson().fromJson(roleInfo,GameRoleInfo.class);
  108. GameOrderInfo gameOrderInfo = new Gson().fromJson(orderInfo,GameOrderInfo.class);
  109. OrderExtraInfo extraInfo = new Gson().fromJson(gameOrderInfo.cpExtra,OrderExtraInfo.class);
  110. SendRoleInfoByGameRoleInfo(2,gameRoleInfo);
  111. paySDK(this,gameOrderInfo.goodsId,gameOrderInfo.goodsName,
  112. gameOrderInfo.cpOrderId,gameOrderInfo.callbackUrl,
  113. gameOrderInfo.orderAmount,extraInfo);
  114. //String ca = orderInfo.getGoodsId().split("_")[1];
  115. //Log.i(LOG,"========================= 价格 = " +Double.valueOf(ca));
  116. break;
  117. }
  118. case MSG_CREATE_ROLE_LOG: {
  119. HashMap<String, Object> createRoleLogObj = (HashMap<String, Object>) msg.obj;
  120. //String roleId = (String) createRoleLogObj.get("roleId");
  121. //String roleName = (String) createRoleLogObj.get("roleName");
  122. //String serverId = (String) createRoleLogObj.get("serverId");
  123. //String serverName = (String) createRoleLogObj.get("serverName");
  124. //int level = (int) createRoleLogObj.get("level");
  125. //String spare = (String) createRoleLogObj.get("spare");
  126. Log.i(LOG, "创建角色");
  127. String roleInfo = (String) createRoleLogObj.get("roleInfo");
  128. GameRoleInfo gameRoleInfo = new Gson().fromJson(roleInfo,GameRoleInfo.class);
  129. SendRoleInfoByGameRoleInfo(0,gameRoleInfo);
  130. break;
  131. }
  132. case MSG_LOGIN_ROLE_LOG: {
  133. HashMap<String, Object> createRoleLogObj = (HashMap<String, Object>) msg.obj;
  134. //String roleId = (String) createRoleLogObj.get("roleId");
  135. //String roleName = (String) createRoleLogObj.get("roleName");
  136. //String serverId = (String) createRoleLogObj.get("serverId");
  137. //String serverName = (String) createRoleLogObj.get("serverName");
  138. //int level = (int) createRoleLogObj.get("level");
  139. //String spare = (String) createRoleLogObj.get("spare");
  140. Log.i(LOG, "调用登录角色信息");
  141. String roleInfo = (String) createRoleLogObj.get("roleInfo");
  142. GameRoleInfo gameRoleInfo = new Gson().fromJson(roleInfo,GameRoleInfo.class);
  143. SendRoleInfoByGameRoleInfo(1,gameRoleInfo);
  144. // sdkInstance.loginRole(roleId, roleName, serverId, serverName, level, spare);
  145. break;
  146. }
  147. case MSG_LEVEL_LOG: {
  148. HashMap<String, Object> levelLogObj = (HashMap<String, Object>) msg.obj;
  149. //String roleId = (String) levelLogObj.get("roleId");
  150. //String roleName = (String) levelLogObj.get("roleName");
  151. //String serverId = (String) levelLogObj.get("serverId");
  152. //String serverName = (String) levelLogObj.get("serverName");
  153. //int level = (int) levelLogObj.get("level");
  154. //String spare = (String) levelLogObj.get("spare");
  155. Log.i(LOG, "调用角色升级上报");
  156. String roleInfo = (String) levelLogObj.get("roleInfo");
  157. GameRoleInfo gameRoleInfo = new Gson().fromJson(roleInfo,GameRoleInfo.class);
  158. SendRoleInfoByGameRoleInfo(1,gameRoleInfo);
  159. // sdkInstance.levelLog(roleId, roleName, serverId, serverName, level, spare);
  160. break;
  161. }
  162. case MSG_REPORT_ACTION: {
  163. HashMap<String, Object> reportActionObj = (HashMap<String, Object>) msg.obj;
  164. if (reportActionObj.containsKey("event"))
  165. {
  166. Log.i(LOG, "MSG_REPORT_ACTION");
  167. // sdkInstance.actionReport((String)reportActionObj.get("event"), reportActionObj);
  168. }
  169. break;
  170. }
  171. case MSG_CAN_ENTER_SERVER_JUDGE: {
  172. HashMap<String, Object> infoObj = (HashMap<String, Object>) msg.obj;
  173. String serverId = (String) infoObj.get("serverId");
  174. String serverName = (String) infoObj.get("serverName");
  175. Log.i(LOG, "MSG_CAN_ENTER_SERVER_JUDGE");
  176. // sdkInstance.serverCanEnter(serverId, serverName, mServerCanEnterCallBack);
  177. callUnityFunc("OnCanEnterServerJudge", "" + (true ? 1 : 0));
  178. break;
  179. }
  180. case MSG_EXIT:
  181. Log.i(LOG, "退出游戏");
  182. MySdkApi.exitApp(this);
  183. // sdkInstance.exit(mExitCallBack);
  184. break;
  185. }
  186. return false;
  187. }
  188. private void SendRoleInfo(int type,String serverID,String serverName,String roleName,String roleID,int roleLv,
  189. int vipLv,String creatTime,String roleF,String roleMapLv,String roleRechargeAmount)
  190. {
  191. GameRoleBean roleBean = new GameRoleBean();
  192. roleBean.setGameZoneId(serverID);//区服id
  193. roleBean.setGameZoneName(serverName);//区服名称
  194. roleBean.setRoleId(roleID);//角色id
  195. roleBean.setRoleName(roleName);//角色名称
  196. roleBean.setRoleLevel(roleLv);//角色等级
  197. roleBean.setVipLevel(vipLv);//vip等级
  198. roleBean.setRoleCTime(creatTime);//角色的创建时间,长度10位,单位秒
  199. roleBean.setRoleCE(roleF);//角色战力(如果没有就传“-1”)
  200. roleBean.setRoleStage(roleMapLv);//角色关卡(如果没有就传“-1”)
  201. roleBean.setRoleRechargeAmount(roleRechargeAmount);//角色累计充值(美元)(如果没有就传“-1”)
  202. //0=创建角色时;
  203. //1=进入区服时;
  204. //2=角色升级时;
  205. MySdkApi.submitRoleData(type,roleBean);
  206. }
  207. private void SendRoleInfoByJSONStr(int type,String userInfo)
  208. {
  209. GameRoleBean roleBean = new Gson().fromJson(userInfo,GameRoleBean.class);
  210. MySdkApi.submitRoleData(type,roleBean);
  211. }
  212. private void SendRoleInfoByGameRoleInfo(int type,GameRoleInfo gameRoleInfo)
  213. {
  214. SendRoleInfo(type,String.valueOf(gameRoleInfo.serverId),gameRoleInfo.serverName,gameRoleInfo.roleName,gameRoleInfo.roleId,
  215. gameRoleInfo.roleLv,gameRoleInfo.vipLv,
  216. String.valueOf(gameRoleInfo.roleCreateTime),String.valueOf(gameRoleInfo.fightPower),"-1","-1");
  217. }
  218. /**
  219. * 支付
  220. * @param act
  221. * @param ticketId 计费点
  222. * @param pro_name 商品名
  223. * @param orderNo 订单号
  224. * @param callback_url 支付回调地址
  225. * @param price 金额
  226. */
  227. public void paySDK(final Activity act, String ticketId,String pro_name,String orderNo,String callback_url,String price,OrderExtraInfo extraInfo){
  228. OrderInfo orderinfo = new OrderInfo();
  229. orderinfo.setAmount(price);//金额(美元)
  230. orderinfo.setFeepoint(ticketId);//计费点
  231. orderinfo.setProductname(pro_name);//商品名
  232. orderinfo.setTransactionId(orderNo);//订单号
  233. orderinfo.setPayurl(callback_url);//支付回调地址
  234. JSONObject data = new JSONObject();//游戏自定义回传参数
  235. try {
  236. data.put("serverId",extraInfo.serverId);
  237. data.put("subPlatform",extraInfo.subPlatform);
  238. data.put("platform",extraInfo.platform);
  239. }catch (Exception e){
  240. e.printStackTrace();
  241. }
  242. orderinfo.setExtraInfo(data);//自定义参数传json对象
  243. MySdkApi.startPay(act, orderinfo, new PayCallBack() {
  244. @Override
  245. public void payFinish() {
  246. //支付完成,以服务端通知为准
  247. System.out.println("payFinish--------");
  248. callUnityFunc("OnPaySuccess", "");
  249. }
  250. @Override
  251. public void payFail(final String msg) {
  252. //支付失败
  253. System.out.println("payFail-----msg--->"+msg);
  254. callUnityFunc("OnPayFailed", "");
  255. }
  256. });
  257. }
  258. public void init(String gameObjectName)
  259. {
  260. Log.e(LOG,"---------------------"+ gameObjectName);
  261. this.gameObjectName = gameObjectName;
  262. if (mInited)
  263. {
  264. callUnityFunc("OnInitSuccess", "");
  265. return;
  266. }
  267. String gameId = "";
  268. String appKey = "";
  269. String gameVersion = "";
  270. try {
  271. PackageManager packageManager = this.getPackageManager();
  272. ApplicationInfo appInfo = packageManager.getApplicationInfo(this.getPackageName(), PackageManager.GET_META_DATA);
  273. Bundle metaData = appInfo.metaData;
  274. gameId = String.valueOf(metaData.getInt("YouYi_GameId"));
  275. appKey = metaData.getString("YouYi_AppKey");
  276. PackageInfo packageInfo = packageManager.getPackageInfo(this.getPackageName(), 0);
  277. if (metaData.containsKey("LEBIAN_VERCODE"))
  278. {
  279. int lebianVersion = metaData.getInt("LEBIAN_VERCODE");
  280. int version = packageInfo.versionCode;
  281. if (lebianVersion > version)
  282. {
  283. int major = lebianVersion / 1000000;
  284. lebianVersion = lebianVersion - major * 1000000;
  285. int minor = lebianVersion / 10000;
  286. lebianVersion = lebianVersion - minor * 10000;
  287. int release = lebianVersion / 100;
  288. lebianVersion = lebianVersion - release * 100;
  289. int patch = lebianVersion;
  290. gameVersion = major + "." + minor + "." + release + "." + patch;
  291. }
  292. else
  293. {
  294. gameVersion = packageInfo.versionName;
  295. }
  296. }
  297. else
  298. {
  299. gameVersion = packageInfo.versionName;
  300. }
  301. } catch (Exception e) {
  302. e.printStackTrace();
  303. callUnityFunc("OnInitFailed", "");
  304. return;
  305. }
  306. Message msg = mHandler.obtainMessage(MSG_INIT);
  307. HashMap<String, String> mapObj = new HashMap<>();
  308. mapObj.put("gameId", gameId);
  309. mapObj.put("appKey", appKey);
  310. mapObj.put("gameVersion", gameVersion);
  311. msg.obj = mapObj;
  312. msg.sendToTarget();
  313. }
  314. public void login()
  315. {
  316. mHandler.sendEmptyMessage(MSG_LOGIN);
  317. }
  318. public void switchAccountLogin()
  319. {
  320. mHandler.sendEmptyMessage(MSG_SWITCH_ACCOUNT);
  321. }
  322. public void pay(String roleInfo, String orderInfo)
  323. {
  324. Message msg = mHandler.obtainMessage(MSG_PAY);
  325. HashMap<String, Object> mapObj = new HashMap<>();
  326. mapObj.put("roleInfo", roleInfo);
  327. mapObj.put("orderInfo", orderInfo);
  328. msg.obj = mapObj;
  329. msg.sendToTarget();
  330. }
  331. public void createRoleLog(String roleInfo)
  332. {
  333. Message msg = mHandler.obtainMessage(MSG_CREATE_ROLE_LOG);
  334. HashMap<String, Object> mapObj = new HashMap<>();
  335. mapObj.put("roleInfo", roleInfo);
  336. msg.obj = mapObj;
  337. msg.sendToTarget();
  338. }
  339. public void loginRoleLog(String roleInfo)
  340. {
  341. Message msg = mHandler.obtainMessage(MSG_LOGIN_ROLE_LOG);
  342. HashMap<String, Object> mapObj = new HashMap<>();
  343. mapObj.put("roleId", roleInfo);
  344. msg.obj = mapObj;
  345. msg.sendToTarget();
  346. }
  347. public void levelLog(String roleInfo)
  348. {
  349. Message msg = mHandler.obtainMessage(MSG_LEVEL_LOG);
  350. HashMap<String, Object> mapObj = new HashMap<>();
  351. mapObj.put("roleId", roleInfo);
  352. msg.obj = mapObj;
  353. msg.sendToTarget();
  354. }
  355. public void reportAction(HashMap<String, Object> params)
  356. {
  357. Message msg = mHandler.obtainMessage(MSG_REPORT_ACTION);
  358. msg.obj = params;
  359. msg.sendToTarget();
  360. }
  361. public void canEnterServerJudge(String serverId, String serverName)
  362. {
  363. Message msg = mHandler.obtainMessage(MSG_CAN_ENTER_SERVER_JUDGE);
  364. HashMap<String, Object> mapObj = new HashMap<>();
  365. mapObj.put("serverId", serverId);
  366. mapObj.put("serverName", serverName);
  367. msg.obj = mapObj;
  368. msg.sendToTarget();
  369. }
  370. public void exit()
  371. {
  372. mHandler.sendEmptyMessage(MSG_EXIT);
  373. }
  374. // Setup activity layout
  375. @Override protected void onCreate(Bundle savedInstanceState)
  376. {
  377. super.onCreate(savedInstanceState);
  378. int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE);
  379. if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
  380. ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, PERMISSION_REQUEST_CODE);
  381. } else {
  382. Log.e("00000", "有权限了");
  383. }
  384. try {
  385. PackageInfo info = getPackageManager().getPackageInfo( getPackageName(), PackageManager.GET_SIGNATURES);
  386. for (Signature signature : info.signatures) {
  387. MessageDigest md = MessageDigest.getInstance("SHA");
  388. md.update(signature.toByteArray());
  389. String KeyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
  390. Log.d("KeyHash:", "KeyHash:"+KeyHash);//两次获取的不一样 此处取第一个的值
  391. // Toast.makeText(this, "FaceBook HashKey:"+KeyHash, Toast.LENGTH_SHORT).show();
  392. }
  393. }
  394. catch (PackageManager.NameNotFoundException e) { }
  395. catch (NoSuchAlgorithmException e) { }
  396. // values-zh-rTW
  397. Resources resources = getResources();
  398. Configuration config = resources.getConfiguration();
  399. config.locale = Locale.TRADITIONAL_CHINESE;
  400. resources.updateConfiguration(config, resources.getDisplayMetrics());
  401. // init SDK
  402. MySdkApi.initSDK(this, zt_cpid, zt_gameid, zt_gameKey, new InitCallBack() {
  403. @Override
  404. public void initSuccess(boolean isSuccess, String msg) {
  405. mInited = isSuccess;
  406. if (isSuccess) {
  407. Log.i(LOG, "onInitFinished success");
  408. } else {
  409. Log.i(LOG, "onInitFinished fail" + msg);
  410. }
  411. }
  412. });
  413. MySdkApi.onCreate(this,savedInstanceState);
  414. }
  415. // Quit Unity
  416. @Override protected void onDestroy ()
  417. {
  418. super.onDestroy();
  419. MySdkApi.onDestory();
  420. }
  421. // Pause Unity
  422. @Override protected void onPause()
  423. {
  424. super.onPause();
  425. MySdkApi.onPause();
  426. }
  427. // Resume Unity
  428. @Override protected void onResume()
  429. {
  430. super.onResume();
  431. MySdkApi.onResume();
  432. }
  433. @Override protected void onStart()
  434. {
  435. super.onStart();
  436. }
  437. @Override protected void onStop()
  438. {
  439. super.onStop();
  440. MySdkApi.onStop();
  441. }
  442. @Override protected void onActivityResult(int requestCode, int resultCode, Intent data)
  443. {
  444. super.onActivityResult(requestCode, resultCode, data);
  445. MySdkApi.onActivityResult(requestCode, resultCode, data);
  446. }
  447. @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
  448. {
  449. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  450. if (requestCode == PERMISSION_REQUEST_CODE) {
  451. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  452. // 权限被用户同意,可以执行相关操作
  453. // doSomethingWithPhoneState();
  454. Log.e("00000", "有权限了");
  455. } else {
  456. // 权限被用户拒绝,需要提示用户或者引导用户去设置页面开启权限
  457. // 可以选择引导用户到应用的设置页面
  458. Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
  459. Uri uri = Uri.fromParts("package", getPackageName(), null);
  460. intent.setData(uri);
  461. startActivity(intent);
  462. }
  463. }
  464. MySdkApi.onRequestPermissionsResult(this,requestCode, permissions, grantResults);
  465. }
  466. /**
  467. * sdk login callback
  468. */
  469. private class MyLoginCallback implements LoginCallBack {
  470. @Override
  471. public void LogoutSuccess() {
  472. MainActivity.this.runOnUiThread(new Runnable() {
  473. @Override
  474. public void run() {
  475. callUnityFunc("OnLogoutSuccess", "");
  476. }
  477. });
  478. }
  479. @Override
  480. public void loginSuccess(String uid, String token, String acctype, String name) {
  481. //Uid-用户id;token-验证令牌;acctype-账号类型;name-账号
  482. callUnityFunc("SetUserId", uid);
  483. callUnityFunc("OnLoginSuccess", token);
  484. }
  485. @Override
  486. public void loginFail(String msg) {
  487. System.out.println("loginFail:"+msg);
  488. }
  489. }
  490. private class MyPayCallback implements PayCallBack {
  491. @Override
  492. public void payFinish() {
  493. }
  494. @Override
  495. public void payFail(String s) {
  496. }
  497. }
  498. public class OrderExtraInfo
  499. {
  500. public int serverId;
  501. public String platform;
  502. public String subPlatform;
  503. }
  504. public class GameOrderInfo
  505. {
  506. public String cpOrderId;
  507. public String goodsId;
  508. public String goodsName;
  509. public String goodsDesc;
  510. public String orderAmount;
  511. public String goodsNum;
  512. public String goinNum;
  513. public String cpExtra;
  514. public String callbackUrl;
  515. }
  516. public class GameRoleInfo
  517. {
  518. // 必填参数
  519. public String openId;
  520. public int serverId;
  521. public String serverName;
  522. public String roleId;
  523. public String roleName;
  524. public int roleLv;
  525. public long roleCreateTime;
  526. public long roleUpLvTime;
  527. // 非必填参数
  528. public int vipLv;
  529. public int gender;
  530. public int jobId;
  531. public String jobName;
  532. public long guildId;
  533. public String guildName;
  534. public int fightPower;
  535. public String balance;
  536. // 其它参数
  537. public long lastLogoutTime;
  538. public long loginTime;
  539. public long openServerTime;
  540. }
  541. }