using System; using UnityEngine; using System.IO; using System.Collections; using System.Collections.Generic; using System.Text.RegularExpressions; using System.Runtime.InteropServices; using LitJson; public class AliplayManager : UnitySingleton { #if UNITY_ANDROID private AndroidJavaObject androidUnityTool; #elif UNITY_IOS //[DllImport("__Internal")] //private static extern void aliPay(string orderInfo, string gameObjectName); #endif private string packName; //private Dictionary PackNameDic = new Dictionary(); public void Init() { #if UNITY_ANDROID androidUnityTool = new AndroidJavaObject("com.dashgame.unity.UnityTool"); androidUnityTool.Call("setResponseGameObject", this.name); #elif UNITY_IOS #endif IAPManager.Inited = true; } public void Pay(string id, string packName){ int index = id.IndexOf('a'); id = id.Substring(index); this.packName = packName; //PackNameDic.Add(Regex.Match(WWW.UnEscapeURL(id), "out_trade_no.*total_amount").Value, packName); #if UNITY_ANDROID //AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); //AndroidJavaObject currentActivity = jc.GetStatic("currentActivity"); androidUnityTool.Call("pay", WWW.UnEscapeURL(id)); #elif UNITY_IOS //aliPay(WWW.UnEscapeURL(id), this.name); #endif } public void OnPayResult(string result) { if (result.Split('|')[0] =="9000") { IAPManager.BuyProductCallbackDictionary[packName].Invoke(); PayCard.Hide(); } else { Bubble.Show(null, Language.GetStr(LanguageLabel.IAP__PurchaseFail)); ResourceManager.Get(CanvasLabel.AK_PayCard).interactable = true; } //if result=9000 means pay success; //if (int.Parse(result.Split('|')[0]) == 9000) //{ // Bubble.Show(null, Language.GetStr(LanguageLabel.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); // IAPManager.BuyProductCallbackDictionary[packName].Invoke(); // PayCard.Hide(); // } //} //else //{ // Bubble.Show(null, Language.GetStr(LanguageLabel.IAP__PurchaseFail)); // ResourceManager.Get(CanvasLabel.AK_PayCard).interactable = true; //} } }