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

اجرای برنامه با پرداخت درون برنامه ای فقط در یک گوشی

aydin  7 سال پیش  7 سال پیش
0 0

با سلام   بنده  میخام  برنامه  من  که  پرداخت  درون برنامه  ای  داره  فقط  در  یک  گوشی  اجرا بشه  ، و کاربر نتونه  از  طریق  اکانتش  در  چندین  گوشی  نصب  بکنه  ، خیلی  تحقیق  کردم  و  تقریبا  همشون  گفته بودن  سریال  گوشی  رو  بگیر  و  چک  کن  ، سریال  گوشی  رو  میگیرم  مشکل  اینه  که  این  سریال  گوشی  که به  عنوان  payload به بازار  فرستاده  میشه  و  موقع  برگشت  از  بازار  درستیش با  متد  purchasefisished  چک  میشه  ، باید  در  نصب  بعدی  ، در  یه  جایی  تو برنامه یا  تو بازار  ذخیره بشه  تا  موقع  نصب  صحتش  چک  بشه  ، حالا  نمیدونم  چطوری  یه  جایی  ذخیرش  کنم  ؟؟؟ با  sharedprefrences  نمیشه  چون  بعد از  حفظ  برنامه  از  کار  می  افته  ، با  دیتابیس  هم  تست  کردم  نشد  .  لطفا یکی  کمکم  کنه  لطفا  

 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
سجاد عباسی  7 سال پیش
+1 0

بنظر من باید ی کد سرور داشته باشید و از همه گوشی ها یه شناسه یکتا تولید کنید و چک کنین با این شناسه خرید انجام شده یا نه اگه انجام نشده بود یک پرداخت انجام دهید. و اطلاعات پرداخت با شناسه گوشی رو در دیتابیس ذخیره کنید.

پاسخ به سوال 
سجاد عباسی  7 سال پیش
+2 0

بنظر من باید ی کد سرور داشته باشید و از همه گوشی ها یه شناسه یکتا تولید کنید و چک کنین با این شناسه خرید انجام شده یا نه اگه انجام نشده بود یک پرداخت انجام دهید. و اطلاعات پرداخت با شناسه گوشی رو در دیتابیس ذخیره کنید.

