using System; using UnityEngine; using LuaInterface; using System.Collections.Generic; public class AndroidSDK:MonoBehaviour { private AndroidJavaObject mainActivity; private bool initWXPay = false; private LuaFunction onScuessPayHandle; private LuaFunction onFailPayHandle; private LuaFunction onUserCancelHandle; public AndroidJavaObject MainActivity { get { if(mainActivity==null) { using (var jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { mainActivity = jc.GetStatic("currentActivity"); } } return mainActivity; } } public void LocalTestWeiXinPay(string appId, string partnerId, string apiKey, string totalfee, string bodyStr, string notifyUrl, string callBackBackObjectName, string callBackFunctionName) { var wxPay = new AndroidJavaClass("com.doudou.dwc.WXPaySDK"); if (wxPay != null) { if(!initWXPay) { if(wxPay.CallStatic("InitUnityActivity", mainActivity)) { initWXPay = true; } } if (initWXPay) { object[] objs = new object[] { appId,partnerId,apiKey, totalfee, bodyStr, notifyUrl, callBackBackObjectName, "WXPayCallBack" }; wxPay.CallStatic("LocationPayReq", objs); } } } public void WeiXinPay(string prepayid,string noncestr,string timestamp,string sign,string callBackBackObjectName,LuaFunction onScuessPay,LuaFunction onFailPay,LuaFunction onUserCancel) { var wxPay = new AndroidJavaClass("com.doudou.dwc.WXPaySDK"); if (wxPay != null) { if (!initWXPay) { if (wxPay.CallStatic("InitUnityActivity", mainActivity)) { initWXPay = true; } } if (initWXPay) { object[] objs = new object[] { prepayid, noncestr, timestamp, sign, callBackBackObjectName, "WXPayCallBack" }; wxPay.CallStatic("WeiChatPayReq", objs); } } else { GameLogic.Util.Log("No exsit AndroidJavaClass com.doudou.dwc.WXPaySDK"); } } public void WXPayCallBack(string msg) { switch(msg) { case "0": if(onScuessPayHandle!=null) { onScuessPayHandle.Call(); } break; case "-1": if(onFailPayHandle!=null) { onFailPayHandle.Call(); } break; case "-2": if(onUserCancelHandle!=null) { onUserCancelHandle.Call(); } break; } } }