-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
hamedjj
خیلی سوالت نامفهومه فقط یه توضیح مختصر میدم امیدوارم به جوابت برسی
اول که پروژه را ایجاد کردی این مجوز را در manifest برنامه قرار میدی و در بازار آپلود میکنی تا درگاه بازار برای شما باز بشه بعد در قسمت برنامه ها سمت راست (قسمت پرداخت درون برنامه ای) ورود میشه و میتونی بری توش و محصولات خودتو ثبت کنی و کد دسترسی به آنها را دریافت کنی
نقل قول:
میتونی بری توش و محصولات خودتو ثبت کنی
ممنون از جوابتون
دقیقا منظور از محصولات چیه؟
منم پروژم به صورت کاربر ویژه هست
باید چه محصولی رو قرار بدم (مشکل من اینه)
----------------------------------------------------------------------------------------------------------------
چیزی که من فهمیدم:
1-برنامه ای که باید در بازار قرار بدیم ولی درخواست انتشارشو ندیم،همون برنامه اصلیه که فقط یک مجوز بهش اضافه شد
2-محصولات فقط یک شناسه است و چیز قابل دانلودی نیست.
آیا درست فهمیدم؟
-
نقل قول: پرداخت درون برنامه ای
کاملا درسته
منظور از این نیست که یعنی توضیحات و قیمت اون کاری که قراره انجام بشه
مثلا قراره با پرداخت 100 تومان شما به کاربر ویژه تبدیل بشوید
خوب وارد پرداخت درون برنامه ای در پنل بازار خود میشوید و نام (مثلا premium) و قیمت و توضیحات مربوطه را وارد میکنید که بازار وقتی کاربر را به صفحه پرداخت خود ببره بتونه قیمت و توضیحات لازم را به کاربر بده
این میشه محصول
اینم یه عکس از محصول برنامه billing
http://www.axgig.com/images/44275199197259810510.png
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
hamedjj
از طریق برنامه بازار
باید نرم افزار بازار رو گوشی نصب باشه
آقا من پروژه TrivialDrive و پروژه Billing شما رو تست کردم اما هر چی خط به خط مرور میکردم، بازم خطا میداد. تا اینکه یادم افتاد روی شبیه سازم اصلا بازار نصب نیستش.
خلاصه سوتی بزرگی بود، گفتم اینجا بگم که دوستان دیگه هم در جریان باشن.
-
نقل قول: پرداخت درون برنامه ای
ویدیوی آموزشی برای پرداخت درون برنامه ای هست؟ در حد مبتدی
-
نقل قول: پرداخت درون برنامه ای
فارسی نه
انگلیسی تو youtube سرچ کن ، شاید!!
-
نقل قول: پرداخت درون برنامه ای
سرچ کردم قبلا چیزی پیدا نکردم
-
نقل قول: پرداخت درون برنامه ای
سلام عزیزان
روی ایمولاتور میشه برنامه بازار رو نصب کرد آیا ؟؟؟ که بشه پرداخت درون برنامه ای رو تست کنیم ؟
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
poorman
سلام عزیزان
روی ایمولاتور میشه برنامه بازار رو نصب کرد آیا ؟؟؟ که بشه پرداخت درون برنامه ای رو تست کنیم ؟
اره میشه نصب کرد
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
gwtw2013
سرچ کردم قبلا چیزی پیدا نکردم
اینم ویدئو آموزش پرداخت درون برنامه ای :
http://www.youtube.com/watch?v=-h2ESH71hAI
اینم پروژه ویدئو بالا:
http://upir.ir/files92be/c4e07b7fb9871.zip
.................................................. ........................................
آموزش پرداخت درون برنامه ای برای انجین پونیتی:
http://www.youtube.com/watch?v=ieNFQtCdNEQ
.................................................. .......................................
آموزش پرداخت درون برنامه ای با سرویس MoVend:
http://www.youtube.com/watch?v=0CnPUsq3P-I
-
نقل قول: پرداخت درون برنامه ای
آقا وقتی من اون فایل های مورد نیاز که باید توی پوشه پروژه کپی بشن رو کپی میکنم هزارتا ارور دارم .فقط تونستم ارورهای مربوط به نام پکیج رو فیکس کنم.ارورهائی که فایل درون پرداخت میده رو هرچی فیکس میکنم دوباره برمیگرده حالت اول
-
نقل قول: پرداخت درون برنامه ای
این مقاله را بخون شاید درست شد
درباره ارور پرداخت درون برنامه ایه
http://www.wakeupsun.com/tutorial/so...oogle-android/
من که هیچ اروری دریافت نمیکنم و نمیدونم چطور برطرفشون کنم
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
rubiks.kde
اره میشه نصب کرد
ممنون، خب جالا چطوری نصب کنم !!!؟؟؟
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
poorman
ممنون، خب جالا چطوری نصب کنم !!!؟؟؟
با شبیه ساز برو بازار و بعد دانلود و بعد هم نصب:لبخند:
-
نقل قول: پرداخت درون برنامه ای
برای منم اینجوری بود درستش کردم
برو روی پروژت راست کلیک کن و Properties رو بزن
بعد برو تو قسمت Java Compiler
و تیک Enable Project Specific Settings را بردار
و ok کن برای من که درست شد .
درست شد خبر کن
-
نقل قول: پرداخت درون برنامه ای
یه سوال تو پروژه حمید بعد از آپدیت ui اونو چه جوری ذخیره کنیم که دفعه های بعد هم دیگه صفحه خرید برنامه رو نشون نده و همون Intent خودومون رو بده (شرمنده تازه کارم )
این جا رو میگم
public void updateUi() {
// update the car color to reflect premium status or lack thereof
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(Main.this, Page2.class);
startActivity(intent);
}
});
}
-
نقل قول: پرداخت درون برنامه ای
تو برنامه حامد برای امنیت دیتا ذخیره نمیشه و هر بار چک میشه
برای ذخیره دیتا باید از sharedprefences باید استفاده کنی
آخر کلاس mainactivity برنامه trivial driver را نگاه بنداز
void saveData() {
/*
* WARNING: on a real application, we recommend you save data in a secure way to
* prevent tampering. For simplicity in this sample, we simply store the data using a
* SharedPreferences.
*/
SharedPreferences.Editor spe = getPreferences(MODE_PRIVATE).edit();
spe.putInt("tank", mTank);
spe.commit();
Log.d(TAG, "Saved data: tank = " + String.valueOf(mTank));
}
void loadData() {
SharedPreferences sp = getPreferences(MODE_PRIVATE);
mTank = sp.getInt("tank", 2);
Log.d(TAG, "Loaded data: tank = " + String.valueOf(mTank));
}
-
نقل قول: پرداخت درون برنامه ای
ممنون از گپ گفتتون من نیم ساعته راهش انداختم:لبخندساده:
ی سوال
این چیه
static final int RC_REQUEST = 10001;
-
نقل قول: پرداخت درون برنامه ای
کد درخواستی برای پیگیری خرید
از کدوم روش استفاده کردی؟
هر بار برنامه premium بودن کاربر را چک میکنه یا با SharedPreferences ذخیره میکنه؟
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
hamedjj
کد درخواستی برای پیگیری خرید
از کدوم روش استفاده کردی؟
هر بار برنامه premium بودن کاربر را چک میکنه یا با SharedPreferences ذخیره میکنه؟
یعنی چی؟ ب چ دردی میخوره؟ تغیریش بدم چی میشه؟ رنجش چی هست؟؟
دومی اخه اگه کاربر اینترنت نداشته باشه برنامه از کار میوفته و کاربر ناراضی و ... عمه ...
-
نقل قول: پرداخت درون برنامه ای
هیچی ... چیزه خاصی نیست
یه کده برای پیگیری سیستم خرید شما
مربرط میشه به سیستم درون خرید
تغییرش بده ... هر چی دوست داری بزار
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
hamedjj
هیچی ... چیزه خاصی نیست
یه کده برای پیگیری سیستم خرید شما
مربرط میشه به سیستم درون خرید
تغییرش بده ... هر چی دوست داری بزار
آقا حامد هنوز وقت نشده سورس پرداخت درون برنامه ای را درست کنین؟ما خیلی احتباج داریم؟
-
نقل قول: پرداخت درون برنامه ای
هنوز نه
چند روز دیگه شروع میکنم به ساختن
سعی میکنم تمام جزئیات پرداخت درون برنامه ای (کالای مصرفی و ...) تا درون برنامه قرار بدم
ممکنه مثلا کالای مصرفی را نتونم پیاده سازی کنم یا زمان ببره
اول برنامه اولیه را میزارم تو سایت بعد کم کم کاملش میکنم تا بچه ها زیاد معطل نشن
فعلا
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
hamedjj
هنوز نه
چند روز دیگه شروع میکنم به ساختن
سعی میکنم تمام جزئیات پرداخت درون برنامه ای (کالای مصرفی و ...) تا درون برنامه قرار بدم
ممکنه مثلا کالای مصرفی را نتونم پیاده سازی کنم یا زمان ببره
اول برنامه اولیه را میزارم تو سایت بعد کم کم کاملش میکنم تا بچه ها زیاد معطل نشن
فعلا
سلام آقا حامد من پروژه trivia بازار را گرفتم و رو گوشیم نصب کردم اما فورس کلوز میده علتش نمیدونین چیه؟
-
نقل قول: پرداخت درون برنامه ای
چون نام محصولات در اون پروژه قرار داده نشده
public class MainActivity extends Activity {
// Debug tag, for logging
static final String TAG = "TrivialDrive";
// Does the user have the premium upgrade?
boolean mIsPremium = false;
// Does the user have an active subscription to the infinite gas plan?
boolean mSubscribedToInfiniteGas = false;
// SKUs for our products: the premium upgrade (non-consumable) and gas (consumable)
static final String SKU_PREMIUM = "premium";
static final String SKU_GAS = "gas";
// SKU for our subscription (infinite gas)
static final String SKU_INFINITE_GAS = "infinite_gas";
برو تو پوشه SDK
sdk\extras\google\play_billing
اونجا پروژه اصلی trivial هست (البته با مارکت گوگل)
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
hamedjj
چون نام محصولات در اون پروژه قرار داده نشده
public class MainActivity extends Activity {
// Debug tag, for logging
static final String TAG = "TrivialDrive";
// Does the user have the premium upgrade?
boolean mIsPremium = false;
// Does the user have an active subscription to the infinite gas plan?
boolean mSubscribedToInfiniteGas = false;
// SKUs for our products: the premium upgrade (non-consumable) and gas (consumable)
static final String SKU_PREMIUM = "premium";
static final String SKU_GAS = "gas";
// SKU for our subscription (infinite gas)
static final String SKU_INFINITE_GAS = "infinite_gas";
برو تو پوشه SDK
sdk\extras\google\play_billing
اونجا پروژه اصلی trivial هست (البته با مارکت گوگل)
ما منتظریم دیگه ان شاءالله تا عید نوروز درون برنامه ای را آماده می کنید.
-
نقل قول: پرداخت درون برنامه ای
سلام لطفا برای پرداخت درون برنامه ای یک فیلم فارسی درست کنید ممنون.
برای کافه بازار یا هم برای کندو
ممنون
-
نقل قول: پرداخت درون برنامه ای
سلام بچه ها
بهتون قول داده بودم پروژه پرداخت درون برنامه ای را بسازم
این پروژه ساخته شد و در نمونه برنامه های کوچک اما مفید قرار داده شد
لینک
حتما توضیحاتی که در github قرار دادم را بخوانید و اگر سوالی داشتید میتونید تو همین تاپیک ازم بپرسید
محصولات قابل مصرف را هنوز به این پروژه اضافه نکردم که هر موقع وقت داشتم حتما این کار را میکنم
اما فعلا سرم شلوغه
ممنون از صبر و تحملی که به خرج دادید
-
نقل قول: پرداخت درون برنامه ای
سلام
برای من خطا میده
برنامه اجرا میشه اما وقتی بر روی دکمه ( OnlinePremium ) کلیک میکنم خطا میده.
البته من تو بازار برنامه ای وارد نکردم فقط میخوام برای تست ببینم کار میده این کده یا نه
اینم خطاش:
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hamedjj.bazaarinappbilling/com.hamedjj.bazaarinappbilling.OnlinePremium}: java.lang.IllegalStateException: IAB helper is not set up. Can't perform operation: queryInventory
at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:2180)
at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThre ad.java:141)
at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99 )
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.jav a:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:560)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: IAB helper is not set up. Can't perform operation: queryInventory
at com.hamedjj.bazaarinappbilling.util.IabHelper.chec kSetupDone(IabHelper.java:756)
at com.hamedjj.bazaarinappbilling.util.IabHelper.quer yInventoryAsync(IabHelper.java:589)
at com.hamedjj.bazaarinappbilling.util.IabHelper.quer yInventoryAsync(IabHelper.java:616)
at com.hamedjj.bazaarinappbilling.OnlinePremium$3.onI abSetupFinished(OnlinePremium.java:71)
at com.hamedjj.bazaarinappbilling.util.IabHelper.star tSetup(IabHelper.java:267)
at com.hamedjj.bazaarinappbilling.OnlinePremium.onCre ate(OnlinePremium.java:62)
at android.app.Activity.performCreate(Activity.java:5 104)
at android.app.Instrumentation.callActivityOnCreate(I nstrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:2144)
... 11 more
لطفا بگید مشکل از کجاست
با تشکر
-
نقل قول: پرداخت درون برنامه ای
همین الان دوباره برنامه را امتحان کردم و هیچ مشکلی نداشت
آخرین نسخه برنامه بازار رو امولاتور شما نصب هست؟
-
نقل قول: پرداخت درون برنامه ای
سلام ممنون که جواب دادید.
برنامه کافه بازار را نصب کردم مشکل برطرف شد.
اما چندتا سوال برام پیش آمد که اگر میشه پاسخ دهید. با تشکر
1. اگر کاربر بر روی دکمه ( online Premium ) کلیک کند و برنامه کافه بازار بر روی گوشیش نصب نباشد برنامی ما خطا میده و می پیره بیرون و این یک اشکال بزرگ است.
2. اگر کاربر بر روی دکمه ( save premium ) کلیک کند و برای بار اول برنامه کافه بازار بر روی گوشیش نصب باشد و برنامه را خریداری کند و برای دفعات بعد که به برنامه مراجعه میکند دیگر نیازی به وصل شده به برنامه کافه بازار ندارد چون در خود برنامه اطلاعات را ذخیره کرده است. اشکال اینجاست که اگر کاربر برنامه کافه بازار را پاک کرده باشد برنامه ما هم دیگه اجرا نمیشه و خطا میده و می پره بیرون.
آیا میشه برای این دو سوال کاری کرد؟
مثلا: برای اولی یک پیام بده که برنامه کافه بازرا بر روی گوشی شما نصب نیست.
برای دومی نباید خطا بده و برنامه اگر خریداری شده اجرا بشه و اگر خریداری نشده یک پیام بده که برنامه کافه بازار نصب نیست.
برنامه اینطوری بشه خیلی عالی میشه نه :لبخند:
-
نقل قول: پرداخت درون برنامه ای
میشه کمی درباره کلید عمومی برنامه ( base64EncodedPublicKey ) توضیح بدبد.
باید کلید عمومی برنامه را از کجا دریافت کنیم؟
با تشکر.
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
kinglove0111
سلام ممنون که جواب دادید.
برنامه کافه بازار را نصب کردم مشکل برطرف شد.
اما چندتا سوال برام پیش آمد که اگر میشه پاسخ دهید. با تشکر
1. اگر کاربر بر روی دکمه ( online Premium ) کلیک کند و برنامه کافه بازار بر روی گوشیش نصب نباشد برنامی ما خطا میده و می پیره بیرون و این یک اشکال بزرگ است.
2. اگر کاربر بر روی دکمه ( save premium ) کلیک کند و برای بار اول برنامه کافه بازار بر روی گوشیش نصب باشد و برنامه را خریداری کند و برای دفعات بعد که به برنامه مراجعه میکند دیگر نیازی به وصل شده به برنامه کافه بازار ندارد چون در خود برنامه اطلاعات را ذخیره کرده است. اشکال اینجاست که اگر کاربر برنامه کافه بازار را پاک کرده باشد برنامه ما هم دیگه اجرا نمیشه و خطا میده و می پره بیرون.
آیا میشه برای این دو سوال کاری کرد؟
مثلا: برای اولی یک پیام بده که برنامه کافه بازرا بر روی گوشی شما نصب نیست.
برای دومی نباید خطا بده و برنامه اگر خریداری شده اجرا بشه و اگر خریداری نشده یک پیام بده که برنامه کافه بازار نصب نیست.
برنامه اینطوری بشه خیلی عالی میشه نه :لبخند:
اصولا کاربران برنامه مارکت را روی گوشی خودشون نگه میدارند و زیاد نباید فکر همچین مساله هایی باشیم
ولی در مورد اول میشه از سرویس گزارش خطا (اگه اسمشو درست گفته باشم) که قبلا تو همین تالار معرفی شده بود استفاده کرد که به جای پیغام معمولی force close پیغام شما نمایش داده شود و برنامه بسته شود. (( اگر تونستی این کار را رو پرداخت درون برنامه ای پیاده سازی کنی اینجا هم آموزش بزار تا بقیه هم استفاده کنند ))
درباره مورد دوم فکر نمیدونم برنامه بازار نصب نباشه برنامه carsh میشه یا نه ، اما اگر همین طوره که میگی ناشی از اینه که با اینکه اطلاعات کاربر ذخیره شده بعد از هر بار ورود دوباره به سیستم وصل میشه که با استفاده از فراخوانی متد onDestroy در شرط sharedprefences که ارتباط با بازار را قطع میکنه فکر نمیکنم دیگر برنامه crash بشه.
-
نقل قول: پرداخت درون برنامه ای
در مطلب قبلی گفتم اگر برنامه کافه بازار بر روی گوشی نصب نباشه برنامه ما که پرداخت درون برنامه ای داره خطا میده و میپره بیرون.
من یک ترای کش گذاشتم مشکل حل شد:تشویق:
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!
try {
mHelper.queryInventoryAsync(mGotInventoryListener) ;
} catch (Exception e){
Toast.makeText(getApplicationContext(), getString(R.string.nobazar), Toast.LENGTH_LONG).show();
dialog.hide();
}
}
آیا این روش بهترین روش هست یا نه؟
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
kinglove0111
در مطلب قبلی گفتم اگر برنامه کافه بازار بر روی گوشی نصب نباشه برنامه ما که پرداخت درون برنامه ای داره خطا میده و میپره بیرون.
من یک ترای کش گذاشتم مشکل حل شد:تشویق:
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!
try {
mHelper.queryInventoryAsync(mGotInventoryListener) ;
} catch (Exception e){
Toast.makeText(getApplicationContext(), getString(R.string.nobazar), Toast.LENGTH_LONG).show();
dialog.hide();
}
}
آیا این روش بهترین روش هست یا نه؟
اگه جواب داده چرا که نه .... مرسی
-
نقل قول: پرداخت درون برنامه ای
آره جواب داد. تازه خودم چندین بار چک کردم:قهقهه:
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
kinglove0111
میشه کمی درباره کلید عمومی برنامه ( base64EncodedPublicKey ) توضیح بدبد.
باید کلید عمومی برنامه را از کجا دریافت کنیم؟
با تشکر.
مستندات بازار را بخون
پنل پرداخت بازار یک کلید عمومی در اختیار شما قرار میدهد که باید در برنامهٔ خود از آن استفاده کنید. این کلید برای هر برنامه منحصر به فرد است. برای دریافت این کلید از بخشبرنامههای فروشنده بر روی کلید RSA برنامهٔ خود کلیک کرده و آن را دریافت کنید.
-
نقل قول: پرداخت درون برنامه ای
سلام به همگی
در مطلب قبلی یک کد دادم که اگر برنامه کافه بازار بر روی گوشی نصب نباشه دیگه خطا نده اما متوجه شدم یک ایراد دیگه هم داره
ایرادش اینکه اگر برنامه کافه بازار را نصب کنید باز هم برنامه شما مشکل داره و اجرا نمیشه
کد را به این شکل تغییر دهید همه چیز درست میشه:
try {
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) ;
}
});
} catch (Exception e){
Toast.makeText(getApplicationContext(), "برنامه کافه بازار بر روی تلفن همرای شما نصب نیست", Toast.LENGTH_LONG).show();
dialog.hide();
}
-
نقل قول: پرداخت درون برنامه ای
دوستان ممنون از توضیحاتی که دادین ولی من قرار نیست برنامه ام را در کافه بازار بفروشم آیا راهی وجود دارد که خودم مستقیم به بانک متصل بشم ؟
چون برای استفاده از کد های کافه بازار لازمه که حتما برنامه در کافه بازار قرار داده بشه
لطفا راهنمایی کنید کارم خیلی گیره این مساله هست
ممنونم
-
نقل قول: پرداخت درون برنامه ای
قبلا در یکی از تاپیک ها درباره این موضوع بحث شده خواهشا این سوالات را در این تاپیک قرار ندهید تا تاپیک از موضوع اصلی منحرف نشود ممنون
-
نقل قول: پرداخت درون برنامه ای
چرا ارور میده ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟
قضیش چیه؟؟؟
اونجاهایی که قرمز کردم!!!!!
public void onCreate(Bundle savedInstanceState) {
Log.d(TAG, "onCreate()");
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
context = MainActivity.this;
if (context.getPackageManager().hasSystemFeature(Pack ageManager.FEATURE_CAMERA_FLASH)){
mTorch = (ToggleButton) findViewById(R.id.toggleButton1);
mTorch.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Log.d(TAG, "onCheckedChanged");
try{
if (cam == null){
cam = Camera.open();
}
camParams = cam.getParameters();
List<String> flashModes = camParams.getSupportedFlashModes();
if (isChecked){
if (flashModes.contains(Parameters.FLASH_MODE_TORCH)) {
camParams.setFlashMode(Parameters.FLASH_MODE_TORCH );
}else{
showDialog(MainActivity.this, FLASH_TORCH_NOT_SUPPORTED);
}
} else {
camParams.setFlashMode(Parameters.FLASH_MODE_OFF);
}
cam.setParameters(camParams);
cam.startPreview();
}catch (Exception e) {
Log.d(TAG, "Caught " + e);
Toast.makeText(MainActivity.this,
"Camera/Torch failure: " + e, Toast.LENGTH_SHORT).show();
e.printStackTrace();
if (cam != null) {
cam.stopPreview();
cam.release();
}
}
}
});
surfaceView = (SurfaceView) this.findViewById(R.id.hiddenSurfaceView);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_P USH_BUFFERS);
surfaceHolder.addCallback(this);
} else {
showDialog(MainActivity.this, FLASH_NOT_SUPPORTED);
}
}
-
نقل قول: پرداخت درون برنامه ای
سلام دوستان خسته نباشید
با کد هایی که بازار و دوستان برای پرداخت گذاشتن به مشکل خوردم .... با کلی جستجو یه سری کد دیگه پیدا کردم .... خیلی خوب کار میکنه فقط یه مشکلی داره... مشکلش اینه پس از پرداخت تغییراتی که خواستیمو اعمال میکنه ولی برنامه رو یبار بازو بسته میکنم دوباره میره رو حالت قبل از پرداخت... دوستان یه نگاه کنید ببینید میتونید مشکلشو حل کنید ؟
کد ها :
package com.pay.pay;
import com.pay.pay.util.IabHelper;
import com.pay.pay.util.IabResult;
import com.pay.pay.util.Inventory;
import com.pay.pay.util.Purchase;
import com.pay.pay.util.Security;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.text.TextUtils;
import android.util.Log;
import org.json.JSONException;
import org.json.JSONObject;
import com.pay.pay.BuildConfig;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.PublicKey;
import java.security.Signature;
import java.security.SignatureException;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.X509EncodedKeySpec;
public class MainActivity extends Activity {
private Button clickButton;
private Button buyButton;
private static final String TAG = "com.pay.pay";
IabHelper mHelper;
static final String ITEM_SKU = "1151";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buyButton = (Button)findViewById(R.id.buyButton);
clickButton = (Button)findViewById(R.id.clickButton);
clickButton.setEnabled(false);
String base64EncodedPublicKey =
"MIHNMA0GCSqGSIb3DQEBAQUAA4G7ADCBtwKBrwC18T7oHr2Pb ZjqN1Sg8F8DzuLg3He5uf6uJ7fJcpAdttCpVFD11nEaarWJa3Y xn/1JB3EIBYyMFfWSvUnM8ffJ7DhPOLIccE7lYyrpZjKeB9QguPGW x7VUSKPkSkww99F4GuAM2rl4Q2LCxu6uXPDf98pg4h+doTN+nk rfqYqh6Tb13X9SMfnOVurpF/83pHWLd5C6x5g4n8RL8Bps8I2SUgEO/M95B74oVLm0CAwEAAQ==";
mHelper = new IabHelper(this, base64EncodedPublicKey);
mHelper.startSetup(new
IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result)
{
if (!result.isSuccess()) {
Log.d(TAG, "In-app Billing setup failed: " +
result);
} else {
Log.d(TAG, "In-app Billing is set up OK");
mHelper.enableDebugLogging(true, TAG);
}
}
});
}
public void buyClick(View view) {
mHelper.launchPurchaseFlow(this, ITEM_SKU, 10001,
mPurchaseFinishedListener, "mypurchasetoken");
}
public void buttonClicked (View view)
{
//clickButton.setEnabled(false);
buyButton.setEnabled(true);
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data)
{
if (!mHelper.handleActivityResult(requestCode,
resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
}
}
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener
= new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result,
Purchase purchase)
{
if (result.isFailure()) {
// Handle error
return;
}
else if (purchase.getSku().equals(ITEM_SKU)) {
consumeItem();
buyButton.setEnabled(false);
}
}
};
public void consumeItem() {
mHelper.queryInventoryAsync(mReceivedInventoryList ener);
}
IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener
= new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result,
Inventory inventory) {
if (result.isFailure()) {
// Handle failure
} else {
mHelper.consumeAsync(inventory.getPurchase(ITEM_SK U),
mConsumeFinishedListener);
}
}
};
IabHelper.OnConsumeFinishedListener mConsumeFinishedListener =
new IabHelper.OnConsumeFinishedListener() {
public void onConsumeFinished(Purchase purchase,
IabResult result) {
if (result.isSuccess()) {
clickButton.setEnabled(true);
} else {
// handle error
}
}
};
@Override
public void onDestroy() {
super.onDestroy();
if (mHelper != null)
mHelper.dispose();
mHelper = null;
}
public static boolean verifyPurchase(String base64PublicKey,
String signedData, String signature) {
if (TextUtils.isEmpty(signedData) ||
TextUtils.isEmpty(base64PublicKey) ||
TextUtils.isEmpty(signature)) {
Log.e(TAG, "Purchase verification failed: missing data.");
if (BuildConfig.DEBUG) {
return true;
}
return false;
}
PublicKey key = Security.generatePublicKey(base64PublicKey);
return Security.verify(key, signedData, signature);
}
}
-
نقل قول: پرداخت درون برنامه ای
شما می خواهید بعد از پرداخت متد زیر که false قرار دادید انجام بشه درسته؟
clickButton.setEnabled(true);
دقیقا توضیح بده چیکار میخوای بکنی؟؟
-
نقل قول: پرداخت درون برنامه ای
بله دقیقا
ولی میخوام این حالت سیو بمونه که کاربر اگه برنامه رو پاک کرد دوباره نصب کرد ، یا حداقلش بازو بسته کرد برنامه رو به مشکل نخوره دوباره پرداخت کنه .
-
نقل قول: پرداخت درون برنامه ای
این کد انگار یه چیزایی کم داره!!!!
وقتی دوباره وارد برنامه میشی (باید به اینترنت وصل باشی) کد بالا که گفتم اجرا میشه؟؟؟؟
-
نقل قول: پرداخت درون برنامه ای
تو خط 117 شما بعد از اینکه پرداخت تایید شد مقدار را false قرار دادی که!!!!
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener
= new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result,
Purchase purchase)
{
if (result.isFailure()) {
// Handle error
return;
}
else if (purchase.getSku().equals(ITEM_SKU)) {
consumeItem();
buyButton.setEnabled(false);
}
-
نقل قول: پرداخت درون برنامه ای
تقریبا مشکلی نداره ، فقط Button های که False بودن پس از پرداخت true میشن . اما برنامه یبار باز و بسته میشه میره با حالت اول false میشه طرف دوباره باید پرداخت کنه
مقدار دیفالت ClickButton ام false هست میخوام پس از پرداخت که مقدارش true میشه سیو شه بمونه این حالت برای کاربر ، حدافلش برنامه finish شد یا ReInstall کرد clickButton براش true باشه همچنان
-
نقل قول: پرداخت درون برنامه ای
با این کدی که گذاشتی اصلا حال نکردم
متد ها را منظم نوشته
اینجا آموزش کامل همراه با پروژه قرار دادم که میتونی استفاده کنی
هم به صورت ذخیره داده ها بعد از پزداخت هم به صورت چک کردن اینترنتی پرداخت از بازار:
https://github.com/hamedjj/BazaarInAppBilling
از این کدها استفاده کنی مشکلی نداری
-
نقل قول: پرداخت درون برنامه ای
خط 117 دکمه ای که برای خرید گذاشته بودمو false کردم فقط
-
نقل قول: پرداخت درون برنامه ای
با کد های شما مشکل داشتم Eclipse ام نمیدونم با win 8.1 نمیسازه یا مشکل کجاست عینا کدای شما رو کپی کردم ولی اروور داشتم
راستی برنامتونو تست کردم پرداختشم انجام دادم ولی پس از Reinstall همچی پرید و پرداختو دوباره باید انجام میدادم
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
badname
تقریبا مشکلی نداره ، فقط Button های که False بودن پس از پرداخت true میشن . اما برنامه یبار باز و بسته میشه میره با حالت اول false میشه طرف دوباره باید پرداخت کنه
مقدار دیفالت ClickButton ام false هست میخوام پس از پرداخت که مقدارش true میشه سیو شه بمونه این حالت برای کاربر ، حدافلش برنامه finish شد یا ReInstall کرد clickButton براش true باشه همچنان
هموشن باید از SharedPreferences استفاده کنی
تو لینک بالا نمونه پروژه با آموزش هست