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);
- }
- }
- }
- }
|