آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

کد لازم برای پرداخت درون برنامه مصرفی مثل خرید سکه تماما در یک Activity بدون نیاز به کلاس G

Ebrahimgh1986  10 سال پیش  10 سال پیش
+5 0

سلام دوستان. بالاخره تونستم با کش و قوس های فراوان!! البته برای منی که ادعای برنامه نویس بودن ندارم و مبتدی هستم! از جمع بندی صحبت های این تاپیک "صفر تا صد درون برنامه" به مجموعه کدهایی برسم که بدون نیاز به کلاس G و ساخت دیتابیس جداگونه و فقط در یک اکتیویتی، پرداخت درون برنامه مصرفی داشته باشم.
چون دغدغه 1 ماهه من بوده!! حیفم اومد در اختیار بقیه قرار ندم!!
شاید از نظر استانداردهای برنامه نویسی ایراداتی بش وارد باشه ولی برای 4 کلید مختلف طراحی کردم با شناسه محصول متفاوت. بدون ارور جواب داد. خدمت شما عزیزان ...
اگر بتونم به سوال دوستان در حد علم اندکی که دارم کمک کنم، دریغ نمی کنم ...

 public class BuyNCoinsActivity extends Activity {

    public OnIabPurchaseFinishedListener       mPurchaseFinishedListenerN;
    public IabHelper.OnConsumeFinishedListener mConsumeFinishedListenerN;

    public static IabHelper                    mHelperN;

    public static boolean                      setPremiumState = false;
    public static boolean                      premiumState;
    public static SharedPreferences            preferences;

    public static Context                      context;

    static final String                        TAG             = "";

    public static String                       SKU_PREMIUMN    = "NCoins"; //شناسه محصول مد نظر مثل خرید 500 سکه که در بازار تعریف کرده اید را اینجا وارد کنید.
    public static final String                 rsa_key         = "";      //کد rsa برنامه خود که از بازار دریافت کرده اید را در این قسمت وارد کنید.


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.preparebazaar_board);

        context = getApplicationContext();
        preferences = PreferenceManager.getDefaultSharedPreferences(context);
        premiumState = preferences.getBoolean("IS_PREMIUM", false);

        QueryInventoryFinishedListener mGotInventoryListenerN;
        mGotInventoryListenerN = new IabHelper.QueryInventoryFinishedListener() {

            @Override
            public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
                if ( !result.isFailure()) {
                    boolean state = inventory.hasPurchase(SKU_PREMIUMN);
                    Log.i(TAG, "Bazaar say isPremiumUser is : " + state);
                    setPremiumState(state);
                }

            }
        };

        prepareBazaarInAppBillingN(true, mGotInventoryListenerN);

        mConsumeFinishedListenerN = new IabHelper.OnConsumeFinishedListener() {

            @Override
            public void onConsumeFinished(Purchase purchase, IabResult result) {
                // TODO Auto-generated method stub
                if (result.isSuccess()) {
                    Toast.makeText(BuyNCoinsActivity.this,
                            "سکه ها با موفقیت مصرف شد", Toast.LENGTH_LONG).show();

                } else {
                    // handle error
                }
            }
        };

        mPurchaseFinishedListenerN = new OnIabPurchaseFinishedListener() {

            @Override
            public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
                // نتیجه یک فییلور / خطا بوده ؟
                if (result.isFailure()) {
                    Log.d(TAG, "Error purchasing: " + result);
                    Toast.makeText(context, "پرداخت انجام نشد", Toast.LENGTH_LONG).show();
                    BuyNCoinsActivity.this.finish();
                    return;
                }
                else if (purchase.getSku().equals(SKU_PREMIUMN)) {
                    setPremiumState(true);
                    Toast.makeText(context, "با تشکر از خرید شما :-)", Toast.LENGTH_SHORT).show();

                    mHelperN.consumeAsync(purchase, mConsumeFinishedListenerN);

                }
            }
        };

        Timer timer = new Timer();
        timer.schedule(new TimerTask() {

            @Override
            public void run() {

                try {
                    mHelperN.launchPurchaseFlow(BuyNCoinsActivity.this,
                            SKU_PREMIUMN, 1, mPurchaseFinishedListenerN);
                }
                catch (Exception e) {
                    e.printStackTrace();
                    Toast.makeText(context,
                            "متأسفانه مشکلی پیش آمده، لطفا از بازی خارج و دوباره وارد شوید.",
                            Toast.LENGTH_LONG).show();
                }

            }

        }, 5000);

    }


    public static boolean prepareBazaarInAppBillingN(final boolean requireUpdatePrefrences,
                                                     final QueryInventoryFinishedListener mGotInventoryListener) {
        try {
            mHelperN = new IabHelper(context, rsa_key);
            Log.d(TAG, "Starting setup.");

            IabHelper.OnIabSetupFinishedListener listener =
                    new IabHelper.OnIabSetupFinishedListener() {

                        @Override
                        public void onIabSetupFinished(IabResult result) {
                            Log.d(TAG, "Setup finished.");
                            if ( !result.isSuccess()) {
                                Log.d(TAG, "Problem setting up In-app Billing: " + result);
                            }
                            if (requireUpdatePrefrences && mGotInventoryListener != null) {
                                mHelperN.queryInventoryAsync(mGotInventoryListener);
                            }
                        }
                    };

            mHelperN.startSetup(listener);
            return true;
        }
        catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }


    public static void setPremiumState(boolean state) {
        SharedPreferences.Editor editor = preferences.edit();
        editor.putBoolean("IS_PREMIUM", state);
        editor.commit();
        premiumState = state;
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        try {

            if ( !mHelperN.handleActivityResult(requestCode, resultCode, data)) {
                super.onActivityResult(requestCode, resultCode, data);
            }

        }

        catch (Exception e) {

        }

    }


    @Override
    public void onDestroy() {
        super.onDestroy();

        if (mHelperN != null)
            mHelperN.dispose();
        mHelperN = null;

    }

}
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .