PDA

View Full Version : پرداخت درون برنامه ای(راهنمایی)



Ebrahimkh
پنج شنبه 04 دی 1393, 12:17 عصر
سلام دوستان
خسته نباشید
از اینکه تاپیک جدید در این باب باز می کنم معذرت می خوام

++++++++++++

سوالم اینه
چه جوری می تونیم یه برنامه با پرداخت درون برنامه ای ایجاد کنیم ک نیازی با Dialog نداشته باشه

حقیقتش این تاپیک ها رو هم خوندم
http://barnamenevis.org/showthread.php?429143-%D9%BE%D8%B1%D8%AF%D8%A7%D8%AE%D8%AA-%D8%AF%D8%B1%D9%88%D9%86-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A7%DB%8C/page1

سورسها رو هم دانلود کردم ولی اول همشون یه دیالوگ میاد تا چک کنه من می خوام مثل برنامه های سایت بازار اصلا این دیالوگ لود نشه
یه بارم کامنتش کردم ولی برنامه مشکل پیدا می کنه



اگر به برنامه های بازار دقت کرده باشید زمان خرید هیچ دیالوگی اسکن نمی کنه که خرید کردید یا نه
سریع به بازار لینک داده میشیم اگرم قبلا خرید کرده باشیم سریع میرویم تو قسمت اصلی برنامه



دوستان خواهشن اگرسورسی چیزی هم داشته باشید که این دیالوگ نباشه بازم عالیه


*******************
پیشاپیش از همه دوستانی که راهنمایی می کنند سپاسگذارم

hamedjj
پنج شنبه 04 دی 1393, 13:41 عصر
دیالوگ در این کد کار خاصی انجان نمیده
فط کافیست کد اصلی dialog را حذف کنید و بقیه کدها خطا میدهد و سپس آنها را حذف نمایید:
public ProgressDialog dialog;


خواهشا از این پس سوالات خود را در تاپیک های مربوطه قرار دهید

Ebrahimkh
پنج شنبه 04 دی 1393, 13:57 عصر
سلام حامد

اول بابت زحمات فراوان شما تشکر میکنم

می خواستم بگم من یه سورسی می خوام که با کلیک روی دکمه سریع به بازار هدایت بشم
اگر ما این دیالوگ رو حذف کنیم زمانی برنامه ما لود میشه اگر زود روی دکمه کلیک کنیم از برناممون خارج میشیم ولی اگر 35 ثانیه صبر کنیم و بعد کلیک کنیم به بازار وصل میشیم


حالا یه سورس می خوام که این مشکل توش نباشه

قربان محبتت

Ebrahimkh
پنج شنبه 04 دی 1393, 14:42 عصر
دوستان خواهشن یه راهنمایی کنید

ضروریه

Ebrahimkh
جمعه 05 دی 1393, 12:36 عصر
دوستان عزیز
یک روز گذشت
کسی نبود من رو راهنمایی کنه

saeidd
جمعه 05 دی 1393, 13:32 عصر
می خواستم بگم من یه سورسی می خوام که با کلیک روی دکمه سریع به بازار هدایت بشم
اگر ما این دیالوگ رو حذف کنیم زمانی برنامه ما لود میشه اگر زود روی دکمه کلیک کنیم از برناممون خارج میشیم ولی اگر 35 ثانیه صبر کنیم و بعد کلیک کنیم به بازار وصل میشیم
حالا یه سورس می خوام که این مشکل توش نباشه

درست نفهمیدم چی میخوای، اگه فقط میخوای دیالوگ نباشه که حامد گفت چکار کن، اگه غیر از اینه واضح تر بگو

Ebrahimkh
جمعه 05 دی 1393, 17:38 عصر
سلام سعید جان
شرمنده که این رو میگم بنده هم میدونم دیالوگ رو چجوری غیرفعال کنم مشکل بنده این نیست
مشکل اینجاست زمانی غیرفعالش می کنیم اگر برناممون رو اجرا کنیم با کلیک بر روی دکمه پرداخت برنامه سریع خروج میزنه ولی اگر
30 ثانیه صبر کنیم و بعد روی دکمه پداخت کلیک کنیم دکمه جواب میده می خواستم این کرنومتر پرداخت رو از کار بندازم
که هر وقت روش کلیک کردیم به پرداخت بازار هدایت شویم نه اینکه 30 ثانیه صبر کنیم بعد جواب بده

بازم سپاسگذارم

