تبلیغات
تبلیغات
تبلیغات
تبلیغات

مشکل در خرید محصول مصرف شدنی مایکت
(1 مشاهده) (1) مهمان
  • صفحه:
  • 1

موضوع: مشکل در خرید محصول مصرف شدنی مایکت

مشکل در خرید محصول مصرف شدنی مایکت 3 روز, 15 ساعت پیش #137269

  • tejint_
  • آفلاین
  • کاربر تازه وارد
  • ارسال: 42
  • دریافت تشكر: 11
  • 
سلام من دو تا محصول در مایکت دارم که یکی مصرف شدنی و یکی مصرف نشدنی
بعد از خرید مصرف شدنی اگر برنامه رو ببندم دوباره بازکنم اول برنامه مصرف شدنی رو دوباره آپدیت میکنه و اضافه میکنه
یعنی اصلا خرید انجام نمیده
مشکل کد من کجاست؟


using System.Collections;
using System.Collections.Generic;
using System;
using UnityEngine;
using UnityEngine.UI;
using SimpleJSON;
using CodeStage.AntiCheat.ObscuredTypes;

[RequireComponent(typeof(StoreHandler))]
public class InAppStore : MonoBehaviour, IBillingListener
{
    public Product[] products;
    public car_setting mng_;
    public GameObject loadingDialog;

    private int selectedProductIndex;
    private Purchase currentPurchase;
    public Pushe pushe_;
    //   public AdadPlugin adad_plugin;

    public Transform panel_mas;
    public Text txt_msg_cap;
    public Text txt_msg_msg;
    public Button bt_yes;
    public Button bt_no;
    public Button bt_ok;

    int rand_load = 0;




    private int coin = 0;

    void Awake()
    {
        GetComponent<StoreHandler>().SetUpBillingService(this);
    }
    string toastString = "لطفا صبر کنید ...";
    AndroidJavaObject currentActivity;
    AndroidJavaClass UnityPlayer;
    AndroidJavaObject context;
    void Start()
    {
        if (Application.isMobilePlatform)
        {
            UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
            context = currentActivity.Call<AndroidJavaObject>("getApplicationContext");
        }
    }
    public void showToastOnUiThread(string toastString)
    {
        this.toastString = toastString;
        currentActivity.Call("runOnUiThread", new AndroidJavaRunnable(showToast));
    }
    void showToast()
    {
        Debug.Log(this + ": Running on UI thread");

        AndroidJavaClass Toast = new AndroidJavaClass("android.widget.Toast");
        AndroidJavaObject javaString = new AndroidJavaObject("java.lang.String", toastString);
        AndroidJavaObject toast = Toast.CallStatic<AndroidJavaObject>("makeText", context, javaString, Toast.GetStatic<int>("LENGTH_LONG"));
        toast.Call("show");
    }

    public void OnBillingServiceSetupFinished()
    {
      //  txtResult.text = "Billing service setup finished\n" + txtResult.text;
        GetComponent<StoreHandler>().UpdatePurchasesAndDetails(products);
    }

    public void OnPurchasesUpdated(List<Purchase> purchases)
    {
        for (int i = 0; i < purchases.Count; i++)
        {
            popup_only_ok("", "محصول قبلا خریداری شده");
           
            GiveProductToUser(purchases[i]);
        }
    }

    public void OnPurchasesAndDetailsUpdated(List<Purchase> purchases, List<ProductDetail> productDetails)
    {
        OnPurchasesUpdated(purchases);
     //   ShowSkuDetails(productDetails);
    }

    public void OnUserCancelPurchase(string errorMessage)
    {
        popup_only_ok("", "خرید انجام نشد");
    }

    public void OnPurchaseFinished(Purchase purchase)
    {
        GiveProductToUser(purchase);
     //   popup_only_ok("", "سپاس از خرید شما ");
    }

    public void OnConsumeFinished(String productId, String purchaseToken)
    {
        if (String.Equals(productId, "ck_com"))
        {// مصرف نشدنی
           GetComponent<StoreHandler>().ConsumePurchase(purchase.productId, purchase.purchaseToken);
                ObscuredPrefs.SetInt("value", ObscuredPrefs.GetInt("value") + 10000);
				ObscuredPrefs.SetString("game_com", "complate");
                loadingDialog.gameObject.SetActive(false);
        }
        if (String.Equals(productId, "ck_1000"))
        {// مصرف شدنی
           ObscuredPrefs.SetInt("value", ObscuredPrefs.GetInt("value") + 1000);
        }
       
    }

