AliPayManagerInit.cs 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. using DouYouSdk;
  2. using UniFramework.Event;
  3. using UnityEngine;
  4. namespace GFGGame.Launcher
  5. {
  6. public class AliPayManagerInit : SingletonBase<AliPayManagerInit>
  7. {
  8. public IAliSDKListener aliSDKListener;
  9. private static AndroidJavaClass _unityPlayerClass;
  10. private static AndroidJavaObject _mainActivity;
  11. public void InitSDK()
  12. {
  13. if (_unityPlayerClass == null)
  14. {
  15. _unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
  16. }
  17. if (_mainActivity == null)
  18. {
  19. _mainActivity = _unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
  20. }
  21. AliDKHandler eventHandler = GameObject.Find("AliPayGameObject")?.GetComponent<AliDKHandler>();
  22. if (eventHandler == null)
  23. {
  24. GameObject gameObject = new GameObject("AliPayGameObject");
  25. gameObject.AddComponent<AliDKHandler>();
  26. GameObject.DontDestroyOnLoad(gameObject);
  27. }
  28. InitVxSdk(LauncherConfig.vxSdkAppId);
  29. }
  30. /// <summary>
  31. /// 调起支付宝支付
  32. /// </summary>
  33. public void ShowSwitchPayment(string orderStr, string callBackObjectName = "AliPayGameObject",
  34. string callBackFuncName = "AliPayReceive")
  35. {
  36. Instance.CallDouYouMainActivity("AliPay", orderStr, callBackObjectName, callBackFuncName);
  37. }
  38. //实例化微信SDK
  39. public void InitVxSdk(string appId)
  40. {
  41. Instance.CallDouYouMainActivity("WechatInit", appId);
  42. }
  43. /// <summary>
  44. /// 调起微信支付
  45. /// </summary>
  46. /// <param name="appId">APP_ID:微信开放平台应用的唯一标识,通常由微信支付平台提供。</param>
  47. /// <param name="mchId">MCH_ID:商户号,由微信支付平台提供。</param>
  48. /// <param name="prepayId">prepayid:通过调用统一下单接口得到的预支付交易会话ID。是微信支付在后台创建订单时返回的参数。</param>
  49. /// <param name="packageValue">packageValue:签名方式,通常为 "Sign=WXPay",如果需要做其他支付方式,可以修改这个值。</param>
  50. /// <param name="nonceStr">这是一个随机字符串,用于防止请求被重放。</param>
  51. /// <param name="timestamp">timestamp:时间戳,当前时间的秒级表示。这个值在每次请求时需要实时获取。</param>
  52. /// <param name="sign">sign:签名,必须按照微信支付要求的方式来计算签名。签名的计算规则涉及到其他参数,需要商户自己计算。</param>
  53. /// <param name="callBackObjectName"></param>
  54. /// <param name="callBackFuncName"></param>
  55. public void VxShowSwitchPayment(string appId, string mchId, string prepayId, string packageValue,
  56. string nonceStr, string timestamp, string sign, string callBackObjectName = "AliPayGameObject",
  57. string callBackFuncName = "VxPayReceive")
  58. {
  59. Instance.CallDouYouMainActivity("WeChatPayReq", appId, mchId, prepayId, packageValue,
  60. nonceStr, timestamp, sign, callBackObjectName, callBackFuncName);
  61. }
  62. private void CallDouYouMainActivity(string functionName, params object[] args)
  63. {
  64. _mainActivity?.Call(functionName, args);
  65. }
  66. public class AliDKHandler : AliPaySDKHandler
  67. {
  68. /// <summary>
  69. /// 支付回调
  70. /// </summary>
  71. /// <param name="message">支付回调</param>
  72. public override void AliPayReceiveAb(string message)
  73. {
  74. Debug.Log($"AliPayReceiveAb:{message}");
  75. AliPayManagerInit.Instance.aliSDKListener?.AliPayReceiveAb(message);
  76. }
  77. public override void VxPayReceiveAb(string message)
  78. {
  79. Debug.Log($"AliPayReceiveAb:{message}");
  80. AliPayManagerInit.Instance.aliSDKListener?.VxPayReceiveAb(message);
  81. }
  82. }
  83. }
  84. }