ios支付

This commit is contained in:
chenxi 2023-06-15 19:13:44 +08:00
parent 2ac2d73e0b
commit 764f5ee33a
2 changed files with 23 additions and 5 deletions

View File

@ -5,6 +5,7 @@ using AppsFlyerSDK;
using UnityEngine; using UnityEngine;
using UnityEngine.Purchasing; using UnityEngine.Purchasing;
using UnityEngine.Purchasing.Security; using UnityEngine.Purchasing.Security;
using UnityEngine.Purchasing.Extension;
public struct ProductInfo { public struct ProductInfo {
@ -12,7 +13,7 @@ public struct ProductInfo {
public ProductType type; public ProductType type;
} }
public class IAPManager : /* MonoBehaviour, */ IStoreListener { public class IAPManager : /* MonoBehaviour, */ IDetailedStoreListener {
public Action<bool, Product[], string> initCallback; public Action<bool, Product[], string> initCallback;
public Action<bool, Product, string> buyCallback; public Action<bool, Product, string> buyCallback;
public static IAPManager instance; public static IAPManager instance;
@ -98,7 +99,6 @@ public class IAPManager : /* MonoBehaviour, */ IStoreListener {
IAPDebug($"ID:{productId}.Not found or is not available for purchase"); IAPDebug($"ID:{productId}.Not found or is not available for purchase");
return false; return false;
} }
_storeC.InitiatePurchase(productId, payload); _storeC.InitiatePurchase(productId, payload);
return true; return true;
} }
@ -110,6 +110,11 @@ public class IAPManager : /* MonoBehaviour, */ IStoreListener {
buyCallback?.Invoke(false, pro, er); buyCallback?.Invoke(false, pro, er);
} }
public void OnPurchaseFailed(Product pro, PurchaseFailureDescription p) {
IAPDebug($"ID:{pro.definition.id}. purchase fail: {p.message}");
buyCallback?.Invoke(false, pro, p.message);
}
//购买成功 //购买成功
public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e) { public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e) {
#if UNITY_EDITOR #if UNITY_EDITOR
@ -201,7 +206,6 @@ public class IAPManager : /* MonoBehaviour, */ IStoreListener {
private void _appsFlyerChecking(Product product) { private void _appsFlyerChecking(Product product) {
IAPDebug($"CURRENCY:{product.metadata.isoCurrencyCode} REVENUE:{product.metadata.localizedPrice.ToString()} CONTENT_TYPE:{product.transactionID} CONTENT_ID:{product.definition.id}"); IAPDebug($"CURRENCY:{product.metadata.isoCurrencyCode} REVENUE:{product.metadata.localizedPrice.ToString()} CONTENT_TYPE:{product.transactionID} CONTENT_ID:{product.definition.id}");
// Dictionary<string, string> da = new Dictionary<string, string> { // Dictionary<string, string> da = new Dictionary<string, string> {
// { AFInAppEventParameterName.CURRENCY, product.metadata.isoCurrencyCode }, // { AFInAppEventParameterName.CURRENCY, product.metadata.isoCurrencyCode },
// { AFInAppEventParameterName.REVENUE, product.metadata.localizedPrice.ToString() }, // { AFInAppEventParameterName.REVENUE, product.metadata.localizedPrice.ToString() },
@ -215,7 +219,6 @@ public class IAPManager : /* MonoBehaviour, */ IStoreListener {
} }
#endregion #endregion
#region ================================================== ================================================== #region ================================================== ==================================================
/// <summary> /// <summary>

View File

@ -233,7 +233,9 @@ namespace XLua.CSObjectWrap
IAPManager gen_to_be_invoked = (IAPManager)translator.FastGetCSObj(L, 1); IAPManager gen_to_be_invoked = (IAPManager)translator.FastGetCSObj(L, 1);
int gen_param_count = LuaAPI.lua_gettop(L);
if(gen_param_count == 3&& translator.Assignable<UnityEngine.Purchasing.Product>(L, 2)&& translator.Assignable<UnityEngine.Purchasing.PurchaseFailureReason>(L, 3))
{ {
UnityEngine.Purchasing.Product _pro = (UnityEngine.Purchasing.Product)translator.GetObject(L, 2, typeof(UnityEngine.Purchasing.Product)); UnityEngine.Purchasing.Product _pro = (UnityEngine.Purchasing.Product)translator.GetObject(L, 2, typeof(UnityEngine.Purchasing.Product));
UnityEngine.Purchasing.PurchaseFailureReason _p;translator.Get(L, 3, out _p); UnityEngine.Purchasing.PurchaseFailureReason _p;translator.Get(L, 3, out _p);
@ -242,6 +244,17 @@ namespace XLua.CSObjectWrap
return 0;
}
if(gen_param_count == 3&& translator.Assignable<UnityEngine.Purchasing.Product>(L, 2)&& translator.Assignable<UnityEngine.Purchasing.Extension.PurchaseFailureDescription>(L, 3))
{
UnityEngine.Purchasing.Product _pro = (UnityEngine.Purchasing.Product)translator.GetObject(L, 2, typeof(UnityEngine.Purchasing.Product));
UnityEngine.Purchasing.Extension.PurchaseFailureDescription _p = (UnityEngine.Purchasing.Extension.PurchaseFailureDescription)translator.GetObject(L, 3, typeof(UnityEngine.Purchasing.Extension.PurchaseFailureDescription));
gen_to_be_invoked.OnPurchaseFailed( _pro, _p );
return 0; return 0;
} }
@ -249,6 +262,8 @@ namespace XLua.CSObjectWrap
return LuaAPI.luaL_error(L, "c# exception:" + gen_e); return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
} }
return LuaAPI.luaL_error(L, "invalid arguments to IAPManager.OnPurchaseFailed!");
} }
[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))] [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]