    public void OnError(Int32 errorCode, String errorMessage)
    {
        switch (errorCode)
        {
            case 1: // error illegal State
                popup_only_ok("", "یک حالت غیرمجاز رخ داده است");
                break;

            case 2: // error billing setup fail
                popup_only_ok("", "در هنگام راه‌اندازی سرویس درون‌پرداخت مایکت خطا رخ داده است");
                break;

            case 3: // error empty public key
                popup_only_ok("", "کلید عمومی خالی فرستاده شده است");
                break;

            case 4: // error update purchases
              //  popup_only_ok("", "در هنگام گرفتن خرید‌های قبلی کاربر خطا رخ داده است");
                break;

            case 5: // error consume
                popup_only_ok("", "در هنگام مصرف یک محصول، خطا رخ داده است");
                break;

            case 6: // error start activity
                popup_only_ok("", "در هنگام شروع اکتیویتی مربوط به خرید محصول، خطا رخ داده است");
                break;

            case 7: // error purchase
                popup_only_ok("", "در هنگام خرید محصول، خطا رخ داده است");
                break;
        }

    }

    public void ShowSkuDetails(List<ProductDetail> pruductDetails)
    {
       /* for (int i = 0; i < pruductDetails.Count; i++)
        {
            if (String.Equals(pruductDetails[i].productId, "test"))
            {
                btnAddCoin.GetComponentInChildren<Text>().text = pruductDetails[i].title + "\nPrice: " + pruductDetails[i].price;
            }
            else if (String.Equals(pruductDetails[i].productId, "sku.test.premium"))
            {
                btnRemoveAd.GetComponentInChildren<Text>().text = pruductDetails[i].title + "\nPrice: " + pruductDetails[i].price;
            }
            else if (String.Equals(pruductDetails[i].productId, "sku.test.subs"))
            {
                btnSubscription.GetComponentInChildren<Text>().text = pruductDetails[i].title + "\nPrice: " + pruductDetails[i].price;
            }
        }*/
    }

    public void GiveProductToUser(Purchase purchase)
    {
        switch (purchase.productId)
        {
            case "ck_com":  // مصرف نشدنی
                GetComponent<StoreHandler>().ConsumePurchase(purchase.productId, purchase.purchaseToken);
                ObscuredPrefs.SetInt("value", ObscuredPrefs.GetInt("value") + 10000);
				ObscuredPrefs.SetString("game_com", "complate");
                loadingDialog.gameObject.SetActive(false);
                break;
            case "ck_1000": // مصرف شدنی
               
                ObscuredPrefs.SetInt("value", ObscuredPrefs.GetInt("value") + 1000);
                break;
            
            

            default:
                
                throw new UnassignedReferenceException("Illegal State for product: " + purchase.productId);
        }
    
    }

    public void purchaseProduct(int productIndex)
    {
        Product product = products[productIndex];

        if (product.type == Product.ProductType.Subscription)
        {
            GetComponent<StoreHandler>().BuyProduct(product.productId, "subs");
        }
        else if (product.type == Product.ProductType.InApp)
        {
            GetComponent<StoreHandler>().BuyProduct(product.productId, "inapp");
        }

    }











    public void popup_only_ok(string title_, string msg_)
    {
        txt_msg_cap.text = (title_).faConvert();
        txt_msg_msg.text = (msg_).faConvert();

        panel_mas.gameObject.SetActive(true);
        bt_yes.gameObject.SetActive(false);
        bt_no.gameObject.SetActive(false);
        bt_ok.gameObject.SetActive(true);
    }

    public void popup_ok_cancel(string title_, string msg_)
    {
        txt_msg_cap.text = (title_).faConvert();
        txt_msg_msg.text = (msg_).faConvert();

        panel_mas.gameObject.SetActive(true);
        bt_yes.gameObject.SetActive(true);
        bt_no.gameObject.SetActive(true);
        bt_ok.gameObject.SetActive(false);
    }
    public void retryValidatePurchase()
    {
        load_dialog(true);
    //    GetComponent<CheckIABValidate>().check(currentPurchase, onPurchaseValidated);
    }
    public void load_dialog(bool _tf_)
    {

        if (_tf_)
            loadingDialog.gameObject.SetActive(true);
        else
            loadingDialog.gameObject.SetActive(false);

    }

    public static string packageName()
    {
        AndroidJavaClass contextCls = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject context = contextCls.GetStatic<AndroidJavaObject>("currentActivity");
        AndroidJavaObject packageMngr = context.Call<AndroidJavaObject>("getPackageManager");
        return context.Call<string>("getPackageName");
    }

    public static string serial_()
    {
        AndroidJavaObject jo = new AndroidJavaObject("android.os.Build");
        return jo.GetStatic<string>("SERIAL");
    }

}




پاسخ: مشکل در خرید محصول مصرف شدنی مایکت 3 روز, 5 ساعت پیش #137279

  • tejint_
  • آفلاین
  • کاربر تازه وارد
  • ارسال: 42
  • دریافت تشكر: 11
دوستان کسی نمونه کد برای خرید درون برنامه ای برای مایکت داره که هم محصول مصرف شدنی داشته باشه و هم مصرف نشدنی

با تشکر
  • صفحه:
  • 1
زمان ایجاد صفحه: 0.13 ثانیه

جدیدترین آثار ارسالی در گالری

تبلیغات
تبلیغات

جدیدترین ارسالهای تالارگفتگو