c1_unity/Assets/Scripts/Common/SDK/BFPaySDKManager.cs
2023-04-03 11:04:31 +08:00

155 lines
5.2 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BF
{
public class BFPaySDKManager : MonoBehaviour
{
public Action<int, string> luaPayCallback;
public Action<int, string> luaDelayPayCallback;
public Action<int, string> luaQueryProductCallback;
public Action<int, string> luaQueryUncompleteOrderCallback;
public Action<int, string> luaQuerySubscribeInfoCallback;
public Action<int> luaConnectGoogleStoreCallback;
public Action<int> luaConsumeCallback;
public bool ConnectStoreSucc { get; private set; }
private string googlePayType;
private string googleProductJson;
void Start()
{
Init();
}
public void Init()
{
// google
BFMain.Instance.SDKMgr.BFNativeSDKMgr.InitGooglePay();
}
public void GoogleStoreConnectComplete(bool success)
{
ConnectStoreSucc = success;
if(luaConnectGoogleStoreCallback != null)
{
int code = success?0:1;
luaConnectGoogleStoreCallback(code);
luaConnectGoogleStoreCallback = null;
}
if (ConnectStoreSucc && luaQueryProductCallback != null && !string.IsNullOrEmpty(googlePayType) && !string.IsNullOrEmpty(googleProductJson))
{
BFMain.Instance.SDKMgr.BFNativeSDKMgr.QueryGoogleProductInfo(googlePayType, googleProductJson);
}
}
public void Pay(string payType, string productId, string customMsg, Action<int, string> callback)
{
luaPayCallback = callback;
BFMain.Instance.SDKMgr.BFNativeSDKMgr.GooglePay(payType, productId, customMsg);
}
public void GooglePayComplete(int code, string result)
{
// 优先当前支付的回调
if(luaPayCallback != null)
{
luaPayCallback(code, result);
luaPayCallback = null;
}
else if (luaDelayPayCallback != null)
{
// 延迟到账的回调
luaDelayPayCallback(code, result);
}
}
// 设置延迟到账回调
public void SetGoogleDelayPayCallback(Action<int, string> callback)
{
luaDelayPayCallback = callback;
}
public void ConsumePurchase(string token, Action<int> callback)
{
luaConsumeCallback = callback;
BFMain.Instance.SDKMgr.BFNativeSDKMgr.ConsumePurchase(token);
}
public void GoogleConsumeComplete(int code)
{
if (luaConsumeCallback != null)
{
luaConsumeCallback(code);
luaConsumeCallback = null;
}
}
public void ConnectGoogleStore(Action<int> callback)
{
luaConnectGoogleStoreCallback = callback;
BFMain.Instance.SDKMgr.BFNativeSDKMgr.ConnectGoogleStore();
}
public void QueryProductInfo(string payType, string productJson, Action<int, string> callback)
{
luaQueryProductCallback = callback;
if (ConnectStoreSucc)
{
BFMain.Instance.SDKMgr.BFNativeSDKMgr.QueryGoogleProductInfo(payType, productJson);
}
else
{
googlePayType = payType;
googleProductJson = productJson;
BFMain.Instance.SDKMgr.BFNativeSDKMgr.ConnectGoogleStore();
}
}
public void QueryProductOver(bool succ, string result)
{
int code = succ?0:1;
if(luaQueryProductCallback != null)
{
Action<int, string> tempLuaQueryProductCallback = luaQueryProductCallback;
luaQueryProductCallback = null;
tempLuaQueryProductCallback(code, result);
googlePayType = string.Empty;
googleProductJson = string.Empty;
}
}
public void QueryUncompleteOrder(string payType, Action<int, string> callback)
{
luaQueryUncompleteOrderCallback = callback;
BFMain.Instance.SDKMgr.BFNativeSDKMgr.QueryUncompleteOrder(payType);
}
public void QueryUncompleteOrderFinish(string result)
{
if(luaQueryUncompleteOrderCallback != null)
{
Action<int, string> tempLuaQueryUncompleteOrderCallback = luaQueryUncompleteOrderCallback;
luaQueryUncompleteOrderCallback = null;
tempLuaQueryUncompleteOrderCallback(0, result);
}
}
public void QuerySubscribeInfo(string payType, Action<int, string> callback)
{
luaQuerySubscribeInfoCallback = callback;
BFMain.Instance.SDKMgr.BFNativeSDKMgr.QuerySubscribeInfo(payType);
}
public void QuerySubscribeInfoFinish(string result)
{
if(luaQuerySubscribeInfoCallback != null)
{
luaQuerySubscribeInfoCallback(0, result);
luaQuerySubscribeInfoCallback = null;
}
}
}
}