| package com.secondworld.univeralsdk; | 
|   | 
| import android.app.Activity; | 
| import android.os.Handler; | 
| import android.os.Message; | 
| import android.util.Log; | 
|   | 
| import com.mgbase.utils.BaseAnchorImpl; | 
| import com.mgbase.utils.PreferenceUtils; | 
| import com.mgbase.utils.StringUtils; | 
| import com.mgpay.utils.MGPayAnchor; | 
| import com.reyun.tracking.sdk.Tracking; | 
| //import com.ss.android.common.lib.EventUtils; | 
| import com.xy.xypay.bean.LoginResult; | 
| import com.xy.xypay.bean.LogoutResult; | 
| import com.xy.xypay.bean.PayArgsCheckResult; | 
| import com.xy.xypay.bean.XPayArg; | 
| import com.xy.xypay.inters.XYLoginCallback; | 
| import com.xy.xypay.inters.XYLogoutCallback; | 
| import com.xy.xypay.inters.XYPayCallback; | 
| import com.xy.xypay.utils.XYPaySDK; | 
|   | 
| import org.json.JSONException; | 
| import org.json.JSONObject; | 
|   | 
| import java.util.HashMap; | 
| import java.util.Map; | 
|   | 
| /** | 
|  * Created by Administrator on 2018/9/3 0003. | 
|  */ | 
|   | 
| public class KYPlatformUtil | 
| { | 
|     private static final String TAG = "KYPlatformUtil"; | 
|   | 
|     private boolean m_Init = false; | 
|   | 
|     private static KYPlatformUtil s_Instance; | 
|   | 
|     public static KYPlatformUtil getInstance() | 
|     { | 
|         if (s_Instance == null) | 
|         { | 
|             s_Instance = new KYPlatformUtil(); | 
|         } | 
|         return s_Instance; | 
|     } | 
|   | 
|     public boolean payProcessing = false; | 
|   | 
|     private Map<String, Object> m_Message = new HashMap<>(); | 
|   | 
|     private static final int CALL_QUIT = 1;//退出游戏 | 
|     private static final int CALL_RESUME = 2;//返回按键处理 | 
|   | 
|     public Handler handler = new Handler(new Handler.Callback() | 
|     { | 
|         @Override | 
|         public boolean handleMessage(Message msg) | 
|         { | 
|             switch (msg.what) | 
|             { | 
|                 case CALL_QUIT: | 
|                     m_Message.clear(); | 
|                     m_Message.put("code", CodeA2U.FreePlatformLogoutOk); | 
|                     UniversalUtil.sendMessageToUnity(m_Message); | 
|                     //悬浮球里切换帐号时退出游戏这里处理 | 
|                     XYPaySDK.hideFloatWindow(mainActivity); | 
|   | 
|                     break; | 
|                 case CALL_RESUME: | 
|                     //返回处理 | 
|                     break; | 
|                 default: | 
|                     break; | 
|   | 
|             } | 
|             return false; | 
|         } | 
|     }); | 
|   | 
|     private Activity mainActivity; | 
|   | 
|     public void init(final Activity activity) | 
|     { | 
|         if (m_Init) | 
|         { | 
|             return; | 
|         } | 
|         mainActivity = activity; | 
|   | 
|         XYPaySDK.init(activity.getApplication(), new BaseAnchorImpl(), new MGPayAnchor()); | 
|         XYPaySDK.setHandler(handler); | 
|     } | 
|   | 
|     private String m_AccountID; | 
|   | 
|     public void login() | 
|     { | 
|         XYPaySDK.login(mainActivity, new XYLoginCallback() | 
|         { | 
|             @Override | 
|             public void onLogin(LoginResult loginResult) | 
|             { | 
|                 //登录成功 | 
|                 if (loginResult.getCode() == LoginResult.LOGIN_CODE_SUCCESS) | 
|                 { | 
|                     //Toast.makeText(mainActivity,"登录成功:"+loginResult.isBindPhone(),Toast.LENGTH_LONG).show(); | 
|                     String _uid = PreferenceUtils.getUid(mainActivity); | 
|                     String _token = PreferenceUtils.getToken(mainActivity);// | 
|                     String _appId = PreferenceUtils.getAppid(mainActivity); | 
|   | 
|                     m_AccountID = _uid; | 
|   | 
|                     try | 
|                     { | 
|                         JSONObject _info = new JSONObject(); | 
|                         _info.put("account", m_AccountID); | 
|                         _info.put("token", _token); | 
|                         _info.put("account_id", m_AccountID); | 
|                         _info.put("appId", _appId); | 
|                         m_Message.put("code", CodeA2U.FreePlatformLoginOk); | 
|                         m_Message.put("info", _info); | 
|                         UniversalUtil.sendMessageToUnity(m_Message); | 
|                     } catch (JSONException e) | 
|                     { | 
|                         e.printStackTrace(); | 
|                     } | 
|                 } | 
|                 else if (loginResult.getCode() == LoginResult.LOGIN_CODE_APPID_NOT_FOUND) | 
|                 { | 
|                     m_Message.clear(); | 
|                     m_Message.put("code", CodeA2U.FreePlatformLoginFail); | 
|                     UniversalUtil.sendMessageToUnity(m_Message); | 
|                 } | 
|                 else if (loginResult.getCode() == LoginResult.LOGIN_CODE_FAILED) | 
|                 { | 
|                     // Toast.makeText(mainActivity,"登录失败",Toast.LENGTH_LONG).show(); | 
|                     PreferenceUtils.setHasChangeAccount(mainActivity, "Y"); | 
|                     login(); | 
|                 } | 
|                 else if (loginResult.getCode() == LoginResult.LOGIN_CODE_CANCEL) | 
|                 { | 
|                     m_Message.clear(); | 
|                     m_Message.put("code", CodeA2U.FreePlatformLoginFail); | 
|                     UniversalUtil.sendMessageToUnity(m_Message); | 
|                 } | 
|             } | 
|         }); | 
|     } | 
|   | 
|     // public void logout(final Activity activity) { } | 
|   | 
|     public void pay(String productId, | 
|                     String productName, | 
|                     String money, | 
|                     String roleID, | 
|                     String roleName, | 
|                     String orderId, | 
|                     String extraData, | 
|                     String serverID, | 
|                     String notifyurl) | 
|     { | 
|         XPayArg payArg = new XPayArg(); | 
|         payArg.APP_USER_ID = roleID; | 
|         payArg.NOTIFY_URI = notifyurl; | 
|         String amount = money; | 
|         if (StringUtils.isEmpty(amount)) | 
|         { | 
|             payArg.AMOUNT = "0.01"; | 
|         } | 
|         else | 
|         { | 
|             payArg.AMOUNT = amount; | 
|         } | 
|         payArg.APP_EXT1 = extraData; | 
|         payArg.APP_NAME = UniversalUtil.getAppName(mainActivity); | 
|         payArg.APP_ORDER_ID = orderId; | 
|         payArg.APP_USER_NAME = roleName; | 
|         payArg.PRODUCT_ID = productId; | 
|         payArg.OPEN_UID = PreferenceUtils.getUid(mainActivity); | 
|         payArg.SID = serverID; | 
|         payArg.PRODUCT_NAME = productName; | 
|         XYPaySDK.pay(mainActivity, payArg, new XYPayCallback() | 
|         { | 
|             @Override | 
|             public void onPayFinished(int status) | 
|             { | 
|                 Log.i(TAG, "支付回调结果: " + status); | 
|             } | 
|   | 
|             //检测参数是否正确 | 
|             public void onStart(PayArgsCheckResult result) | 
|             { | 
|                 switch (result.getCode()) | 
|                 { | 
|                     case PayArgsCheckResult.CHECK_RESULT_OK: | 
|                         break; | 
|                     case PayArgsCheckResult.NOT_INIT: | 
|                         Log.i(TAG, "未调用XYPaySDK.init()方法"); | 
|                         break; | 
|                     case PayArgsCheckResult.CHECK_RESULT_NULL: | 
|                         Log.i(TAG, "支付参数未配置"); | 
|                         break; | 
|                     case PayArgsCheckResult.CHECK_RESULT_PAY_CALLBACK_NULL: | 
|                         Log.i(TAG, "支付回调函数未配置"); | 
|                         break; | 
|                     case PayArgsCheckResult.CHECK_RESULT_PAY_INVALID_AMOUNT: | 
|                         Log.i(TAG, "金额无效"); | 
|                         break; | 
|                     case PayArgsCheckResult.CHECK_RESULT_PAY_INVALID_APP_ID: | 
|                         Log.i(TAG, "app_id无效,请检查AndroidManifest.xml文件"); | 
|                         break; | 
|                     case PayArgsCheckResult.CHECK_RESULT_PAY_INVALID_APP_NAME: | 
|                         Log.i(TAG, "应用名称无效"); | 
|                         break; | 
|                     case PayArgsCheckResult.CHECK_RESULT_PAY_INVALID_APP_USER_ID: | 
|                         Log.i(TAG, "用户编号(角色)为空"); | 
|                         break; | 
|                     case PayArgsCheckResult.CHECK_RESULT_PAY_INVALID_APP_USER_NAME: | 
|                         Log.i(TAG, "角色名为空"); | 
|                         break; | 
|                     case PayArgsCheckResult.CHECK_RESULT_PAY_INVALID_NOTIFY_URI: | 
|                         Log.i(TAG, "通知服务器地址为空"); | 
|                         break; | 
|                     case PayArgsCheckResult.CHECK_RESULT_PAY_INVALID_OPEN_UID: | 
|                         Log.i(TAG, "用户open_uid为空"); | 
|                         break; | 
|                     case PayArgsCheckResult.CHECK_RESULT_PAY_INVALID_ORDER_ID: | 
|                         Log.i(TAG, "订单号无效"); | 
|                         break; | 
|                     case PayArgsCheckResult.CHECK_RESULT_PAY_INVALID_PRODUCT_ID: | 
|                         Log.i(TAG, "产品号为空"); | 
|                         break; | 
|                     case PayArgsCheckResult.CHECK_RESULT_PAY_INVALID_PRODUCT_NAME: | 
|                         Log.i(TAG, "产品名称为空"); | 
|                         break; | 
|                     case PayArgsCheckResult.CHECK_RESULT_PAY_INVALID_RESOURCE_ID: | 
|                         Log.i(TAG, "未登录或APP_KEY无效"); | 
|                         break; | 
|                 } | 
|             } | 
|         }); | 
|     } | 
|   | 
|     public void logout() | 
|     { | 
|         XYPaySDK.logout(mainActivity, new XYLogoutCallback() | 
|         { | 
|             @Override | 
|   | 
|             public void onLogout(LogoutResult logoutResult) | 
|             { | 
|                 switch (logoutResult.getCode()){ | 
|                     case LogoutResult.LOGOUT_CODE_OUT: | 
|                         //Toast.makeText(MyActivity.this,"退出游戏",Toast.LENGTH_LONG).show(); | 
|                         android.os.Process.killProcess(android.os.Process.myPid()); | 
|                         break; | 
|                     case LogoutResult.LOGOUT_CODE_BBS: | 
|                        // Toast.makeText(MyActivity.this,"进入论坛",Toast.LENGTH_LONG).show(); | 
|                         break; | 
|                 } | 
|             } | 
|         }); | 
|     } | 
|   | 
|     public void switchAccount() | 
|     { | 
|         XYPaySDK.changAccount(mainActivity, new XYLoginCallback() | 
|         { | 
|             @Override | 
|             public void onLogin(LoginResult loginResult) | 
|             { | 
|                 //登录成功 | 
|                 if (loginResult.getCode() == LoginResult.LOGIN_CODE_SUCCESS) | 
|                 { | 
|                     String _uid = PreferenceUtils.getUid(mainActivity); | 
|                     String _token = PreferenceUtils.getToken(mainActivity);// | 
|                     String _appId = PreferenceUtils.getAppid(mainActivity); | 
|                     m_AccountID = _uid; | 
|                     try | 
|                     { | 
|                         JSONObject _info = new JSONObject(); | 
|                         _info.put("account", m_AccountID); | 
|                         _info.put("token", _token); | 
|                         _info.put("account_id", m_AccountID); | 
|                         _info.put("appId", _appId); | 
|                         m_Message.put("code", CodeA2U.FreePlatformLoginOk); | 
|                         m_Message.put("info", _info); | 
|                         UniversalUtil.sendMessageToUnity(m_Message); | 
|                     } catch (JSONException e) | 
|                     { | 
|                         e.printStackTrace(); | 
|                     } | 
|                     //Toast.makeText(mainActivity, "登录成功:"+loginResult.isBindPhone(), Toast.LENGTH_LONG).show(); | 
|                 } | 
|                 else if (loginResult.getCode() == LoginResult.LOGIN_CODE_APPID_NOT_FOUND) | 
|                 { | 
|                     Log.i(TAG,"APP_ID未在AndroidManifest.xml中配置"); | 
|                 } | 
|                 else if (loginResult.getCode() == LoginResult.LOGIN_CODE_FAILED) | 
|                 { | 
|                     Log.i(TAG,"登录失败"); | 
|                     switchAccount(); | 
|                 } | 
|                 else if (loginResult.getCode() == LoginResult.LOGIN_CODE_CANCEL) | 
|                 { | 
|                     Log.i(TAG,"登录取消"); | 
|                 } | 
|                 //  txt.setText(loginResult.getCode() + ";" + loginResult.getMessage() + ";" + loginResult.getOpenUid()); | 
|             } | 
|         }); | 
|     } | 
|   | 
|     public void createRole(String roleId, String sid, String roleName) | 
|     { | 
|         XYPaySDK.createRole(roleId, sid, roleName); | 
|     } | 
|   | 
|     public void enterWorld(String roleID, | 
|                            String roleName, | 
|                            String roleLv, | 
|                            String serverID, | 
|                            String job) | 
|     { | 
|         XYPaySDK.roleLogin(roleID, serverID, roleName, roleLv, job); | 
|     } | 
|   | 
|     public void SendRegisterEvent() | 
|     { | 
|         Tracking.setRegisterWithAccountID(m_AccountID); | 
| //        EventUtils.setRegister("mobile", true); | 
|     } | 
|   | 
|     public void SendLoginEvent() | 
|     { | 
|         Tracking.setLoginSuccessBusiness(m_AccountID); | 
|     } | 
|   | 
|     public void DownloadStart() | 
|     { | 
|         String type = "hotStart"; | 
|         XYPaySDK.hotActivation(mainActivity, type); | 
|     } | 
|   | 
|     public void DownloadEnd() | 
|     { | 
|         String type = "hotEnd"; | 
|         XYPaySDK.hotActivation(mainActivity, type); | 
|     } | 
|   | 
| } |