saeidd
جمعه 05 دی 1393, 17:52 عصر
سلام سعید جان
شرمنده که این رو میگم بنده هم میدونم دیالوگ رو چجوری غیرفعال کنم مشکل بنده این نیست
مشکل اینجاست زمانی غیرفعالش می کنیم اگر برناممون رو اجرا کنیم با کلیک بر روی دکمه پرداخت برنامه سریع خروج میزنه ولی اگر
30 ثانیه صبر کنیم و بعد روی دکمه پداخت کلیک کنیم دکمه جواب میده می خواستم این کرنومتر پرداخت رو از کار بندازم
که هر وقت روش کلیک کردیم به پرداخت بازار هدایت شویم نه اینکه 30 ثانیه صبر کنیم بعد جواب بده

بازم سپاسگذارم

خب بله، اون دیالوگ که به خودی خود موضوعیت نداره، بعد از اینکه اون نمایش داده میشه، یه سری کد اجرا میشه (تو همون 30 ثانیه که شما میگی). شما فقط داری دیالوگ رو غیر فعال می کنی ولی به اون کدها دست نمی زنی. اون کدها اینه:

mHelper = new IabHelper(this, base64EncodedPublicKey);


Log.d(TAG, "Starting setup.");
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
@Override
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) ;

}
});

و بعدش این اجرا میشه:

IabHelper.QueryInventoryFinishedListener 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);
dialog.hide();
return;
}
else {
Log.d(TAG, "Query inventory was successful.");
// does the user have the premium upgrade?
mIsPremium2 = inventory.hasPurchase(SKU_PREMIUM);

// update UI accordingly

Log.d(TAG, "User is " + (mIsPremium2 ? "PREMIUM" : "NOT PREMIUM"));
}
dialog.hide();
updateUi();
Toast.makeText(getApplicationContext(), mIsPremium2? R.string.custompremium : R.string.notpremium, Toast.LENGTH_SHORT).show();
Log.d(TAG, "Initial inventory query finished; enabling main UI.");

}

};

و این کدها برای اینه که چک کنه اگه کاربر قبلا این محصول رو خریده، یه پیام بهش بده و دیگه برنامه کاربر رو به صفحه خرید هدایت نکنه

Ebrahimkh
جمعه 05 دی 1393, 18:49 عصر
دست گلت درد نکنه سعید جان
حقیقتش همین رو هم کامنت کردم جواب داد ولی وقتی پرداخت رو انجام دادیم برنامه خودکار Exit میزنه دوباره که برنامه رو ران کردم
با کلیک رو دکمه پرداخت بازم Exit میزنه

انگار یه جورایی این تیکه کد باید حتما باشه
چقد دوست دارم این تیکه کد نباشه و برنامه درست ران بشه

saeidd
جمعه 05 دی 1393, 20:36 عصر
دست گلت درد نکنه سعید جان
حقیقتش همین رو هم کامنت کردم جواب داد ولی وقتی پرداخت رو انجام دادیم برنامه خودکار Exit میزنه دوباره که برنامه رو ران کردم
با کلیک رو دکمه پرداخت بازم Exit میزنه

انگار یه جورایی این تیکه کد باید حتما باشه
چقد دوست دارم این تیکه کد نباشه و برنامه درست ران بشه

بعد از اینکه خرید انجام شد، این کد اجرا میشه:

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
Log.d(TAG, "Purchase finished: " + result + ", purchase: " + purchase);
if (result.isFailure()) {
Log.d(TAG, "Error purchasing: " + result);
setWaitScreen(false);
return;
}
if (!verifyDeveloperPayload(purchase)) {
complain("Error purchasing. Authenticity verification failed.");
setWaitScreen(false);
return;
}

Log.d(TAG, "Purchase successful.");

if (purchase.getSku().equals(SKU_PREMIUM)) {
Log.d(TAG, "Purchase is premium upgrade. Congratulating user.");
Toast.makeText(getApplicationContext(), mIsPremium2? R.string.custompremium : R.string.notpremium, Toast.LENGTH_SHORT).show();
mIsPremium2 = true;
updateUi();
setWaitScreen(false);

}
}
};
همین تیکه رو trace کن ببین تو کدوم خطش خطا میده که از برنامه میپره بیرون

Ebrahimkh
شنبه 06 دی 1393, 10:40 صبح
سعید جان بخاطر همه چیز ممنون

سوال آخر

بنظر شما این تیکه کد حتما باید تو برناممون باشه ؟؟؟

شما خودتون یه سورس پرداخت درون برنامه ای ندارید برا من آپ کنید؟؟



یه دنیا ممنون