PayPanel.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. namespace LoyalSoftSDK
  7. {
  8. public class PayPanel : BaseUIForm
  9. {
  10. private Text monyText;
  11. private Text prutNameText;
  12. private GameObject backBtn;
  13. private GameObject payBtn;
  14. private GameObject panlZFB;
  15. private GameObject panlWachat;
  16. private GameObject selctZFB;
  17. private GameObject selctWechat;
  18. // Use this for initialization
  19. private string payWay;
  20. //
  21. private string product_id;
  22. private string product_name;
  23. private string product_count;
  24. private string product_price;
  25. private string party_id;
  26. private string party_name;
  27. private string amount;
  28. private string zoneid;
  29. private string callbackInfo;
  30. private string ageRange;
  31. //
  32. private AndroidJavaObject jo;
  33. //自己的订单号
  34. private string cpOrid;
  35. public override void Init()
  36. {
  37. curUIType = UIType.Normal;
  38. monyText = this.transform.Find("BackPanel/MonyText").gameObject.GetComponent<Text>();
  39. prutNameText = this.transform.Find("BackPanel/PrutNameText").gameObject.GetComponent<Text>();
  40. backBtn = this.transform.Find("BackPanel/BackButton").gameObject;
  41. EventTriggerListener.Get(backBtn).onClick = OnBackBtnClick;
  42. payBtn = this.transform.Find("BackPanel/PayButton").gameObject;
  43. EventTriggerListener.Get(payBtn).onClick = OnPayBtnClick;
  44. panlZFB = this.transform.Find("BackPanel/PanelZFB").gameObject;
  45. EventTriggerListener.Get(panlZFB).onClick = OnPanlZFBClick;
  46. panlWachat = this.transform.Find("BackPanel/PanelWechat").gameObject;
  47. EventTriggerListener.Get(panlWachat).onClick = OnPanlWachatClick;
  48. selctZFB = this.transform.Find("BackPanel/PanelZFB/ImageTrue").gameObject;
  49. selctWechat = this.transform.Find("BackPanel/PanelWechat/ImageTrue").gameObject;
  50. using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
  51. {
  52. jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
  53. }
  54. }
  55. public override void Display(BaseUIForm _parent, Dictionary<string, string> data)
  56. {
  57. Debug.Log("display1");
  58. string action;
  59. data.TryGetValue("action", out action);
  60. switch (action)
  61. {
  62. case "pay":
  63. PayWay = "ZFB";
  64. data.TryGetValue("product_id", out product_id);
  65. data.TryGetValue("product_name", out product_name);
  66. data.TryGetValue("product_count", out product_count);
  67. data.TryGetValue("product_price", out product_price);
  68. data.TryGetValue("party_id", out party_id);
  69. data.TryGetValue("party_name", out party_name);
  70. data.TryGetValue("ageRange ", out ageRange);
  71. data.TryGetValue("amount", out amount);
  72. data.TryGetValue("zoneid", out zoneid);
  73. data.TryGetValue("callbackInfo", out callbackInfo);
  74. monyText.text = amount + "元";
  75. prutNameText.text = product_name;
  76. Debug.Log("display2");
  77. if (string.IsNullOrEmpty(UserProxy.Instance.player.uid)) return;///这个是沿用了之前的逻辑,之前是下面的getcuruser。
  78. Debug.Log("display3");
  79. //if (UserManager.GetInstance().GetCurUser() == null) return;
  80. //if (UserManager.GetInstance().GetCurUser().Authentication)
  81. //{
  82. // UIFormManager.GetInstance().ShowUIForm("AuthenticationPanel", this, null);
  83. // return;
  84. //}
  85. base.Display(_parent, data);
  86. break;
  87. case "paySult":
  88. break;
  89. }
  90. }
  91. private string PayWay
  92. {
  93. get
  94. {
  95. return payWay;
  96. }
  97. set
  98. {
  99. payWay = value;
  100. if(payWay.Equals("ZFB"))
  101. {
  102. selctZFB.SetActive(true);
  103. selctWechat.SetActive(false);
  104. }
  105. else
  106. {
  107. selctZFB.SetActive(false);
  108. selctWechat.SetActive(true);
  109. }
  110. }
  111. }
  112. private void OnBackBtnClick(GameObject go)
  113. {
  114. GoBackParent();
  115. }
  116. private void OnPayBtnClick(GameObject go)
  117. {
  118. if(PayWay.EndsWith("Wachat"))
  119. {
  120. CheckInstallApk();
  121. }
  122. else
  123. {
  124. SendPayDataToSever();
  125. }
  126. }
  127. private void SendPayDataToSever()
  128. {
  129. Dictionary<string, object> sendPostDic = new Dictionary<string, object>();
  130. string senStr;
  131. sendPostDic.Add("accountId", UserProxy.Instance.player.uid);
  132. sendPostDic.Add("amount", amount);
  133. sendPostDic.Add("channel", "soft");
  134. sendPostDic.Add("callbackInfo", callbackInfo);
  135. sendPostDic.Add("zoneid", zoneid);
  136. sendPostDic.Add("product_id", product_id);
  137. sendPostDic.Add("product_name", product_name);
  138. sendPostDic.Add("product_count", product_count);
  139. sendPostDic.Add("product_price", product_price);
  140. sendPostDic.Add("party_id", party_id);
  141. sendPostDic.Add("party_name", party_name);
  142. sendPostDic.Add("ageRange", ageRange);
  143. senStr = MiniJSON.Json.Serialize(sendPostDic);
  144. //sendPostDic.Add("accountId", "B2511C69AF2C7BFB845BB5AE2AB165CF");
  145. //sendPostDic.Add("amount", "6.0");
  146. //sendPostDic.Add("channel", "soft");
  147. //sendPostDic.Add("callbackInfo", "soft - B2511C69AF2C7BFB845BB5AE2AB165CF,1");
  148. //sendPostDic.Add("zoneid", "1");
  149. //sendPostDic.Add("product_id", "801801");
  150. //sendPostDic.Add("product_name", "60钻石");
  151. //sendPostDic.Add("product_count", "1");
  152. //sendPostDic.Add("product_price", "6");
  153. //sendPostDic.Add("party_id", "0");
  154. //sendPostDic.Add("party_name", "无");
  155. //senStr = MiniJSON.Json.Serialize(sendPostDic);
  156. Debug.Log("ceshiceshi:"+senStr);
  157. if(PayWay.Equals("Wachat"))
  158. {
  159. StartCoroutine(UserManager.GetInstance().NetRequest(SoftSDKInstance.payWx, senStr, PayCallBack));
  160. }
  161. else
  162. {
  163. StartCoroutine(UserManager.GetInstance().NetRequest(SoftSDKInstance.payZfb, senStr, PayCallBack));
  164. }
  165. }
  166. private void OnPanlZFBClick(GameObject go)
  167. {
  168. PayWay = "ZFB";
  169. }
  170. private void OnPanlWachatClick(GameObject go)
  171. {
  172. PayWay = "Wachat";
  173. }
  174. private void PayCallBack(string code, string data)
  175. {
  176. Debug.Log(code + "-----" + data);
  177. if (code.Equals("succees"))
  178. {
  179. Dictionary<string, object> jsonMap = MiniJSON.Json.Deserialize(data) as Dictionary<string, object>;
  180. string errCode = jsonMap["err"].ToString();
  181. if (errCode.Equals("0"))
  182. {
  183. //{ "err":0,"platformCode":"wx","cpOrderId":"1806191344000820","platformInfo":{ "appid":"wx95ddb3ce05de33b4","partnerid":"1494582952",
  184. // "prepayid":"wx19134409961653e46cef49571245226738","package":"Sign=WXPay","noncestr":"gs3lvmth5wpqpp9frmegsrzm0be84dzy",
  185. // "timestamp":1529387047,"sign":"54FD412D4B324DC31212E00C1ED08E66"} }
  186. string platformCode= jsonMap["platformCode"].ToString();
  187. cpOrid= jsonMap["cpOrderId"].ToString();
  188. if (platformCode.Equals("wx"))
  189. {
  190. CallPayByWechat(MiniJSON.Json.Serialize(jsonMap["platformInfo"]));
  191. }
  192. else
  193. {
  194. CallPayByZFB(MiniJSON.Json.Serialize(jsonMap["platformInfo"]));
  195. }
  196. }
  197. else
  198. {
  199. Dictionary<string, string> dataMsg = new Dictionary<string, string>();
  200. dataMsg.Add("message", jsonMap["msg"].ToString());
  201. UIFormManager.GetInstance().ShowUIForm("MessagePanel", null, dataMsg);
  202. }
  203. }
  204. else
  205. {
  206. Debug.LogError("网络通信出错!---" + data);
  207. Dictionary<string, string> dataMsg = new Dictionary<string, string>();
  208. dataMsg.Add("message", "网络出错,请稍候再试!");
  209. UIFormManager.GetInstance().ShowUIForm("MessagePanel", null, dataMsg);
  210. }
  211. }
  212. private void CallPayByZFB(string data)
  213. {
  214. try
  215. {
  216. jo.Call("doAction", "payZFB",data);
  217. }
  218. catch (Exception e)
  219. {
  220. Debug.LogError(e);
  221. }
  222. }
  223. private void CallPayByWechat(string data)
  224. {
  225. try
  226. {
  227. jo.Call("doAction", "payWeChat", data);
  228. }
  229. catch (Exception e)
  230. {
  231. Debug.LogError(e);
  232. }
  233. }
  234. private void CheckInstallApk()
  235. {
  236. try
  237. {
  238. jo.Call("doAction", "checkInstallApk", "");
  239. }
  240. catch (Exception e)
  241. {
  242. Debug.LogError(e);
  243. }
  244. }
  245. public void GetPayResults(string jsonData)
  246. {
  247. Dictionary<string, object> jsonMap = MiniJSON.Json.Deserialize(jsonData) as Dictionary<string, object>;
  248. string action = jsonMap["action"].ToString();
  249. string msg = jsonMap["msg"].ToString();
  250. string data = jsonMap["data"].ToString();
  251. if (msg.Equals("checkInstallApk"))
  252. {
  253. if(data.Equals("hasInstall"))
  254. {
  255. SendPayDataToSever();
  256. }
  257. else
  258. {
  259. UIFormManager.GetInstance().ShowUIForm("InstallationWechatPanel", this, null);
  260. Hiding();
  261. }
  262. return;
  263. }
  264. Dictionary<string, object> backData = new Dictionary<string, object>();
  265. if (msg.Equals("paySuccees"))
  266. {
  267. backData.Add("action", "paySuccees");
  268. backData.Add("data", cpOrid);
  269. backData.Add("msg", "支付成功");
  270. Dictionary<string, string> dataMsg = new Dictionary<string, string>();
  271. dataMsg.Add("message", "支付成功");
  272. UIFormManager.GetInstance().ShowUIForm("MessagePanel", null, dataMsg);
  273. }
  274. else
  275. {
  276. backData.Add("action", "payFaill");
  277. backData.Add("data", cpOrid);
  278. backData.Add("msg", "支付失败");
  279. Debug.Log("支付失败释义:" + data);
  280. Dictionary<string, string> dataMsg = new Dictionary<string, string>();
  281. dataMsg.Add("message", data);
  282. UIFormManager.GetInstance().ShowUIForm("MessagePanel", null, dataMsg);
  283. }
  284. SoftSDKInstance.GetInstance().SendCallBackMsg(MiniJSON.Json.Serialize(backData));
  285. GoBackParent();
  286. }
  287. }
  288. }