+2 0
این شناسه یکتا هم خودش مسئله ای هست . خیلی روی این موضوع تحقیق کردم و تمام تاپیک های این انجمن رو خوندم ، ولی هیچ وقت به نتیجه نرسیدم . شناسه هر چی باشه ، میتونه تغییر کنه . و کاربری که قبلا از برنامه استفاده میکرده ، بعد از این تغییر دیگه نمیتونه از برنامه استفاده کنه و دوباره باید خرید کنه ! (7 سال پیش)
+3 0
خب میتونید ثبت نام و ورود توی برنامتون بزارید اینجوری اگه کاربر گوشیش هم تغیر کنه میتونه از برنامتون استفاده کنه. (7 سال پیش)
+2 0
درسته . ولی اینطوری همه میتونن با یک یوزر و پسورد با برنامه کار کنن . نمیشه فقط ثبت نامی باشه ، باید یک مشخصه ثابتی از دستگاه بگیرم که روی هر دستگاهی خرید انجام شد فقط روی همون کار کنه . یعنی مثل تلگرام نیست که با اکانتت روی هر دستگاهی وصل بشی .چون تلگرام یه برنامه شخصی و خصوصی هست و کسی نمیاد اکانت خودشو به کس دیگه ای بده . ولی برنامه من کاربردیه و ممکنه با یک اکانت همه باهش کار کنن . تنها راه گرفتن چیز منحصر به فرد و غیر قابل تغییر از دستگاهه ، که همچین چیزی وچود نداره ! (7 سال پیش)
+3 0
خب میتونین کد تصادفی توی هر گوشی تولید کنین و به سرور بدید و توی هر اجرا اونو بگیرید و چک کنین اگه یکی بود که هیچی اگه نبود یه نفر دیگه لاگین کرده با اکانت و این اکانت دیگه کار نیمکنه تا لاگین کنه دوباره وقتی لاگین کرد اون یکی گوشی از کار میافته اینجوری میشه فقط یه گوشی لاگین کنه بقیه سشن ها از کار میافته. (7 سال پیش)
+2 0
با تشکر از همه دوستان ، جوابشو یافتم و تست کردم درست کار کرد ، حالا کدشو میزارم شاید به درد کسی بخوره ، با این کد نه سرور نیاز هست و نه هیچی دیگه ،با استفاده از سریال گوشی یکتایی گوشی رو چک می کنه ، من مطابقت سریال رو در هر دو لیستنر چک می کنم mIsPremium = (inventory.hasPurchase(SKU_PREMIUM) && pur.getDeveloperPayload().equals(paylod)); (7 سال پیش)
+2 0
لینک روش خوبیه . فقط 2 مشکل داره .1 - اگه یه وقت این کد تصادفی تولید شده از گوشی کاربر حذف شد چی ؟ دیگه چطور میتونیم تعیین هویت کنیم ؟ 2 - این کد رو کجا میشه ذخیره کرد تا قابل دسترس نباشه ؟ shared preferences این امکان رو داره که داده ای توش ذخیره کنیم که کسی نتونه درش بیاره ؟ (7 سال پیش)
+3 0
مشکلی وجود نداره اگه حذف بشه چون میتونه دوباره لاگین کنه و دوباره بوجود بیاد. میشه تو sharedpref ذخیره کرد اگه روت نباشه بدست نمیاد میشه انکریپت کرد که روت هم باشه بدست نمیاد. (7 سال پیش)
+2 0
اگه حذف بشه و دوباره لاگین کنه ، همون کد قبلی که بدست نمیاد ، یه چیز دیگه بدست میاد که با اون چیزی که قبلا درسرور ذخیره شده فرق داره . (7 سال پیش)
+2 0
خب درسته فرق میکنه و لاگین میکنه و اون کد توی سرور تغیر میکنه و اگه کسی با کد قبلی بخاد از اپ استفاده کنه نمیتونه و باید دوباره لاگین کنه ایننجوری فقط یه یوزر توی حالت لاگین داریم و اگه کسی دیگه لاگین کنه این میپره و فقط ی دستگاه میتونه از اپ استفاده کنه . (7 سال پیش)
+1 0
دوستان دقت کنید ، این کد به هیچ وجه تصادفی تولید نمیشه و همیشه ثابته و همیشه در گوشی طرف کار خاهد کرد ، من کد رو سریال گوشی قرار دادم ، در گوشی هایی هم که دو سیمکارته هستند و دوتا سریال دارن ، سریال ها فقط در چند رقم آخر متفاوتن و در بقیه مشترک ، من مثلا payload رو 8 رقم اول قرار دادم که در هر دو سریال گوشی مشترک هست و اگر یه موقع سریال دوم رو استفاده کنه مشکلی پیش نیاد . نیاز به sharedprefrences هم نیست چون این کد جزوه اطلاعات خرید هست و وقتی به بازار لاگین می کنی به وسیله تکه کد بالا payload استخراج میشه و با سریال دستگاه مقایسه میشه و در صورت مطابقت برنامه ارتقا خاهد یافت . (7 سال پیش)
0 0
هر چند بار هم حذف کنه و نصب کنه ، مشکلی نیست و بعد از لاگین شدن در بازار برنامه payload برگشتی از بازار رو که همون سریال گوشی هست با سریال دستگاه مقایسه و نتیجه رو اعلام خاهد کرد . (7 سال پیش)
+1 0
شما از کد imei استفاده میکنید؟ در مورد گوشی یا تبلت یا شبیه ساز که سیم کارت ندارند چی؟ (7 سال پیش)
پاسخ به سوال 
aydin  7 سال پیش
+1 0

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

 

Purchase pur = inventory.getPurchase(SKU_PREMIUM);

mIsPremium = (inventory.hasPurchase(SKU_PREMIUM) && pur.getDeveloperPayload().equals(paylod));
if (mIsPremium ){
.
.
.
.
}
 
 
+2 0
سریال کد رو با چه روشی بدست میارید? (7 سال پیش)
0 0
دوستان دقت کنید ، این کد به هیچ وجه تصادفی تولید نمیشه و همیشه ثابته و همیشه در گوشی طرف کار خاهد کرد ، من کد رو سریال گوشی قرار دادم ، در گوشی هایی هم که دو سیمکارته هستند و دوتا سریال دارن ، سریال ها فقط در چند رقم آخر متفاوتن و در بقیه مشترک ، من مثلا payload رو 8 رقم اول قرار دادم که در هر دو سریال گوشی مشترک هست و اگر یه موقع سریال دوم رو استفاده کنه مشکلی پیش نیاد . نیاز به sharedprefrences هم نیست چون این کد جزوه اطلاعات خرید هست و وقتی به بازار لاگین می کنی به وسیله تکه کد بالا payload استخراج میشه و با سریال دستگاه مقایسه میشه و در صورت مطابقت برنامه ارتقا خاهد یافت . (7 سال پیش)

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