using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace LoyalSoftSDK { public class PayPanel : BaseUIForm { private Text monyText; private Text prutNameText; private GameObject backBtn; private GameObject payBtn; private GameObject panlZFB; private GameObject panlWachat; private GameObject selctZFB; private GameObject selctWechat; // Use this for initialization private string payWay; // private string product_id; private string product_name; private string product_count; private string product_price; private string party_id; private string party_name; private string amount; private string zoneid; private string callbackInfo; private string ageRange; // private AndroidJavaObject jo; //自己的订单号 private string cpOrid; public override void Init() { curUIType = UIType.Normal; monyText = this.transform.Find("BackPanel/MonyText").gameObject.GetComponent(); prutNameText = this.transform.Find("BackPanel/PrutNameText").gameObject.GetComponent(); backBtn = this.transform.Find("BackPanel/BackButton").gameObject; EventTriggerListener.Get(backBtn).onClick = OnBackBtnClick; payBtn = this.transform.Find("BackPanel/PayButton").gameObject; EventTriggerListener.Get(payBtn).onClick = OnPayBtnClick; panlZFB = this.transform.Find("BackPanel/PanelZFB").gameObject; EventTriggerListener.Get(panlZFB).onClick = OnPanlZFBClick; panlWachat = this.transform.Find("BackPanel/PanelWechat").gameObject; EventTriggerListener.Get(panlWachat).onClick = OnPanlWachatClick; selctZFB = this.transform.Find("BackPanel/PanelZFB/ImageTrue").gameObject; selctWechat = this.transform.Find("BackPanel/PanelWechat/ImageTrue").gameObject; using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { jo = jc.GetStatic("currentActivity"); } } public override void Display(BaseUIForm _parent, Dictionary data) { Debug.Log("display1"); string action; data.TryGetValue("action", out action); switch (action) { case "pay": PayWay = "ZFB"; data.TryGetValue("product_id", out product_id); data.TryGetValue("product_name", out product_name); data.TryGetValue("product_count", out product_count); data.TryGetValue("product_price", out product_price); data.TryGetValue("party_id", out party_id); data.TryGetValue("party_name", out party_name); data.TryGetValue("ageRange ", out ageRange); data.TryGetValue("amount", out amount); data.TryGetValue("zoneid", out zoneid); data.TryGetValue("callbackInfo", out callbackInfo); monyText.text = amount + "元"; prutNameText.text = product_name; Debug.Log("display2"); if (string.IsNullOrEmpty(UserProxy.Instance.player.uid)) return;///这个是沿用了之前的逻辑,之前是下面的getcuruser。 Debug.Log("display3"); //if (UserManager.GetInstance().GetCurUser() == null) return; //if (UserManager.GetInstance().GetCurUser().Authentication) //{ // UIFormManager.GetInstance().ShowUIForm("AuthenticationPanel", this, null); // return; //} base.Display(_parent, data); break; case "paySult": break; } } private string PayWay { get { return payWay; } set { payWay = value; if(payWay.Equals("ZFB")) { selctZFB.SetActive(true); selctWechat.SetActive(false); } else { selctZFB.SetActive(false); selctWechat.SetActive(true); } } } private void OnBackBtnClick(GameObject go) { GoBackParent(); } private void OnPayBtnClick(GameObject go) { if(PayWay.EndsWith("Wachat")) { CheckInstallApk(); } else { SendPayDataToSever(); } } private void SendPayDataToSever() { Dictionary sendPostDic = new Dictionary(); string senStr; sendPostDic.Add("accountId", UserProxy.Instance.player.uid); sendPostDic.Add("amount", amount); sendPostDic.Add("channel", "soft"); sendPostDic.Add("callbackInfo", callbackInfo); sendPostDic.Add("zoneid", zoneid); sendPostDic.Add("product_id", product_id); sendPostDic.Add("product_name", product_name); sendPostDic.Add("product_count", product_count); sendPostDic.Add("product_price", product_price); sendPostDic.Add("party_id", party_id); sendPostDic.Add("party_name", party_name); sendPostDic.Add("ageRange", ageRange); senStr = MiniJSON.Json.Serialize(sendPostDic); //sendPostDic.Add("accountId", "B2511C69AF2C7BFB845BB5AE2AB165CF"); //sendPostDic.Add("amount", "6.0"); //sendPostDic.Add("channel", "soft"); //sendPostDic.Add("callbackInfo", "soft - B2511C69AF2C7BFB845BB5AE2AB165CF,1"); //sendPostDic.Add("zoneid", "1"); //sendPostDic.Add("product_id", "801801"); //sendPostDic.Add("product_name", "60钻石"); //sendPostDic.Add("product_count", "1"); //sendPostDic.Add("product_price", "6"); //sendPostDic.Add("party_id", "0"); //sendPostDic.Add("party_name", "无"); //senStr = MiniJSON.Json.Serialize(sendPostDic); Debug.Log("ceshiceshi:"+senStr); if(PayWay.Equals("Wachat")) { StartCoroutine(UserManager.GetInstance().NetRequest(SoftSDKInstance.payWx, senStr, PayCallBack)); } else { StartCoroutine(UserManager.GetInstance().NetRequest(SoftSDKInstance.payZfb, senStr, PayCallBack)); } } private void OnPanlZFBClick(GameObject go) { PayWay = "ZFB"; } private void OnPanlWachatClick(GameObject go) { PayWay = "Wachat"; } private void PayCallBack(string code, string data) { Debug.Log(code + "-----" + data); if (code.Equals("succees")) { Dictionary jsonMap = MiniJSON.Json.Deserialize(data) as Dictionary; string errCode = jsonMap["err"].ToString(); if (errCode.Equals("0")) { //{ "err":0,"platformCode":"wx","cpOrderId":"1806191344000820","platformInfo":{ "appid":"wx95ddb3ce05de33b4","partnerid":"1494582952", // "prepayid":"wx19134409961653e46cef49571245226738","package":"Sign=WXPay","noncestr":"gs3lvmth5wpqpp9frmegsrzm0be84dzy", // "timestamp":1529387047,"sign":"54FD412D4B324DC31212E00C1ED08E66"} } string platformCode= jsonMap["platformCode"].ToString(); cpOrid= jsonMap["cpOrderId"].ToString(); if (platformCode.Equals("wx")) { CallPayByWechat(MiniJSON.Json.Serialize(jsonMap["platformInfo"])); } else { CallPayByZFB(MiniJSON.Json.Serialize(jsonMap["platformInfo"])); } } else { Dictionary dataMsg = new Dictionary(); dataMsg.Add("message", jsonMap["msg"].ToString()); UIFormManager.GetInstance().ShowUIForm("MessagePanel", null, dataMsg); } } else { Debug.LogError("网络通信出错!---" + data); Dictionary dataMsg = new Dictionary(); dataMsg.Add("message", "网络出错,请稍候再试!"); UIFormManager.GetInstance().ShowUIForm("MessagePanel", null, dataMsg); } } private void CallPayByZFB(string data) { try { jo.Call("doAction", "payZFB",data); } catch (Exception e) { Debug.LogError(e); } } private void CallPayByWechat(string data) { try { jo.Call("doAction", "payWeChat", data); } catch (Exception e) { Debug.LogError(e); } } private void CheckInstallApk() { try { jo.Call("doAction", "checkInstallApk", ""); } catch (Exception e) { Debug.LogError(e); } } public void GetPayResults(string jsonData) { Dictionary jsonMap = MiniJSON.Json.Deserialize(jsonData) as Dictionary; string action = jsonMap["action"].ToString(); string msg = jsonMap["msg"].ToString(); string data = jsonMap["data"].ToString(); if (msg.Equals("checkInstallApk")) { if(data.Equals("hasInstall")) { SendPayDataToSever(); } else { UIFormManager.GetInstance().ShowUIForm("InstallationWechatPanel", this, null); Hiding(); } return; } Dictionary backData = new Dictionary(); if (msg.Equals("paySuccees")) { backData.Add("action", "paySuccees"); backData.Add("data", cpOrid); backData.Add("msg", "支付成功"); Dictionary dataMsg = new Dictionary(); dataMsg.Add("message", "支付成功"); UIFormManager.GetInstance().ShowUIForm("MessagePanel", null, dataMsg); } else { backData.Add("action", "payFaill"); backData.Add("data", cpOrid); backData.Add("msg", "支付失败"); Debug.Log("支付失败释义:" + data); Dictionary dataMsg = new Dictionary(); dataMsg.Add("message", data); UIFormManager.GetInstance().ShowUIForm("MessagePanel", null, dataMsg); } SoftSDKInstance.GetInstance().SendCallBackMsg(MiniJSON.Json.Serialize(backData)); GoBackParent(); } } }