package com.secondworld.univeralsdk; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import com.snowfish.cn.ganga.helper.SFOnlineHelper; import com.snowfish.cn.ganga.helper.SFOnlineInitListener; import com.snowfish.cn.ganga.helper.SFOnlineLoginListener; import com.snowfish.cn.ganga.helper.SFOnlinePayResultListener; import com.snowfish.cn.ganga.helper.SFOnlineUser; import org.json.JSONException; import org.json.JSONObject; import java.util.HashMap; import java.util.Map; /** * Created by Administrator on 2018/9/18 0018. */ public class YJPlatformUtil { private static SFOnlineUser USER = null; private final static String PAY_CALLBACK_URL = ""; private final static String LOGIN_CHECK_URL = ""; private static final String TAG = "YJPlatformUtil"; private static YJPlatformUtil m_Instance; public static YJPlatformUtil getInstance() { if (m_Instance == null) { m_Instance = new YJPlatformUtil(); } return m_Instance; } private Map m_Message = new HashMap<>(); public boolean payProcessing = false; public void onCreate(final Activity activity, Bundle savedInstanceState) { SFOnlineHelper.onCreate(activity, new SFOnlineInitListener() { @Override public void onResponse(String s, String s1) { m_Message.clear(); if (s.equalsIgnoreCase("success")) { m_Message.put("code", CodeA2U.FreePlatformInitOk); UniversalUtil.sendMessageToUnity(m_Message); } else if (s.equalsIgnoreCase("fail")) { m_Message.put("code", CodeA2U.FreePlatformInitFail); UniversalUtil.sendMessageToUnity(m_Message); } } }); SFOnlineHelper.setLoginListener(activity, new SFOnlineLoginListener() { @Override public void onLogout(Object o) { m_Message.clear(); //需要把游戏切换回登陆前的场景,并重新弹出登录框等操作 m_Message.put("code", CodeA2U.FreePlatformLogoutOk); UniversalUtil.sendMessageToUnity(m_Message); } @Override public void onLoginSuccess(SFOnlineUser sfOnlineUser, Object o) { m_Message.clear(); USER = sfOnlineUser; //根据回调获取用户信息 String timestamp = USER.getToken(); String token = USER.getToken(); String userId = USER.getChannelUserId(); try { JSONObject _info = new JSONObject(); _info.put("account", userId); _info.put("token", token); _info.put("timeStamp", timestamp); _info.put("account_id", userId); _info.put("yjSdkId", USER.getChannelId()); _info.put("yjAppId", USER.getProductCode()); m_Message.put("code", CodeA2U.FreePlatformLoginOk); m_Message.put("info", _info); UniversalUtil.sendMessageToUnity(m_Message); } catch (JSONException e) { e.printStackTrace(); } } @Override public void onLoginFailed(String s, Object o) { m_Message.clear(); m_Message.put("code", CodeA2U.FreePlatformLoginFail); UniversalUtil.sendMessageToUnity(m_Message); } }); } public void login(final Activity activity) { String _appid = UniversalUtil.getMetaString(activity, "yj_appid"); if (_appid.equals("yybgame")) { SharedPreferences _sp = activity.getPreferences(Context.MODE_PRIVATE); String _loginType = _sp.getString(StaticDefine.LS_KEY_TENCENT_LOGINPARAM, ""); if(_loginType.length() > 0) { SFOnlineHelper.login(activity, _loginType); } } else { SFOnlineHelper.login(activity, "Login"); } } public void loginTencent(final Activity activity, String param) { SFOnlineHelper.login(activity, param); SharedPreferences _sp = activity.getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor _editor = _sp.edit(); _editor.putString(StaticDefine.LS_KEY_TENCENT_LOGINPARAM, param); _editor.apply(); } public void logout(final Activity activity) { SFOnlineHelper.logout(activity, "LoginOut"); } public void charge(final Activity activity, String productName, float price, String extData) { SFOnlineHelper.charge(activity, productName, (int) (price * 100), 1, extData, PAY_CALLBACK_URL, new SFOnlinePayResultListener() { @Override public void onFailed(String s) { m_Message.clear(); //根据回调获取支付订单信息 LogUtil.i(TAG, "Pay Fail Info: " + s); m_Message.put("code", CodeA2U.FreePlatformPayFail); UniversalUtil.sendMessageToUnity(m_Message); payProcessing = false; } @Override public void onSuccess(String s) { m_Message.clear(); //根据回调获取支付订单信息 LogUtil.i(TAG, "Pay Success Info: " + s); m_Message.put("code", CodeA2U.FreePlatformPayOk); UniversalUtil.sendMessageToUnity(m_Message); payProcessing = false; } @Override public void onOderNo(String s) { LogUtil.i(TAG, "Pay Order No: " + s); } }); payProcessing = true; } public void payExtend(final Activity activity, String productName, String productID, float price, String extData) { SFOnlineHelper.payExtend(activity, (int) (price * 100), productName, productID, extData, 1, "", PAY_CALLBACK_URL, new SFOnlinePayResultListener() { @Override public void onFailed(String s) { m_Message.clear(); //根据回调获取支付订单信息 LogUtil.i(TAG, "Pay Fail Info: " + s); m_Message.put("code", CodeA2U.FreePlatformPayFail); UniversalUtil.sendMessageToUnity(m_Message); payProcessing = false; } @Override public void onSuccess(String s) { m_Message.clear(); //根据回调获取支付订单信息 LogUtil.i(TAG, "Pay Success Info: " + s); m_Message.put("code", CodeA2U.FreePlatformPayOk); UniversalUtil.sendMessageToUnity(m_Message); payProcessing = false; } @Override public void onOderNo(String s) { LogUtil.i(TAG, "Pay Order No: " + s); } }); payProcessing = true; } public void pay(final Activity activity, String productName, String productID, float price, String extData) { SFOnlineHelper.pay(activity, (int) (price * 100), productName, 1, extData, PAY_CALLBACK_URL, new SFOnlinePayResultListener() { @Override public void onFailed(String s) { m_Message.clear(); //根据回调获取支付订单信息 LogUtil.i(TAG, "Pay Fail Info: " + s); m_Message.put("code", CodeA2U.FreePlatformPayFail); UniversalUtil.sendMessageToUnity(m_Message); payProcessing = false; } @Override public void onSuccess(String s) { m_Message.clear(); //根据回调获取支付订单信息 LogUtil.i(TAG, "Pay Success Info: " + s); m_Message.put("code", CodeA2U.FreePlatformPayOk); UniversalUtil.sendMessageToUnity(m_Message); payProcessing = false; } @Override public void onOderNo(String s) { LogUtil.i(TAG, "Pay Order No: " + s); } }); payProcessing = true; } public void createRole(final Activity activity, String serverID, String serverName, String roleID, String roleName, String roleLevel, String FamilyName, String createTime, String vipLevel, String surplusMoney) { SFOnlineHelper.setRoleData(activity, roleID, roleName, roleLevel, "1", "默认分区"); String _info = createGameData(serverID, serverName, roleID, roleName, roleLevel, FamilyName, createTime, "", vipLevel, surplusMoney); SFOnlineHelper.setData(activity, "createrole", _info); // 创建新角色时调用 必接 } public void enterWorld(Activity activity, String serverID, String serverName, String roleID, String roleName, String roleLevel, String FamilyName, String vipLevel, String surplusMoney) { SFOnlineHelper.setRoleData(activity, roleID, roleName, roleLevel, "1", "默认分区"); String _info = createGameData(serverID, serverName, roleID, roleName, roleLevel, FamilyName, "", "", vipLevel, surplusMoney); SFOnlineHelper.setData(activity, "enterServer", _info); // 创建新角色时调用 必接 } public void levelUp(final Activity activity, String serverID, String serverName, String roleID, String roleName, String roleLevel, String FamilyName, String createTime, String levelUpTime, String vipLevel, String surplusMoney) { String _info = createGameData(serverID, serverName, roleID, roleName, roleLevel, FamilyName, createTime, levelUpTime, vipLevel, surplusMoney); SFOnlineHelper.setData(activity, "levelup", _info); // 创建新角色时调用 必接 } private String createGameData(String serverID, String serverName, String roleID, String roleName, String roleLevel, String FamilyName, String createTime, String levelUpTime, String vipLevel, String surplusMoney) { try { JSONObject roleInfo = new JSONObject(); roleInfo.put("roleId", roleID); //当前登录的玩家角色ID,必须为数字 roleInfo.put("roleName", roleName); //当前登录的玩家角色名,不能为空,不能为null roleInfo.put("roleLevel", roleLevel); //当前登录的玩家角色等级,必须为数字,且不能为0,若无,传入1 roleInfo.put("zoneId", serverID); //当前登录的游戏区服ID,必须为数字,且不能为0,若无,传入1 roleInfo.put("zoneName", serverName);//当前登录的游戏区服名称,不能为空,不能为null roleInfo.put("balance", surplusMoney); //用户游戏币余额,必须为数字,若无,传入0 roleInfo.put("vip", vipLevel); //当前用户VIP等级,必须为数字,若无,传入1 roleInfo.put("partyName", FamilyName);//当前角色所属帮派,不能为空,不能为null,若无,传入“无帮派” if (createTime.length() > 0) { roleInfo.put("roleCTime", createTime); //单位为秒,创建角色的时间 } if (levelUpTime.length() > 0) { roleInfo.put("roleLevelMTime", levelUpTime); //单位为秒,角色等级变化时间 } return roleInfo.toString(); } catch (JSONException ex) { ex.printStackTrace(); } return null; } public void SendRegisterEvent() { } }