using DouYouSdk; using UniFramework.Event; using UnityEngine; namespace GFGGame.Launcher { public class AliPayManagerInit : SingletonBase { 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("currentActivity"); } AliDKHandler eventHandler = GameObject.Find("AliPayGameObject")?.GetComponent(); if (eventHandler == null) { GameObject gameObject = new GameObject("AliPayGameObject"); gameObject.AddComponent(); GameObject.DontDestroyOnLoad(gameObject); } InitVxSdk(LauncherConfig.vxSdkAppId); } /// /// 调起支付宝支付 /// 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); } /// /// 调起微信支付 /// /// APP_ID:微信开放平台应用的唯一标识,通常由微信支付平台提供。 /// MCH_ID:商户号,由微信支付平台提供。 /// prepayid:通过调用统一下单接口得到的预支付交易会话ID。是微信支付在后台创建订单时返回的参数。 /// packageValue:签名方式,通常为 "Sign=WXPay",如果需要做其他支付方式,可以修改这个值。 /// 这是一个随机字符串,用于防止请求被重放。 /// timestamp:时间戳,当前时间的秒级表示。这个值在每次请求时需要实时获取。 /// sign:签名,必须按照微信支付要求的方式来计算签名。签名的计算规则涉及到其他参数,需要商户自己计算。 /// /// 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 { /// /// 支付回调 /// /// 支付回调 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); } } } }