| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | using DouYouSdk;using UniFramework.Event;using UnityEngine;namespace GFGGame.Launcher{    public class AliPayManagerInit : SingletonBase<AliPayManagerInit>    {        public IAliSDKListener aliSDKListener;        private static AndroidJavaClass _unityPlayerClass;        private static AndroidJavaObject _mainActivity;        public void InitSDK()        {            if (_unityPlayerClass == null)            {                _unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");            }            if (_mainActivity == null)            {                _mainActivity = _unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");            }            AliDKHandler eventHandler = GameObject.Find("AliPayGameObject")?.GetComponent<AliDKHandler>();            if (eventHandler == null)            {                GameObject gameObject = new GameObject("AliPayGameObject");                gameObject.AddComponent<AliDKHandler>();                GameObject.DontDestroyOnLoad(gameObject);            }            InitVxSdk(LauncherConfig.vxSdkAppId);        }        /// <summary>        /// 调起支付宝支付        /// </summary>        public void ShowSwitchPayment(string orderStr, string callBackObjectName = "AliPayGameObject",            string callBackFuncName = "AliPayReceive")        {            Instance.CallDouYouMainActivity("AliPay", orderStr, callBackObjectName, callBackFuncName);        }        //实例化微信SDK        public void InitVxSdk(string appId)        {            Instance.CallDouYouMainActivity("WechatInit", appId);        }        /// <summary>        /// 调起微信支付        /// </summary>        /// <param name="appId">APP_ID:微信开放平台应用的唯一标识,通常由微信支付平台提供。</param>        /// <param name="mchId">MCH_ID:商户号,由微信支付平台提供。</param>        /// <param name="prepayId">prepayid:通过调用统一下单接口得到的预支付交易会话ID。是微信支付在后台创建订单时返回的参数。</param>        /// <param name="packageValue">packageValue:签名方式,通常为 "Sign=WXPay",如果需要做其他支付方式,可以修改这个值。</param>        /// <param name="nonceStr">这是一个随机字符串,用于防止请求被重放。</param>        /// <param name="timestamp">timestamp:时间戳,当前时间的秒级表示。这个值在每次请求时需要实时获取。</param>        /// <param name="sign">sign:签名,必须按照微信支付要求的方式来计算签名。签名的计算规则涉及到其他参数,需要商户自己计算。</param>        /// <param name="callBackObjectName"></param>        /// <param name="callBackFuncName"></param>        public void VxShowSwitchPayment(string appId, string mchId, string prepayId, string packageValue,            string nonceStr, string timestamp, string sign, string callBackObjectName = "AliPayGameObject",            string callBackFuncName = "VxPayReceive")        {            Instance.CallDouYouMainActivity("WeChatPayReq", appId, mchId, prepayId, packageValue,                nonceStr, timestamp, sign, callBackObjectName, callBackFuncName);        }        private void CallDouYouMainActivity(string functionName, params object[] args)        {            _mainActivity?.Call(functionName, args);        }        public class AliDKHandler : AliPaySDKHandler        {            /// <summary>            /// 支付回调            /// </summary>            /// <param name="message">支付回调</param>            public override void AliPayReceiveAb(string message)            {                Debug.Log($"AliPayReceiveAb:{message}");                AliPayManagerInit.Instance.aliSDKListener?.AliPayReceiveAb(message);            }            public override void VxPayReceiveAb(string message)            {                Debug.Log($"AliPayReceiveAb:{message}");                AliPayManagerInit.Instance.aliSDKListener?.VxPayReceiveAb(message);            }        }    }}
 |