using System; using System.Collections.Generic; // using SGModule.ApplePay; using SGModule.NetKit; using UnityEngine; using RedHotRoast; // using UnityEngine.Purchasing; using Newtonsoft.Json; public enum PayType { buy_one, buy_one_off, buy_gold_1, buy_gold_2, buy_gold_3, buy_gold_4, buy_gold_5, remove_ad, battle_pass, pack_reward, fail_pack, three_days_gift, weekly_subscription, monthly_subscription, yearly_subscription, } public class PurchasingManager { private static readonly List PayConfig = ConfigSystem.GetConfig(); private static readonly List PayConfig2 = ConfigSystem.GetConfig(); public static string GetPaySku(PayType key) { string keys = ""; if (PayConfig != null) { foreach (var data in PayConfig) { if (data.payKey != key.ToString()) continue; keys = data.sku; break; } } return keys; } public static int GetVipLvFormConfig(string sku) { var lv = 1; if (GetPaySku(PayType.weekly_subscription) == sku) { lv = 1; } else if (GetPaySku(PayType.monthly_subscription) == sku) { lv = 2; } else if (GetPaySku(PayType.yearly_subscription) == sku) { lv = 3; } return lv; } public static void Purchase(ApplePayData payData) { //本地测试 // TestIOSPay(payData); // return; Debug.Log($"[Apple Pay] unity Purchase--0-----: {payData.sku}"); // ApplePayManager.Instance.Purchase(payData.sku, ApplePaySuccessCallback(payData), message => // { // Debug.Log("purchase fail------- reason: " + message); // }); } // public static Action ApplePaySuccessCallback(ApplePayData payData) // { // return (backType, AppleResponseData) => // { // Debug.Log($"[Apple Pay] unity Purchase--1-----: {backType.ToString()}"); // switch (backType) // { // case ApplePayBackType.Create: // Debug.Log("[Apple Pay] Create"); // var sku0 = SetSku(payData); // Debug.Log($"[Apple Pay] Create---11: {sku0}"); // SendEventClickByName(sku0, "click"); // break; // case ApplePayBackType.Check: // UICtrlDispatcher.Instance.Dispatch(UICtrlMsg.PayloadingUI_Close); // // if (AppleResponseData != null && AppleResponseData.sku.Contains("sub")) // { // DataMgr.VipExpirationTime.Value = Math.Max(DataMgr.VipExpirationTime.Value, AppleResponseData.expires_time); // var level = GetVipLvFormConfig(AppleResponseData.sku); // DataMgr.VipLevel.Value = level; // payData.sku = AppleResponseData.sku; // payData.shopName = "vip_club" + (level - 1); // } // // var sku = SetSku(payData); // // Debug.Log($"[Apple Pay] Check sku===2===== {sku}"); // GameDispatcher.Instance.Dispatch(GameMsg.apple_pay_success, sku); // Debug.Log($"[Apple Pay] Check sku===3===== {sku}"); // // SendEventClickByName(sku, "open"); // // SendEventClickByName(sku, "success"); // break; // case ApplePayBackType.Cancel: // Debug.Log("[Apple Pay] Cancel"); // var sku1 = SetSku(payData); // SendEventClickByName(sku1, "open"); // BIManager.Instance.TrackPurchase(payData.amount, payData.currency, "0", payData.sku, "paid_err"); // break; // } // }; // } // // private static void TestIOSPay(ApplePayData payData) // { // var tranId = ""; // var typespes = ProductType.Consumable; // if (GetPaySku(PayType.battle_pass) == payData.sku) // { // tranId = "2000000983625783"; // } // else if (GetPaySku(PayType.weekly_subscription) == payData.sku) // { // tranId = "2000000984643029"; // types = ProductType.Subscription; // } // // if (tranId == "") return; // // ApplePayManager.Instance.ApplePayTest(types, payData.sku, tranId, ApplePaySuccessCallback(payData)); // } private static string SetSku(ApplePayData data) { string sku = ""; if (data.type != null && data.type == GetPaySku(PayType.remove_ad)) { sku = data.type; } else if (data.sku.Contains("shop")) { sku = data.shopName; } else if (data.sku.Contains("sub")) { sku = data.shopName; } else { sku = data.sku; } return sku; } private static void SendEventClickByName(string name, string type) { if (name == null) { return; } string clickTrackKey = null; string successTrackKey = null; string openTrackKey = null; if (name == GetPaySku(PayType.pack_reward)) { clickTrackKey = ADEventTrack.Property.lucky_gift_click; successTrackKey = ADEventTrack.Property.lucky_gift_receive; openTrackKey = ADEventTrack.Property.first_pack_show; } else if (name == GetPaySku(PayType.remove_ad)) { clickTrackKey = ADEventTrack.Property.remove_ad_click; successTrackKey = ADEventTrack.Property.remove_ad_receive; openTrackKey = ADEventTrack.Property.gift_show; } else if (name == GetPaySku(PayType.battle_pass)) { clickTrackKey = ADEventTrack.Property.master_pass_click; successTrackKey = ADEventTrack.Property.master_pass_receive; openTrackKey = ADEventTrack.Property.master_pass_show; } else if (name == GetPaySku(PayType.buy_one)) { clickTrackKey = ADEventTrack.Property.buy_one_click; successTrackKey = ADEventTrack.Property.buy_one_success; openTrackKey = ADEventTrack.Property.buy_one_show; } else if (name == GetPaySku(PayType.buy_one_off)) { // clickTrackKey = ADEventTrack.Property.BuyOneOffClick; // successTrackKey = ADEventTrack.Property.BuyOneOffSuccess; // openTrackKey = ADEventTrack.Property.BuyOneOffShow; } else if (name == GetPaySku(PayType.fail_pack)) { clickTrackKey = ADEventTrack.Property.fail_click; successTrackKey = ADEventTrack.Property.fail_buy_success; openTrackKey = ADEventTrack.Property.fail_show; } else if (name == GetPaySku(PayType.three_days_gift)) { clickTrackKey = ADEventTrack.Property.three_days_gift_click; successTrackKey = ADEventTrack.Property.three_days_gift_buy_success; openTrackKey = ADEventTrack.Property.three_days_gift_show; } if (name.StartsWith("buy_gold")) { int startIndex = "buy_gold".Length; string suffix = name[startIndex..]; // 截取 "gold" 后的所有字符 clickTrackKey = ADEventTrack.Property.gold_click_ + suffix; successTrackKey = ADEventTrack.Property.shop_receive_ + suffix; openTrackKey = ADEventTrack.Property.shop_show; } if (name.StartsWith("vip_club")) { int startIndex = "vip_club".Length; string suffix = name[startIndex..]; // 截取 "gold" 后的所有字符 clickTrackKey = ADEventTrack.Property.vip_click_ + suffix; successTrackKey = ADEventTrack.Property.vip_success_ + suffix; openTrackKey = ADEventTrack.Property.buy_one_show; } if (type == "success" && successTrackKey != null) { TrackKit.SendEvent(ADEventTrack.IOS_Pay_Event, successTrackKey); } else if (type == "click" && clickTrackKey != null) { TrackKit.SendEvent(ADEventTrack.IOS_Pay_Event, clickTrackKey); } else if (type == "open" && openTrackKey != null) { // TrackKit.SendEvent(ADEventTrack.IOS_Pay_Event, openTrackKey); } } } public class ApplePayData { [JsonProperty("innerOrderId")] public string innerOrderId; [JsonProperty("amount")] public int amount; [JsonProperty("sku")] public string sku; [JsonProperty("currency")] public string currency = "USD"; [JsonProperty("shopName")] public string shopName; [JsonProperty("type")] public string type; } public class SubscriptionList { [JsonProperty("renew_time")] public long renew_time; [JsonProperty("renew_sku")] public string renew_sku; [JsonProperty("sku")] public string sku; [JsonProperty("orig_tx_id")] public string orig_tx_id; } public class HistoryObject { [JsonProperty("id")] public string id; }