using UnityEngine; using System.IO; using System.Collections; using System.Collections.Generic; using System.Text.RegularExpressions; using LitJson; public class AliplayManager : UnitySingleton { private AndroidJavaObject androidUnityTool; private Dictionary PackNameDic = new Dictionary(); public void Init() { androidUnityTool = new AndroidJavaObject("com.dashgame.unity.UnityTool"); androidUnityTool.Call("setResponseGameObject", this.name); ManaIAP.Complete = true; } public void Pay(string id, string packName){ AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); AndroidJavaObject currentActivity = jc.GetStatic("currentActivity"); int index = id.IndexOf('a'); id = id.Substring(index); PackNameDic.Add(Regex.Match(WWW.UnEscapeURL(id), "out_trade_no.*total_amount").Value, packName); //Pay(string orderInfo, Activity activity) androidUnityTool.Call("pay", WWW.UnEscapeURL(id), currentActivity); // 传递的参数需与服务器协商 } public void OnPayResult(string result) { //if result=9000 means pay success; if (int.Parse(result.Split('|')[0]) == 9000) { Bubble.Show(null, Language.GetStr("IAP", "PurchaseSuccess")); JsonData jsonData = JsonMapper.ToObject(result.Split('|')[1]); string out_trade_no = jsonData["alipay_trade_app_pay_response"]["out_trade_no"].ToString(); string key = ""; string packName = ""; foreach (var kv in PackNameDic) { if (kv.Key.Contains(out_trade_no)) { key = kv.Key; packName = kv.Value; } } if (!string.IsNullOrEmpty(packName)) { PackNameDic.Remove(key); ManaIAP.ProductActionDic[packName].Invoke(); } } else { Bubble.Show(null, Language.GetStr("IAP", "PurchaseFail")); } } }