و برای اینکه کاربر بتونه N بار از یک محصول خرید کنه چیکار باید بکنیم ،؟
(محصول نه VIP بودن کاربر باشه ، نه یک محصول مصرفی)
Printable View
و برای اینکه کاربر بتونه N بار از یک محصول خرید کنه چیکار باید بکنیم ،؟
(محصول نه VIP بودن کاربر باشه ، نه یک محصول مصرفی)
UP...
(با عرض معذرت)
1 - تعریف متغییر هانقل قول:
سوالات :
1- قسمت تعاریف میباشد
2- چیه و چرا ؟
3-چک میکنه که آیا کاربر VIP هی یا نه
3_A نمیدونم (چیه و چرا ؟)
3_B با کلیک بر روی دکمه به صفحه پرداخت درون برنامه ای میرود
3_C نمیدونم (چیه و چرا ؟)
3_D نمیدونم (چیه و چرا ؟)
1_4 نمیدونم (چیه و چرا ؟)
2_4 نمیدونم (چیه و چرا ؟)
3_4 بعد از پرداخت این تابع فراخانی میشود
2- درگاه درون پرداخت را راه اندازی می کند و در صورت نصب بودن بازار Setup finished. نمایش داده می شود. و می توانید پرداخت انجام دهید
3- بررسی کردن پریمیوم بودن کاربر، اگر کاربر پریمیوم باشد mIsPremium = true می شود.
3-ب : اینم که دکمه خرید است.
3-سی : وقتی صفحه درگاه پرداخت بسته می شود این متد اجرا می شود و جواب برگشت داده شده از درگاه را پردازش می کند.
3-دی : این متد کلا بلا استفاده است و همیشه true بر می گردونه، شکل درستش هم زیاد کاربرد نداره چون شما موقع خرید developer payload رو یک رشته ثابت تعریف کردی، ولی برای اطمینان می تونی با شکل درست این متد payload برگشتی از بازار رو با payload ـه موقع خرید چک کنی. ( که همیشه true است !!)
4-1 : این یک listener برای نتیجه خرید است، اگر خرید موفقیت آمیز باشید Purchase successful. نمایش داده می شود.
4-2 : موقع بستن اکتیوی این متد صدا زده می شود و چون دیگر نیازی به درگاه پرداخت ندارید آن را می بندد.
4.3 : این یک متد معمولی است و کار خاصی انجام نمی دهد، بعد از مرحله 2 ، متد مرحله 3 صدا زده می شود و اگر کاربر پریمیوم بود ( به صورت آنلاین بررسی می شود) دیگر نیازی به خرید نیست، این متد هم پریمیوم بودن کاربر رو چک میکنه.
دوستان من از پرداخت درون برنامه ای استفاده میکنم (از کدهای آقا حامد)
برنامه اکثرا خوب و کامل اجرا میشه اما متاسفانه در بعضی اجرا ها به محض کلیک بر روی کلید خرید از بازار با خطای زیر موجه میشم :
دلیل این خطا چیه ؟!:اشتباه:
مورد سوم که فرمودید اتفاق میوفته در حین اجرا چندبار خرید به خوبی و خوشی انجام میشه حتی ممکنه چند ساعت خرید انجام بدم و هیچ مشکلی پیش نیاد .همچنین دیدم بعضی مواقع هم بعد از چند خرید و یا در اولین خرید خطا داده و از برنامه خارج شده
(البته ناگفته نمونه میزان مبلغ رو 0 گذاشتم برای تست)
راستی حامد جان یه سوال آماتوری دارم (اولین باره دارم از پرداخت درون برنامه ای استفاده میکنم شرمنده دیگه)
این درگاه درون پرداخت بازار بخاطر مبلغ 0 هس اینطوریه؟ اگه مبلغ عوض بشه از این فرم در میاد ؟
دقیقا
اگه مبلغ رو در کنترل پنل بازار افزایش بدی حل میشه
این خرید به صورت ارتقا برنامه انجام میشود و فقط 1 بار اجازه خرید دارید
چطور شما هر بار خرید میکنید
اگر از اکتیویتی online premium در کدهاتون استفاده کردید بعد از ورود به برنامه باید چند ثانیه صبر کنید تا از طریق بازار ویژه بودن کاربر چک شود یا اینکه یه دیالاگ در اول صفحه پرداخت قرار دهید
کمی در کدهاتون تغییرات دادم (در تایپیکی جدا پیدا کرده بودم استفاده کردم)
با استفاده از این آموزشی که گفته شده توسط rubiks.kde
چطور این تابع رو طوری تغییر بدم که در صورت عدم محصول خریداری شده ، دوباره برای مصرف اون اقدام کنه !؟توی Else چی بنویسم لااقل خطا و خروج از برنامه نکنه!؟
احتمال میدم خطای برنامه بخاطر همین عدم مصرف محصول و خرید مجدد باشه
خوب وقتی شما محصولی را خریداری نکنید چطور میخواهید مصرف کنید
ببینید سیستم کار به این صورت است:
در مصرف خرید همان کد ارتقا برای خرید محصول در برنامه استفاده میشه و برنامه شما از بازار یه محصولی را میخره و بعد بر میگرده و برنامه را آپدیت میکنه.
برای اینکه محصول مصرفی بشه با یه متد چند خطی که توکن خرید اون محصول را در بر داره در هنگام خرید به بازار میگید که ای بازار این محصول قابل مصرفه پس کاربر اجازه داره دوباره خرید کنه و بعد برنامه بر میگرده و آپدیت میشه
من کد خرید مصرفی را دارم فقط هنوز وقت نکردم به پروژه گیت هاب همراه با آموزشش اضافه کنم
ببخشید دوستان یه سوال داشتم کدها رو نوشتم و فکر کن مشکلی نداشته باشه ولی برای اضافه کردن محصول تو بازار باید صبر کنیم تا برنامه تایید بشود بعد بتوانیم محصولات رو اضافه کنیم یا باید بعد از آپلود، مستقیم میتوانیم محصولات را اضافه کنیم. چون بعد از آپلود در قسمت محصولات/خدمات برنامه ای برای انتخاب وجود ندارد. با تشکر
سلام.
من برای پرداخت درون برنامه ای از کد جناب حامد استفاده می کنم. ضمن تشکر از ایشون، یه مشکلی پیش اومده که خواهش می کنم دوستان کمک کنن. برنامه رو در بازار آپلود کردم و در قسمت محصولات هم محصول جدید رو اضافه کردم. اما در برنامه موقع پرداخت خطا میده و مینویسه یافت نشد! عکسش رو هم میذارم.
لطفا کمک کنید.
هر دوش رو چک کردم درسته؛ حالا چند تا سوال:
1- اگه فقط و فقط از روی همین دو آیتم چک می کنه که برنامه هست یا نیست، چرا وقتی کلید rsa و شناسه کالای مربوط به برنامه تست جناب حامد رو برای برنامه خودم وارد می کنم بازم میگه یافت نشد، در حالی در برنامه ایشون درست کار می کنه.
2- ظاهرا بازار هنوز حسابم رو تایید نکرده؛ این میتونه دلیل باشه برای مشکل بوجود اومده؟
3- در قسمت محصولات و خدمات بازار، وقتی یه محصول جدید اضافه می کنیم، ظاهرا دیگه امکان حذفش نیست، درسته؟ اگه اینطوریه دلیلش چیه؟
من از برنامه اقا حامد استفاده کردم و عملیات درون پرداخت به درستی انجام میشه ولی وقتی از برنامه میام بیرون دوباره از کاربر میپرسه که میخاد برنامه رو ارتقا بده یا ن
در واقع در هر بار ورود به برنامه میاد انلاین چک میکنه که کاربر ویژه شده یا ن
چکار باید بکنم که این مشکلم حل بشه ممنون میشم کمکم کنید
خب دوست عزیز توی همون برنامه ی آقا حامد یک مثال درون پرداخت آنلاین (هربار در ورود کاربر ویژه بودن کاربر چک میشه) هست و یک مثال درون پرداخت آفلاین (فقط یک بار ویژه بودن کاربر چک میشه) هم وجود داره
شما از مثال درون پرداخت آفلاین استفاده کن
البته اینم بگم که درون پرداخت آنلاین امنیت بیشتری داره
1-نمیدونم والا. تا اونجایی که من میدونم فقط همین دوتا هستن. مطمعن بشید که کلید rsa و شناسه ی کالا رو در هر دوتا اکتیویتی مربوط به ارتقاع سطح کاربری (همون قسمت خرید) و اکتیویتی مربوط به مطالب وابسته به پرداخت درون برنامه ای صحیح و یکسان وارد کردید
2-نه ربطی به تایید شدن حساب نداره
3-آره تا اونجایی که میدونم امکان حذفش وجود نداره علاوه بر این امکان حذف برنامه ها هم از لیست برنامه ها وجود نداره. نمیدونم والا برو از خودشون بپرس
چرا اینجوریه؟ تو اون برنامه تستی، من شناسه و کلید rsa رو عوض کردم و یه چیز الکی از خودم دادم، بازم برنامه رو میشناسه و تا صفحه پرداخت میره!!!!
حامد جان یه سوال دارم؛ من نمیخوام با یه حساب کاربری ویژه، بشه با یه بار خرید، برنامه در دستگاهای مختلف بصورت فول ورژن اجرا بشه؛
پستهای قبلی همین تاپیک رو که نگاه می کردم دیدم یه جایی شما گفتی تنها راهش اینه که در هر بار اجرای برنامه، از طریق اینترنت چک بشه. حالا من برای ذخیره ویژه بودن کاربر از SharedPreferences استفاده می کنم.
سوالم اینه که چرا با این روش نمیشه؟ یعنی وقتی برنامه روی یه سیستم جدید نصب میشه و کاربر میخواد از طریق همون حساب کاربری قبلی استفاده کنه، خب اون لحظه از اینترنت چک کنه و متوجه بشه که دستگاه عوض شده!
یعنی احتمالا بازار مثلا سریال دستگاه رو یا یه چیز دیگه رو نگه میداره دیگه؟ خب تو اولین بار اجرا روی دستگاه جدید، با SharedPreferences هم که چیزی ذخیره نکردیم فعلاً، برنامه به حالت دمو هستش، کاربر دکمه خرید رو میزنه، برنامه از اینترنت چک می کنه و متوجه میشه که این حساب کاربری برنامه رو خریده ولی با یه دستگاه دیگه.
درسته؟
برای اینکه یه کاربر نتونه نسخه کامل برنامه خرید شده رو در بیش از یه دستگاه نصب کنه، من با استفاده از توابع API که بازار ارائه میده، کدهای سمت کلاینتش رو نوشتم، ولی مشکل اینه که ظاهرا بازار کاری به این مساله نداره، یعنی وقتی با استفاده از تابع:
mHelper.launchPurchaseFlow(PurchaseApp.this, SKU_PREMIUM, RC_REQUEST,
mPurchaseFinishedListener, payload);
کاربر به صفحه خرید هدایت میشه، بازار چک می کنه می بینه این کاربر قبلا این محصول رو خریداری کرده و براش فرقی نمی کنه که در این دستگاه بوده یا نه، بنابراین اجازه خرید مجدد نمیده و از اکتیویتی میاد بیرون و نتیجه «خرید موفق» رو بر می گردونه.
از دوستان کسی راه حلی برای این مساله داره؟
دوستان ببخشید ...
بنده الان نرم افزاری بعنوان مثال تست بطور کامل و ریلیز شده طراحی کردم بعد کد مجوز رو هم com.farsitel.bazaar.permission.PAY_THROUGH_BAZAAR بهش دادم ... آپلود هم کردم و اجازه ورود محصولات درون برنامه برای من فعال شد ...آیا باید قیمت رو اینجا بهش بدم یا هیچی ندم؟
حالا یه سوال دیگه:
این برنامه خودم که مثلا تست است رو باید بهش کد base64EncodedPublicKey بدم تا اینجا درست ولی وقتی برنامه تست جدید خودمو با کدهای درون برنامه به همراه همون کد base64EncodedPublicKey قراردادم این نسخه رو هم باید آیا آپلود کنم کجاآپلود بشه؟
سوال اول :
باید یه محصول برای برنامه تعریف کنی.قیمت رو صفر بذار فعلا تا وقتی خودت میخوای درون پرداخت رو تست کنی مجبور نباشی پول بدی.
بعد که ازش مطمئن شدی قیمت رو عوض کن به چیزی که میخوای و درخواست بررسی بده.
سوال دوم:
بله باید آپلود کنی.از پنل مدیریت برنامه رو باز کن و از تب "بسته ها" نسخه جدید رو آپلود کن.
خلاصه بگم که شما اول یه نسخه اولیه که حاوی پرمیشن com.farsitel.bazaar.permission.PAY_THROUGH_BAZAAR هست رو آپلود می کنی و اصلا مهم نیست که نرم افزار سالم باشه یا نه.
بعد از این کار بازار میفهمه که برنامه شما درون پرداخت داره و یه کلید RSA بهتون میده که داخل نرم افزار بذارید.
این کلید به این درد میخوره که وقتی برنامه شما به بازار وصل میشه بازار میفهمه که کدوم برنامه داره خرید انجام میده.به این کلید "شناسه نرم افزاری" هم میگن.
علاوه بر کلید , شما باید یک یا چند محصول رو برای فروش تعریف کنید (از قسمت محصولات)
که هر محصولی که تعریف می کنید یه کدی داره که برای فروش اون محصول باید کد رو در SKU_PREMIUM قرار بدی.(همین نمونه پروژه ای که حامد عزیز گذاشته)
تمام شد.حالا این نسخه جدید نرم افزارتون رو تو بازار آپلود میکنید.
ممنونم ازت آقا امین لطف کردین توضیحاتتون کامل بود ...
فقط اینو که گفتی فعلا مبلغو صفر بده توی اضافه کردن محصول بود دیگه درسته؟؟؟؟
وقتی نسخه نهای رو در قسمت آپلود بسته جدید فرستادم مبلغ اونجا هم بدم یا صفر بدم؟ بعد درخواست بررسیو بزنم؟
با تشکر
موقع تعریف محصول مبلغ صفر میدی.برای اینکه خودت تست کنی درون پرداختت رو.اگه از کدت مطمئنی که همون اول مبلغ مورد نظرت رو بذار اصلا تست هم نکن.مثل من :D
برای برنامه های درون پرداخت فقط باید قیمت محصول رو بذاری.
اونجا که برنامه رو آپلود می کنی از تب کناری "بروزرسانی مشخصات" نباید قیمت وارد کنی چون اون قیمت مال برنامه های فروشی هست.باید اونو خالی بذاری.
بعد از اینکه نسخه نهایی رو آپلود کردی برو تو قسمت محصولات و قیمت محصول رو به قیمت مورد نظرت عوض کن.
من دو بار یادم رفته بود قیمت بذارم و همون صفر گذاشته بودم واسه تست و درخواست بررسی داده بودم.ایراد گرفتن و گفتن اول قیمت محصول رو بذار.خلاصه یه هفته برای همین عقب افتادم.
پس اول قیمت بذار بعد درخواست بررسی بده.
من وقتی دوباره نسخه جدید رو میخوام بفرستم این اررور رو میده : There is currently a package with the same version code for this app in the repository.