سوال در مورد پرداخت درون برنامه
ارسالها: 77
موضوعها: 62
تاریخ عضویت: مرداد ۱۳۹۴
اعتبار:
0
سپاس ها 67
سپاس شده 34 بار در 22 ارسال
حالت من: هیچ کدام
سلام دوستان
من ده تا دگمه دارم در برنامه میخوام برای هر دگمه یه قییمت خاصی تعیین کنم شدنیه؟برا کافه بازار؟
اگر بله چطوری؟
و اینکه مثلا طرف خرید کرد تو رویداد دگمه باید چی بنویسم که چی رو چک کنم؟که کاربر خرید کرده یا نه
اگر خرید کرده نمایش داده بشه اگر نه نمایش داده نشه
و اینکه آیا به کس دیگه بلوتوث بشه اونم باید خرید کنه دیگه کار نمیکنه که؟
مثلا من خرید کنم بلوتوث کنم اون طرفم باید خرید کنه
درسته؟
سوال در مورد پرداخت درون برنامه
ارسالها: 71
موضوعها: 4
تاریخ عضویت: بهمن ۱۳۹۴
اعتبار:
13
سپاس ها 0
سپاس شده 122 بار در 55 ارسال
حالت من: هیچ کدام
(۱۳۹۴/۱۱/۲۸, ۱۲:۳۶ ب.ظ)ahmad97 نوشته: سلام دوستان
من ده تا دگمه دارم در برنامه میخوام برای هر دگمه یه قییمت خاصی تعیین کنم شدنیه؟برا کافه بازار؟
اگر بله چطوری؟
و اینکه مثلا طرف خرید کرد تو رویداد دگمه باید چی بنویسم که چی رو چک کنم؟که کاربر خرید کرده یا نه
اگر خرید کرده نمایش داده بشه اگر نه نمایش داده نشه
و اینکه آیا به کس دیگه بلوتوث بشه اونم باید خرید کنه دیگه کار نمیکنه که؟
مثلا من خرید کنم بلوتوث کنم اون طرفم باید خرید کنه
درسته؟
برنامه هارو وقتی بلوتوث میکنی دوباره نصب میشه رو سیستم و کدهاتون با این فرض کار میکنن که خرید صورت نگرفته و دوباره درخواست خرید ارسال میشه و گوشی جدید هم باید خرید کنه.
و برای اینکه بعد از پرداخت دستورات خاص رو اجرا کنی در قسمت کدهای زیر. کد مورد نظر خودتو بنویس
کد پیاچپی: else if (purchase.getSku().equals(SKU_PREMIUM)) { // give user access to premium content and update the UI //دستورات مورد نظر بعد از پرداخت MasrafSeke(purchase); {
کدهای کاملشو یه جستجو کنی میتونی پیدا کنی
ErfanMahigir
سوال در مورد پرداخت درون برنامه
ارسالها: 116
موضوعها: 20
تاریخ عضویت: دى ۱۳۹۴
اعتبار:
19
سپاس ها 32
سپاس شده 138 بار در 74 ارسال
حالت من: هیچ کدام
یه خدا بیامرزی نبود این پرداخت درون برنامه ای بازارو آموزش بده بوخودا کمرم شکست کاریش نکردم!!!
سوال در مورد پرداخت درون برنامه
ارسالها: 77
موضوعها: 62
تاریخ عضویت: مرداد ۱۳۹۴
اعتبار:
0
سپاس ها 67
سپاس شده 34 بار در 22 ارسال
حالت من: هیچ کدام
(۱۳۹۴/۱۱/۲۹, ۰۴:۰۷ ق.ظ)sinabelle نوشته: یه خدا بیامرزی نبود این پرداخت درون برنامه ای بازارو آموزش بده بوخودا کمرم شکست کاریش نکردم!!!
خدایی راست میگی کمر منم شکسته نتونستم کاری بکنم
سوال در مورد پرداخت درون برنامه
ارسالها: 71
موضوعها: 4
تاریخ عضویت: بهمن ۱۳۹۴
اعتبار:
13
سپاس ها 0
سپاس شده 122 بار در 55 ارسال
حالت من: هیچ کدام
(۱۳۹۴/۱۱/۲۹, ۱۰:۳۵ ق.ظ)ahmad97 نوشته: (۱۳۹۴/۱۱/۲۹, ۰۴:۰۷ ق.ظ)sinabelle نوشته: یه خدا بیامرزی نبود این پرداخت درون برنامه ای بازارو آموزش بده بوخودا کمرم شکست کاریش نکردم!!!
خدایی راست میگی کمر منم شکسته نتونستم کاری بکنم
توی پروژه کارهای زیر رو انجام بده
- یک پوشه (directory) جدید با نام ‘aidl’ زیر ‘src/main/’ درست کن
- یک package جدید با نام ‘com.android.vending.billing‘ در ‘src/main/aidl‘ بساز
- فایل ‘IInAppBillingService.aidl’ را از اینجا دانلود کن و داخل پکیجی که ساختی کپی کن
بعدش به برنامه ات دسترسی زیر رو بده
کد پیاچپی: <uses-permission android:name="com.farsitel.bazaar.permission.PAY_THROUGH_BAZAAR"/>
بعد پکیج رو از اینجا دانلود کنید کنید و توی پروژه کپی کن
حالا توی اکتیویتی که میخوای برنامه رو بفروش بزاری با button رو بزنه قبل از تابع onCreate کدهای زیر رو بنویس
کد پیاچپی: // Debug tag, for logging // Debug tag, for logging static final String TAG = "Esfandune.ir";
// SKUs for our products: the premium upgrade (non-consumable) static final String SKU_PREMIUM = "EsfanduneCoin";
// Does the user have the premium upgrade? boolean mIsPremium = false;
// (arbitrary) request code for the purchase flow static final int RC_REQUEST = 1372;
// The helper object IabHelper mHelper; IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener; IabHelper.QueryInventoryFinishedListener mGotInventoryListener;
بعد از متد onCreate باید کدهای زیر رو بنویسیم
کد پیاچپی: String base64EncodedPublicKey = "";
mHelper = new IabHelper(this, base64EncodedPublicKey);
mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() { public void onQueryInventoryFinished(IabResult result, Inventory inventory) { Log.d(TAG, "Query inventory finished."); if (result.isFailure()) { Log.d(TAG, "Failed to query inventory: " + result); return; } else { Log.d(TAG, "Query inventory was successful."); // does the user have the premium upgrade? mIsPremium = inventory.hasPurchase(SKU_PREMIUM); if (mIsPremium){ MasrafSeke(inventory.getPurchase(SKU_PREMIUM)); } // update UI accordingly
Log.d(TAG, "User is " + (mIsPremium ? "PREMIUM" : "NOT PREMIUM")); }
Log.d(TAG, "Initial inventory query finished; enabling main UI."); } };
mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() { public void onIabPurchaseFinished(IabResult result, Purchase purchase) { if (result.isFailure()) { Log.d(TAG, "Error purchasing: " + result); return; } else if (purchase.getSku().equals(SKU_PREMIUM)) { // give user access to premium content and update the UI Toast.makeText(MainActivity.this,"خرید موفق",Toast.LENGTH_SHORT).show(); MasrafSeke(purchase);
} } };
کد پیاچپی: Log.d(TAG, "Starting setup."); mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { public void onIabSetupFinished(IabResult result) { Log.d(TAG, "Setup finished.");
if (!result.isSuccess()) { // Oh noes, there was a problem. Log.d(TAG, "Problem setting up In-app Billing: " + result); } // Hooray, IAB is fully set up! mHelper.queryInventoryAsync(mGotInventoryListener); } });
متدهای زیر رو هم داخل اکتیویتی اضافه میکنیم
کد پیاچپی: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);
// Pass on the activity result to the helper for handling if (!mHelper.handleActivityResult(requestCode, resultCode, data)) { super.onActivityResult(requestCode, resultCode, data); } else { Log.d(TAG, "onActivityResult handled by IABUtil."); } }
@Override public void onDestroy() { //از سرویس در زمان اتمام عمر activity قطع شوید super.onDestroy(); if (mHelper != null) mHelper.dispose(); mHelper = null; }
private void MasrafSeke(Purchase kala){ // برای اینکه کاربر فقط یکبار بتواند از کالای فروشی استفاده کند // باید بعد از خرید آن کالا را مصرف کنیم // در غیر اینصورت کاربر با یکبار خرید محصول می تواند چندبار از آن استفاده کند mHelper.consumeAsync(kala, new IabHelper.OnConsumeFinishedListener() { @Override public void onConsumeFinished(Purchase purchase, IabResult result) { if (result.isSuccess()) Toast.makeText(MainActivity.this,"مصرف شد",Toast.LENGTH_SHORT).show(); Log.d(TAG, "NATIJE masraf: "+result.getMessage()+result.getResponse());
} }); }
حالا یک button قرار میدیم و خاصیت کلیکشو فعال میکنیم تا با زدن روی اون عملیات پرداخت صورت بگیرد
کد پیاچپی: public void onClick(View view){ mHelper.launchPurchaseFlow(this, SKU_PREMIUM, RC_REQUEST, mPurchaseFinishedListener, "payload-string"); }
در مرحله آخر باید یک خروجی از برنامه تون بگیرید و آن رو توی بازار قرار بدید. انتشار برنامه نزنید. در پنل پرداخت بازار بخش محصولات/خدمات محصول جدید با شناسه کالایی مشخص ایجاد کنید چون برنامه برای تست قیمت رو صفر بذارید و نوع برنامه رو فروشی بذارید. بقیه فیلدهاروهم پرکنید و در قسمت برنامه فروشی اسم برنامه تون رو وارد کنید.
موفق باشید
منبع
ErfanMahigir
سوال در مورد پرداخت درون برنامه
ارسالها: 116
موضوعها: 20
تاریخ عضویت: دى ۱۳۹۴
اعتبار:
19
سپاس ها 32
سپاس شده 138 بار در 74 ارسال
حالت من: هیچ کدام
(۱۳۹۴/۱۱/۳۰, ۰۲:۱۳ ق.ظ)e.mahi نوشته: (۱۳۹۴/۱۱/۲۹, ۱۰:۳۵ ق.ظ)ahmad97 نوشته: (۱۳۹۴/۱۱/۲۹, ۰۴:۰۷ ق.ظ)sinabelle نوشته: یه خدا بیامرزی نبود این پرداخت درون برنامه ای بازارو آموزش بده بوخودا کمرم شکست کاریش نکردم!!!
خدایی راست میگی کمر منم شکسته نتونستم کاری بکنم
توی پروژه کارهای زیر رو انجام بده
- یک پوشه (directory) جدید با نام ‘aidl’ زیر ‘src/main/’ درست کن
- یک package جدید با نام ‘com.android.vending.billing‘ در ‘src/main/aidl‘ بساز
- فایل ‘IInAppBillingService.aidl’ را از اینجا دانلود کن و داخل پکیجی که ساختی کپی کن
بعدش به برنامه ات دسترسی زیر رو بده
کد پیاچپی: <uses-permission android:name="com.farsitel.bazaar.permission.PAY_THROUGH_BAZAAR"/>
بعد پکیج رو از اینجا دانلود کنید کنید و توی پروژه کپی کن
حالا توی اکتیویتی که میخوای برنامه رو بفروش بزاری با button رو بزنه قبل از تابع onCreate کدهای زیر رو بنویس
کد پیاچپی: // Debug tag, for logging // Debug tag, for logging static final String TAG = "Esfandune.ir";
// SKUs for our products: the premium upgrade (non-consumable) static final String SKU_PREMIUM = "EsfanduneCoin";
// Does the user have the premium upgrade? boolean mIsPremium = false;
// (arbitrary) request code for the purchase flow static final int RC_REQUEST = 1372;
// The helper object IabHelper mHelper; IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener; IabHelper.QueryInventoryFinishedListener mGotInventoryListener;
بعد از متد onCreate باید کدهای زیر رو بنویسیم
کد پیاچپی: String base64EncodedPublicKey = "";
mHelper = new IabHelper(this, base64EncodedPublicKey);
mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() { public void onQueryInventoryFinished(IabResult result, Inventory inventory) { Log.d(TAG, "Query inventory finished."); if (result.isFailure()) { Log.d(TAG, "Failed to query inventory: " + result); return; } else { Log.d(TAG, "Query inventory was successful."); // does the user have the premium upgrade? mIsPremium = inventory.hasPurchase(SKU_PREMIUM); if (mIsPremium){ MasrafSeke(inventory.getPurchase(SKU_PREMIUM)); } // update UI accordingly
Log.d(TAG, "User is " + (mIsPremium ? "PREMIUM" : "NOT PREMIUM")); }
Log.d(TAG, "Initial inventory query finished; enabling main UI."); } };
mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() { public void onIabPurchaseFinished(IabResult result, Purchase purchase) { if (result.isFailure()) { Log.d(TAG, "Error purchasing: " + result); return; } else if (purchase.getSku().equals(SKU_PREMIUM)) { // give user access to premium content and update the UI Toast.makeText(MainActivity.this,"خرید موفق",Toast.LENGTH_SHORT).show(); MasrafSeke(purchase);
} } };
کد پیاچپی: Log.d(TAG, "Starting setup."); mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { public void onIabSetupFinished(IabResult result) { Log.d(TAG, "Setup finished.");
if (!result.isSuccess()) { // Oh noes, there was a problem. Log.d(TAG, "Problem setting up In-app Billing: " + result); } // Hooray, IAB is fully set up! mHelper.queryInventoryAsync(mGotInventoryListener); } });
متدهای زیر رو هم داخل اکتیویتی اضافه میکنیم
کد پیاچپی: @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);
// Pass on the activity result to the helper for handling if (!mHelper.handleActivityResult(requestCode, resultCode, data)) { super.onActivityResult(requestCode, resultCode, data); } else { Log.d(TAG, "onActivityResult handled by IABUtil."); } }
@Override public void onDestroy() { //از سرویس در زمان اتمام عمر activity قطع شوید super.onDestroy(); if (mHelper != null) mHelper.dispose(); mHelper = null; }
private void MasrafSeke(Purchase kala){ // برای اینکه کاربر فقط یکبار بتواند از کالای فروشی استفاده کند // باید بعد از خرید آن کالا را مصرف کنیم // در غیر اینصورت کاربر با یکبار خرید محصول می تواند چندبار از آن استفاده کند mHelper.consumeAsync(kala, new IabHelper.OnConsumeFinishedListener() { @Override public void onConsumeFinished(Purchase purchase, IabResult result) { if (result.isSuccess()) Toast.makeText(MainActivity.this,"مصرف شد",Toast.LENGTH_SHORT).show(); Log.d(TAG, "NATIJE masraf: "+result.getMessage()+result.getResponse());
} }); }
حالا یک button قرار میدیم و خاصیت کلیکشو فعال میکنیم تا با زدن روی اون عملیات پرداخت صورت بگیرد
کد پیاچپی: public void onClick(View view){ mHelper.launchPurchaseFlow(this, SKU_PREMIUM, RC_REQUEST, mPurchaseFinishedListener, "payload-string"); }
در مرحله آخر باید یک خروجی از برنامه تون بگیرید و آن رو توی بازار قرار بدید. انتشار برنامه نزنید. در پنل پرداخت بازار بخش محصولات/خدمات محصول جدید با شناسه کالایی مشخص ایجاد کنید چون برنامه برای تست قیمت رو صفر بذارید و نوع برنامه رو فروشی بذارید. بقیه فیلدهاروهم پرکنید و در قسمت برنامه فروشی اسم برنامه تون رو وارد کنید.
موفق باشید
منبع
داداش دمتگرم تنت سلامت روحت شاد...
کار کرد واس من
هرکی گیج شد بره تو منبع مطالعش کنه...
|