c1_unity/Assets/Scripts/Common/SDK/BFHWPaySDKManager.cs
2025-11-03 10:59:33 +08:00

124 lines
3.2 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BF
{
public class BFHWPaySDKManager : MonoBehaviour
{
public Action<int, string> luaPayCallback;
public Action<int, string> luaQueryProductCallback;
public Action<int, string> luaQueryUncompleteOrderCallback;
public Action<int> luaConsumeCallback;
public bool StoreValid { get; private set; }
private string ProductJson;
void Start()
{
// 俄罗斯华为渠道专用支付
if (!BFPlatform.IsSupportHWPay())
{
return;
}
Init();
CheckStoreValid();
}
// 初始化
public void Init()
{
// BFMain.Instance.SDKMgr.BFNativeSDKMgr.RuInit();
}
// 检测支付可用性
public void CheckStoreValid()
{
BFMain.Instance.SDKMgr.BFNativeSDKMgr.HWCheckValid();
}
public void CheckStoreValidComplete(bool success)
{
StoreValid = success;
}
// 请求全部商品信息
public void QueryProductInfo(string productJson, Action<int, string> callback)
{
luaQueryProductCallback = callback;
BFMain.Instance.SDKMgr.BFNativeSDKMgr.HWGetProducts(productJson, callback);
}
public void QueryProductComplete(bool succ, string result)
{
Debug.Log("C# call QueryProductComplete");
int code = succ?0:1;
if(luaQueryProductCallback != null)
{
Debug.Log("C# call QueryProductComplete result = " + result + " code = " + code);
Action<int, string> tempLuaQueryProductCallback = luaQueryProductCallback;
luaQueryProductCallback = null;
tempLuaQueryProductCallback(code, result);
ProductJson = string.Empty;
}
}
// 支付
public void Pay(string payType, string productId, string customMsg, Action<int, string> callback)
{
luaPayCallback = callback;
BFMain.Instance.SDKMgr.BFNativeSDKMgr.HWPurchase(productId, customMsg);
}
public void PayComplete(int code, string result)
{
Debug.Log("C# call PayComplete");
// 优先当前支付的回调
if(luaPayCallback != null)
{
Debug.Log("C# call PayComplete result = " + result + " code = " + code);
luaPayCallback(code, result);
luaPayCallback = null;
}
}
// 消耗
public void ConsumePurchase(string token, Action<int> callback)
{
luaConsumeCallback = callback;
BFMain.Instance.SDKMgr.BFNativeSDKMgr.HWConsume(token);
}
public void ConsumeComplete(int code)
{
Debug.Log("C# call ConsumeComplete");
if (luaConsumeCallback != null)
{
Debug.Log("C# call ConsumeComplete code = " + code);
luaConsumeCallback(code);
luaConsumeCallback = null;
}
}
// 查询未完成订单
public void QueryUncompleteOrder(Action<int, string> callback)
{
luaQueryUncompleteOrderCallback = callback;
BFMain.Instance.SDKMgr.BFNativeSDKMgr.HWGetPurchase();
}
public void QueryUncompleteOrderFinish(string result)
{
Debug.Log("C# call QueryUncompleteOrderFinish");
if(luaQueryUncompleteOrderCallback != null)
{
Debug.Log("C# call QueryUncompleteOrderFinish result = " + result);
Action<int, string> tempLuaQueryUncompleteOrderCallback = luaQueryUncompleteOrderCallback;
luaQueryUncompleteOrderCallback = null;
tempLuaQueryUncompleteOrderCallback(0, result);
}
}
}
}