AlipayManager.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using UnityEngine;
  2. using System.IO;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. using System.Text.RegularExpressions;
  6. using LitJson;
  7. public class AliplayManager : UnitySingleton<AliplayManager>
  8. {
  9. private AndroidJavaObject androidUnityTool;
  10. private Dictionary<string, string> PackNameDic = new Dictionary<string, string>();
  11. public void Init()
  12. {
  13. androidUnityTool = new AndroidJavaObject("com.dashgame.unity.UnityTool");
  14. androidUnityTool.Call("setResponseGameObject", this.name);
  15. ManaIAP.Complete = true;
  16. }
  17. public void Pay(string id, string packName){
  18. AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  19. AndroidJavaObject currentActivity = jc.GetStatic<AndroidJavaObject>("currentActivity");
  20. int index = id.IndexOf('a');
  21. id = id.Substring(index);
  22. PackNameDic.Add(Regex.Match(WWW.UnEscapeURL(id), "out_trade_no.*total_amount").Value, packName);
  23. //Pay(string orderInfo, Activity activity)
  24. androidUnityTool.Call("pay", WWW.UnEscapeURL(id), currentActivity); // 传递的参数需与服务器协商
  25. }
  26. public void OnPayResult(string result)
  27. {
  28. //if result=9000 means pay success;
  29. if (int.Parse(result.Split('|')[0]) == 9000)
  30. {
  31. Bubble.Show(null, Language.GetStr("IAP", "PurchaseSuccess"));
  32. JsonData jsonData = JsonMapper.ToObject(result.Split('|')[1]);
  33. string out_trade_no = jsonData["alipay_trade_app_pay_response"]["out_trade_no"].ToString();
  34. string key = "";
  35. string packName = "";
  36. foreach (var kv in PackNameDic)
  37. {
  38. if (kv.Key.Contains(out_trade_no))
  39. {
  40. key = kv.Key;
  41. packName = kv.Value;
  42. }
  43. }
  44. if (!string.IsNullOrEmpty(packName))
  45. {
  46. PackNameDic.Remove(key);
  47. ManaIAP.ProductActionDic[packName].Invoke();
  48. }
  49. }
  50. else
  51. {
  52. Bubble.Show(null, Language.GetStr("IAP", "PurchaseFail"));
  53. }
  54. }
  55. }