1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- 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<AliplayManager>
- {
- #if UNITY_ANDROID
- private AndroidJavaObject androidUnityTool;
- #elif UNITY_IOS
- [DllImport("__Internal")]
- private static extern void aliPay(string orderInfo, string gameObjectName);
- #endif
- private Dictionary<string, string> PackNameDic = new Dictionary<string, string>();
- public void Init()
- {
- #if UNITY_ANDROID
- androidUnityTool = new AndroidJavaObject("com.dashgame.unity.UnityTool");
- androidUnityTool.Call("setResponseGameObject", this.name);
- #elif UNITY_IOS
- #endif
- IAPManager.Complete = true;
- }
- public void Pay(string id, string packName){
- int index = id.IndexOf('a');
- id = id.Substring(index);
- 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<AndroidJavaObject>("currentActivity");
- androidUnityTool.Call("pay", WWW.UnEscapeURL(id), currentActivity);
- #elif UNITY_IOS
- aliPay(WWW.UnEscapeURL(id), this.name);
- #endif
- }
- public void OnPayResult(string result)
- {
- //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.ProductActionDic[packName].Invoke();
- }
- }
- else
- {
- Bubble.Show(null, Language.GetStr(LanguageLabel.IAP__PurchaseFail));
- }
- }
- }
|