پلاگین پرداخت کافه بازار برای یونیتی – نسخه 1.0.1

پرداخت درون برنامه‌ای توی یونیتی یکسری چالش ها و مشکلات خاص داره.

مثلا پلاگین سوملا که از طرف کافه بازار معرفی شده پیچیدگی زیادی داره و پیاده سازی اون برای هر کسی ساده نیست.

سایر پلاگین های موجود هم تا جایی که ما تست کردیم عملکرد درستی ندارن.

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

و حالا تصمیم گرفتیم اون رو با بقیه، رایگان به اشتراک بذاریم.

دانلود پلاگین

برای استفاده از این پلاگین پروژه خودتون رو باز کنید و بعد پکیج زیر رو دانلود و باز کنید. گزینه import رو بزنید تا فایل‌های پلاگین به پروژه اضافه بشه.

دانلود یونیتی پکیج پلاگین

 

پیاده سازی پلاگین

در پوشه bobardo IAB پریفب com.bobardo IAB رو بکشید و داخل صحنه خودتون رها کنید. این gameObject تمام عملیات مربوط به خرید رو مدیریت میکنه. نکته مهم اسم این گیم آبجکت هست که نباید تغییر کنه چون نتایج خرید به این گیم آبجکت برمیگرده.

در پوشه plugins -> Android فایل AndroidManifest.xml رو باز کنید. اگر این پوشه و این فایل رو ندارید باید بسازید.

نمونه فایل منیفست

در این فایل داشتن پرمیشن زیر برای ارتباط با کافه بازار لازمه:

<uses-permission android:name="com.farsitel.bazaar.permission.PAY_THROUGH_BAZAAR" />

همچنین تعریف این اکتیویتی قبل از بسته شدن تگ application ضروریه:

<activity

android:name="com.bobardo.bazaar.iab.ServiceBillingBazaar$IabActivity"

android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />

در صحنه بازی روی پریفب com.bobardo IAB که قبلا قرار دادید کلیک کنید. به این پریفب دو تا اسکریپت وصل شده که باید اطلاعات پرداخت رو داخل اونها وارد کنید.

اسکریپت StoreHandler که وظیفه برقراری ارتباط با پلاگین رو داره، دو تا پارامتر داره. اول public key که برابر با کلیدی هست که بعد از انتشار برنامتون توی بازار دریافت می‌کنید. دوم payload که این مقدار توسط خود شما مشخص میشه و میتونه خالی هم باشه. (در مورد لزوم این پارامتر میتونید مستندات کافه بازار رو مطالعه کنید)

اسکریپت InAppStore رابط شما و عملیات کافه بازار هست که تمام کار شما با همین اسکریپت هست. یک آرایه به اسم products داره که باید محصولات خودتون رو داخلش تعریف کنید. ابتدا طول آرایه رو مشخص کنید و بعد برای هر محصول نام آیدی و قابل مصرف (consumable) یا صرفا خریدنی (non consumable) بودن رو تعیین کنید. (در رابطه با محصولات قابل مصرف یا صرفا خریدنی در مستندات کافه بازار بخونید یا از طریق کامنت سوال کنید)

دقت داشته باشید آیدی محصولات به درستی وارد بشه و شامل فاصله یا کاراکتر اضافه نباشه.

بعد از انجام این مراحل کافیه از طریق اسکریپت InAppStore عملیات مورد نظر خودتون رو انجام بدید.

پروژه نمونه رو میتونید از انتهای صفحه دانلود کنید.

 

توضیح عملکرد

تابع purchaseProduct شماره ایندکس محصول مورد نظر شما در آرایه products رو میگیره و اقدام به خرید اون میکنه.

پاسخ خرید در صورت موفقیت به تابع purchasedSuccessful فرستاده میشه به همراه اطلاعات کامل از خریدی که انجام شده. در صورت وجود خطا در خرید، تابع purchasedFailed صدا زده خواهد شد که بر اساس خطای اتفاق افتاده میتونید به کاربر پیام مربوط رو نمایش بدید.

تابع checkIfUserHasProduct شماره ایندکس محصول مورد نظر شما در آرایه products رو میگیره و بررسی میکنه آیا کاربر این محصول رو قبلا خریده و مصرف نشده یا نه.

پاسخ بررسی خرید کاربر در صورتی که کاربر محصول رو داشته باشه و مصرف نشده باشه به تابع userHasThisProduct ارسال میشه به همراه اطلاعات کامل از خرید کاربر. و در صورتی که کاربر محصول رو نداشته باشه یا در فرآیند بررسی خطایی رخ بده تابع failToGetUserInventory صدا زده میشه به همراه جزئیات خطا.

توجه: در صورتی که کاربر در کافه بازار حساب نداشته باشه یا وارد حساب کاربری خودش نشده باشه با خطا مواجه میشه. همچنین در صورتی که کاربر کافه بازار رو روی گوشی خودش نصب نداشته باشه.

کدهای خطا:

کد خطای ۱ ، ۲ ، ۳ ، ۴ ، ۵ : به هر دلیلی در برقراری ارتباط با کافه بازار و initial کردن فرآیند خطا رخ داده.

کد خطای ۶ ، ۷ : کاربر از عملیات خرید انصراف داده و خرید کامل انجام نشده.

کد خطای ۸ : خرید کاربر با موفقیت انجام شده اما کالای خریداری شده مصرف نشده. (فقط در مورد کالاهای مصرف شدنی. یعنی اگر کاربر دوباره اقدام به خرید کنه از حسابش هزینه ای کسر نمیشه و جواب خرید موفقیت آمیز برگشت داده میشه)

کد خطای ۹ : کاربر وارد حساب کاربری خودش در کافه بازار نشده.

کد خطای ۱۰ : به هر دلیلی در برقراری ارتباط با کافه بازار و initial کردن فرآیند خطا رخ داده.

کد خطای ۱۱ : کاربر این محصول رو در حساب خودش نداره یا قبلا مصرف شده.

کد خطای ۱۲ ، ۱۳ ، ۱۴ : خطایی در ارتباط با کافه بازار رخ داده.

کد خطای ۱۵ : شما فراموش کردین مقدار public key رو در پروژه قرار بدید.

کد خطای ۱۶ : خطای ناشناخته رخ داده.

کد خطای ۱۷ : مقادیر برگشتی از سمت کافه بازار نامعتبره.

 

مشاهده پروژه در Github

دانلود پروژه نمونه پرداخت درون برنامه‌ای بازار  (پیاده سازی شده با یونیتی ۵.۴.۲)

دانلود فایل apk پیاده سازی شده جهت تست

آموزش نحوه جلوگیری از هک شدن پرداخت

 

لطفا برای اطلاع از تغییرات و نسخه‌های جدید در خبرنامه سایت عضو بشید.

توجه: تمامی حقوق این پلاگین متعلق به bobardo.com می‌باشد و کسی حق فروش آن به سایرین را ندارد.

 

تغییرات نسخه ۱.۰.۱ (۱۳۹۶/۰۱/۲۵)

  • رفع اشکال فرآیند خرید در برخی گوشی‌های ضعیف

 

http://s8.picofile.com/file/8281595742/support_us_banner.jpg

 

این پلاگین رایگان منتشر شده و رایگان خواهد موند. اما شما میتونید در صورت استفاده و رضایت، ما رو از حمایت خودتون بهره‌مند کنید.

حمایت مالی به میزان دلخواه -> کلیک کنید

حمایت معنوی، به هر شکلی که بتونه به ما انگیزه بده 😉

 

لطفا بازخوردها و نظرات خودتون رو از طریق کامنت ثبت کنید.

 

من عاشق برنامه‌نویسی، یاد گرفتن و آموزش دادن هستم. انجام کارای جدید توی برنامه‌نویسی رو بیشتر به چشم سرگرمی میبینم تا کار.

حجت ریحانه

من عاشق برنامه‌نویسی، یاد گرفتن و آموزش دادن هستم. انجام کارای جدید توی برنامه‌نویسی رو بیشتر به چشم سرگرمی میبینم تا کار.

167 ديدگاه بر “پلاگین پرداخت کافه بازار برای یونیتی – نسخه 1.0.1

  1. سلام
    خیلی عالیه
    خودم همین الان تست کردم رو بازی خودم عالی عمل میکنه و خیلی سریع

    فقط یک سوال :
    الان این پلاگین ضد هکه یا فقط یه پرداخت سادست ؟

    1. سلام. این پلاگین فقط عملیات خرید و بازیابی خرید رو انجام میده. به زودی آموزش جلوگیری از هک رو هم قرار میدیم.

  2. میشه زمان دقیق این انتشار آموزش رو معلوم کنید ؟
    چون بازی من فقط منتظر دکمه انتشار هست که انشاا… شنبه درخواست انتشار میدم

    بازم ممنون

    1. بله. طی ۵ روز آینده قطعا منتشر میشه.
      به هیچ عنوان قبل از ایجاد امنیت پرداخت بازی رو منتشر نکنید 😉

  3. درود به تمامی عزیزان در تیم bobardo و دوستان فعال در سایت

    کار فوقعلاده ایی کردین و مهمتر از همه دعوت عام بازی سازان , به سر سفره دانش خودتون !!

    همیشه برقرار و پیروز باشید

  4. درود
    بسیار خوشحال شدم که شما دانشتون به زیبایی به اشتراک گذاشتید و نه تنها خودتان بلکه دوستان بازیساز و توسعه دهنده مهمان علمتان کردید.
    این مشکل پرداخت بصورت کلاسیک بود و بحث امنیت پرداخت بسیار وبسیار مهم بود.
    اینکه ماحصل تلاشتان بصورت رایگان در اختیار همه قرار دادید جای بسی تشکر دارد.
    حقیقتا قصد داشتم تکنیک چک کردن با وب سرویس پیاده سازی کنم اما با دیدن این پلاگین پشیمان شدم و فعلا با همین سیستم ادامه توسعه بازی جدیدم ادامه میدهم. فکر کنم تنها محدودیت این سیستم تعداد ۵۰۰۰۰ درخواست روزانه برای هر اپلیکشن در کافه بازار هست که بنظرم برای ایران کاملا پاسخگو هست.
    با تشکر از شما
    محمد ذاکری

    1. سلام.
      ممنون از لطف و حمایتتون
      هیچ تفاوتی بین بررسی از طریق وب سرویس و داخل بازی وجود نداره. همونطور که نوشتم فقط در صورتی که بخواین خریدها رو سمت سرور ذخیره کنید نیاز به وب سرویس دارید.
      در صورتی که تعداد درخواست‌ها در روز بیشتر از ۵۰ هزار باشه همونطور که توی مستندات نوشته شده، میتونید درخواست افزایش این تعداد رو بدید.
      در صورت تمایل بعد از استفاده از پلاگین و انتشار، بازی تون رو به ما هم معرفی کنید.
      موفق باشید.

  5. با سلام و خسته نباشید .
    واقعا از این که شما چینین پلاگین خوب و واقعا راحتیو ساختین کمال تشکر رو دارم ، و این که در اختیار بازی ساز ها قرار دادین.
    سرعت پلاگین شما واقعا با مقایسه با بقیه خیلی عالیه و راحت میشه ارور هارو برطرف کرد که برنامه کرش نکنه .
    شما با این پلاگین کمک خیلی بزرگی به بازی ساز ها کردین ، مطمئن باشید تیم ها ما و دیگر تیم ها از شما حمایت میکنند.
    به امید موفقیت های روز افزون شما و تیم تان

  6. سلام دوست گرامی
    بسیار تشکر میکنم از خدمت بزرکی که به صنعت بازی سازی کشور کردید
    این پلاگین برای چه نسخه ای از ورژن های یونیتی جواب میده؟
    یونیتی ۴.۶؟
    یونیتی ۳
    یونیتی ۵
    ؟؟ یا برای همه ی نسخه های یونیتی جوابگو هست؟
    متشکرم

    1. سلام
      ممنون از لطفتون.
      این پلاگین رو ما از ورژن ۴.۶ یونیتی داریم استفاده میکنیم و در حال حاضر با ورژن ۵.۵ هم جواب میده و تست شده.
      تنها مسئله اینه که فایل یونیتی پکیج فعلی با ورژن ۵.۴.۲ اکسپورت شده و ممکنه روی ورژن های قبلی جواب نده.
      در این صورت باید فایل ها رو به صورت دستی از داخل پروژه نمونه به پروژه خودتون اضافه کنید.

  7. عرض سلام و خسته نباشید.
    میخواستم بدونم جطور میشه موقع خروجی گرفتن اسم بازی رو فارسی تایپ کرد
    player setting . product name

    ممنون تشکر

    1. سلام
      توی ورژن های جدید یونیتی که تست کردیم، اسم رو اگر توی یونیتی فارسی بنویسید، اونجا بد نشون داده میشه، ولی وقتی روی گوشی نصب بشه درست خواهد بود.
      ورژن ۵.۴.۲

    1. سلام
      این تابع به درستی صدا زده میشه.
      وقتی شما چک میکنین که آیا کاربر این محصول رو قبلا خریده یا نه, اگر خریده باشه شما باید محصول رو بهش بدید. که کاملا مشابه این هست که یک خرید جدید انجام بده. برای همین purchaseSuccessful صدا زده میشه.
      بیشتر استفاده چک کردن Inventory برای محصولات غیرمصرفی هست. که کاربر تنها یک بار خرید رو انجام میده.
      هرچند شما میتونید کد رو تغییر بدید و در صورتی که این محصول رو قبلا خریده بود تابع دیگه ای صدا بزنید.

  8. merc
    tabei baraye consume product nadare?
    age to farayande kharid moshkel pish biad va ye item consum nashe che bayad kard?
    tabei ke kol inventory ro bargardone chetor?
    va tabei ke item haye foroshi dar bazaar ro bargardone

    1. برای مصرف کردن توی این نسخه از پلاگین (۱.۰) تابع مجزا تعریف نشده.
      میتونید در صورتی که کاربر محصول رو خریده اون رو به شکل مصرفی دوباره خرید کنید. توی این حالت از اونجایی که محصول قبلا خریداری شده از کاربر تقاضای پرداخت نمیشه و فقط محصول مصرف میشه.
      امکان چک کردن یا گرفتن تمام محصولات نیست و برای هر محصول باید جدا درخواست بدید.

    1. سلام
      بازار سرویسی برای دریافت اطلاعات محصولات داره اما در نسخه فعلی این پلاگین (۱.۰) این قابلیت وجود نداره.

  9. سلام
    این قابلیت وجود داره که پلاگین رو در یونیتی ۴.۷ هم استفاده کنیم؟ (چون پریفب ساخته شده در پلاگین قابل استفاده در ۴.۷ نیست)
    جالا اگر یک گیم آبجکت خالی با نام com.bobardo IAB در صحنه قرار بدیم و اون دوتا اسکریپت رو روش بندازیم درست کار میکنه؟

    1. سلام.
      چون پکیج با نسخه های جدیدتر یونیتی ساخته شده امکان باز کردن پکیج وجود نداره توی ورژن ۴.۷
      کاری که گفتید کافیه, گیم آبجکت حتما باید به همین اسم باشه و اون دو اسکریپت داده بشه بهش.
      فایل منیفست هم که لازمه درست بشه.

  10. سلام . ممنون واسه این کاره ارزندتون . ببخشید من تازه کارم . شاید سوالم مسخره باشه. دقیقا کجا باید اسم محصولات و نوعشون رو وارد کنم؟
    مثلا ۱۰۰ سکه و ۲۰۰ سکه؟

    1. سلام
      تشکر از لطفتون
      نه، سوالتون مسخره نیست! این فرآیند یکم اولاش سخته فهمیدنش.
      بذارید با مثال توضیح بدم.
      شما توی پنل بازار محصولاتتون رو تعریف میکنید. مثلا برای ۱۰۰ سکه یک محصول به اسم coin100 و برای ۲۰ الماس یک محصول به اسم gem20
      توی صحنه بازی یونیتی، روی پریفب com.bobardo IAB بزنید. داخل کامپوننت InAppStore یک آرایه به اسم products هست که در حالت عادی خالیه. تعدادش رو بکنید ۲
      بعد برای آیتم اول آیدی رو بزنید coin100 و برای دومی gem20
      برای هر دوی این محصولات consumable رو انتخاب کنید.
      حالا از این به بعد شما فقط با شماره ایندکس محصولات کار دارید. برای محصول ۱۰۰ سکه با شماره صفر و محصول ۲۰ الماس با شماره یک.
      روی دکمه که کلیک میشه میگید برو محصول شماره صفر رو بخر
      بعد که خرید انجام شد توی تابع purchasedSuccessful چک میکنید اگر خریدی که انجام شده شماره صفر بود، به کاربر ۱۰۰ سکه میدید و اگر یک بود ۲۰ الماس.

      برای درک بهتر فرآیند خرید از طریق این پلاگین میتونید نمونه پروژه رو هم ببینید.
      موفق باشید 🙂

    1. لازم نیست پکیج نیم رو جایی توی پلاگین وارد کنید.
      موقع خروجی گرفتن از بازی توی یونیتی build setting و بعد player setting داخل بخش other setting اسم پکیج بازی رو مشخص میکنید.

  11. سلام و خسته نباشید
    من این پلاگینتون رو استفاده کردم. ولی وقتی اکتیویتی کافه بازار باز میشه، یک دفعه ای برنامه پیغام میده روی صفحه:
    Unfortunately, [app name] has stopped.
    به نظرتون مشکل از کجاست. مشکل از کافه بازاره و یا اکتیویتی ها رو اشتباه وارد کردم؟

    1. سلام
      مطمئن بشید اطلاعات پرداخت کافه بازار رو درست وارد کردید.
      مخصوصا public key برنامه

    2. سلام عزیز . برا منم همچین مشکلی هست . از سوملا هم استفاده کردم بازم همچین مشکلی بوجود اومد . مشکل شما حل نشده؟؟

      جا داره از سازنده پلاگین هم تشکر ویژه کنم . مرسی

    3. من مشکلم حل شد. یه مشکل مسخره .
      وقتی کلید رو از کافه بازار کپی میکردم علاوه بر space یه enter هم باهاش کپی میشد که باید پاکش کرد . خوشحالم که این مشکل برام پیش اومد تا من فک کنم مشکل از سوملا هست و پلاگین شمارو تست کنم .واقعا خوب و تمیز نوشته شده. از دوستان تقاضا دارم حمایت مالی رو دریغ نکنن و زحمت این عزیز رو بی پاسخ نزارن . سپاس جناب

  12. با سلام
    من بعد از اینکه این پکیج رو به پروژه ام اضافه کردم موقع خروجی گرفتن این خطا رو میذه
    unable to convert classes into dex format
    سرچ کردم گفتن مربوط به jdk هست البته تو متن خطا هم ورژن jdk اومده
    شما از چه ورژن JDK برای ساخت این پکیج استفاده کردید
    سپاس

    1. سلام
      مطمئن بشید توی پوشه Plugins – Android توی پروژتون فایل jar دیگه ای برای پرداخت وجود نداره.
      این خطا در صورتی اتفاق میافته که فایل های jar پروژه شما با هم تداخل داشته باشن و شامل محتوای یکسان باشن.

    2. این مشکل برای من هم هست .

      من پرداخت خود یونیتی رو ایمپورت کردم و بخاطر همین هست که ارور میده.

      حالا یه سوال.
      من مدام باید پلاگینا رو وارد و خارج کنم؟؟؟ راهی نیست واسش؟؟
      با کد نویسی میشه پلاگینا رو فعال و غیرفعال کرد؟

    3. سلام

      خیر متاسفانه راهی نیست که با کدنویسی بشه از این خطا جلوگیری کرد. از اونجایی که فایل‌های jar با هم تداخل دارن کاری نمیشه کرد.

  13. سلام مجدد
    public key مگه همون کد RSA نیست که در صفحه پرداخت درون برنامه ای نوشته بر اساس .base64 ؟
    من پروژه نمونتون رو هم تست کردم، ولی بازم همون error رو میده.
    با توجه به اینکه دوستان موفق بودن در راه اندازی این پلاگین، مشکل یک جایی از خودم باید باشه.
    این مشکل احتمالا از persmission ها و یا activityها نیستش، چرا که اکتیویتی مربوط به کافه بازار باز میشه. حتی رمز هم می پرسه. ولی موقع خرید یک دفعه ای این error رو میده.

    1. سلام مجدد
      دقیقا مشکل از public key هست.
      مطمئن بشید درست واردش کردید.
      گاهی وقتا یک فاصله اضافه بعد از public key باعث بروز این خطا میشه.

  14. سلام
    بررسی کردم دیدم که وقتی public key رو کپی می کنم، یک enter اضافی خودش کپی می کنه.
    درستش کردم و پلاگین کار کرد.
    اما عر آیتم رو میشه فقط یک بار خرید. بار دوم که می زنیم بخره بعد از کلی انتظار می زنه که خطای ۱۰۰۰۰ رخ داده است. و خرید رخ نمی دهد.
    پلاگین هم به خطای شماره ۷ را بر می گرداند.
    مشکل از کافه بازاره یا بازم از خودمه؟

    1. سلام
      ظاهرا مشکل از کافه بازار بوده و الان حل شده.
      ممنون از این پلاگین.
      ولقعا برای ما که هیچی از اندروید نمی دونیم خیلی کار راه بیاندازه
      الان میرم سیستم ضد هکتون رو هم چک کنم
      یا علی

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

    با تشکر!

    1. سلام
      میتونید خرید کاربر رو ذخیره کنید و بهش امکان بازیابی بدید.
      اما حتما سعی میکنیم این تابع رو به صورت مجزا توی ورژن های بعدی اضافه کنیم.

  16. سلام
    فکر کنم این تابع با نسخه جدید کافه بازار کار نمیکنه:
    GetComponent ().CheckInventory

    خرید به درستی کار میکنه ولی اینونتوری نه.

    1. سلام
      آیا این مشکل هنوز وجود داره؟
      بازار در نسخه جدیدش تغییری در Api پرداخت نداده و نباید مشکلی باشه.
      بررسی کنید که جایی توی پیاده‌سازی مشکلی نداشته باشید.
      تشکر

  17. بسیار ممنون که اومدنیو کاریو کردین که کافه‌بازار هنوز داره توش مشکل داره. به صفحه مستندات فنی کافه‌بازار رفتم تا نحوه پیاده‌سازی پرداخت درون‌برنامه‌ای برای یونیتی رو ببینم. واقعا تاسف خوردم. قسمت اول توضیحاتشون این بود که بیایم و از کاری که شما کردین استفاده کنیم. تهش هم اضافه کردن که کار شما برای کافه بازار نیست و پشتیبانی نمیشه! در حالی که حتی متد اجرایی خودشون رو تو همون صفحه نگذاشتن.

    من به یه مشکل برخوردم شاید شما جوابشو بدونین. بعد خرید این پیام داده میشه:
    Error purchasing item. Can’t start async operation (launchPurchaseFlow) because another async operation(launchPurchaseFlow) is in progress.
    حدس اولم این بود که مشکل از نحوه فراخونیه، حدس دومم این بود که کاربر روی دکمه پرداخت دوبار سریع کلیک میکنه. مورد اول رو چک کردم و تغییری بین برنامه نمونه و کد خودم ندیدم (چون همونه)، مورد دوم رو جلوشو گرفتم ولی این پیام باز هم تو لاگ اندروید چاپ میشه. این در حالیه که خرید انجام میشه و کافه‌بازار توکن مربوطه رو ایمیل میکنه. به نظرتون مشکل از کجا می‌تونه باشه؟

    1. سلام
      درباره بخش اول صحبت‌هاتون باید بگم که وظیفه ماست دست به دست هم بدیم و به پیشرفت این صنعت کمک کنیم. از اونجایی که کافه‌بازار به طور تخصصی روی برنامه‌نویسی اندروید کار میکنه، نیروی کافی برای توسعه سایر بخش‌ها رو نداره. اینجا کمک بقیه نیازه که این جاهای خالی پر بشه.
      در رابطه با سوالی که پرسیدین، تا حالا این مشکل رو ندیدم. آیا فورس کلوز میده برنامه یا فقط این خطا رو توی لاگ چاپ میکنه؟
      این مشکل روی گوشی خودتون اتفاق میافته؟ میتونید برنامه تست ما رو دانلود کنید و ببینید باز هم این اتفاق میافته براتون یا نه؟
      اگر برنامه تست درست کار کنه احتمال داره جایی توی پیاده‌سازی تغییری دادید.
      حتما با چاپ لاگ یا هر شکل دیگه‌ای مطمئن بشید تابع خرید از سمت یونیتی یک بار فراخوانی میشه.
      متاسفانه حدس دیگه‌ای نمیشه زد.

    2. من برای اطمینان این مورد رو تست کردم.
      تا زمانی که پاسخ از سمت بازار برای بازی شما ارسال نشده نباید اجازه اقدام به خرید مجدد به کاربر بدید.
      برای اینکار وقتی کاربر روی دکمه خرید میزنه یک لودینگ نمایش بدید و به طور تمام امکان تاچ رو از کاربر بگیرید. بعد از خرید یا انصراف از خرید در تابع‌های موفقیت یا عدم موفقیت، لودینگ رو غیر فعال کنید.
      من با اینترنت کم سرعت این مورد رو تست کردم و دیدم بازگشت نتیجه از کافه بازار به بازی بیش از حد طول میکشه و باعث میشه کاربر بتونه در این حدفاصل روی دکمه خرید دوباره کلیک کنه.
      لطفا بیشتر تست کنید و نتیجه رو اطلاع بدید.
      تشکر

    3. در رابطه با مسئولیت کافه‌بازار واقعا لازم می‌بینم این رو یادآوری کنم که گوگل فقط playstore رو راه ننداخته. خود سیستم عامل اندروید رو طراحی کرد و توسعه‌داد، روی ابزارهای لازم تولید برنامه مثل ADT و AndroidStudio سرمایه‌گذاری کرد، تیم مخصوص براشون درست کرد و ازشون پشتیبانی کرد. خرید درون برنامه‌ای راه انداخت و یه فروشگاه بزرگ پیاده‌سازی کرد که هوشمندانه برنامه‌ها رو به مخاطباشون پیشنهاد میده.
      از بین همه این کارا، کافه‌بازار فروشگاهشو راه انداخته که هوشمندانه پیشنهاد نمیده و خرید درون‌برنامه‌ایش هنوز مشکل داره. ولی همون درصدی از خریدها رو برمیداره که گوگل برمیداره. ۳۰ درصد. بزرگترین شرکت نرم‌افزاری ایران تو زمینه برنامه‌های تلفن‌های همراه نیروی کافی نداره؟ خب بیاره.

      اما راجع به مشکلم بگم که دلیلشو پیدا کردم. خیلی سادست، وقتی حافظه کم باشه اندروید activity هایی که مناسب بستن میبینه رو میبنده و وقت نیاز دوباره بازشون میکنه. از جمله این activity ها، activityهاییه که منتظر result از یه جای دیگه هستن. من تو گیت‌هاب این پروژتون دنبال پروژه jar اندروید گشتم ولی پیدا نکردم. decompile کردم و لاگ گذاشتم، دیدم مشکل از این فایله: ServiceBillingBazaar.java
      تو کلاس درونی IabActivity متد onCreate رو تغییر دادم تا activity state رو نگه داره و موقع recreate شدن این activity، (وقتی اندروید جواب رو از کافه‌بازار می‌خواد منتقل کنه و چون قبلا Activity رو بسته، الان می‌خواد دوباره بازش کنه) این کدها رو اضافه کردم و مسئله خدا رو شکر حل شد:

      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      if(savedInstanceState != null) {
      productId = savedInstanceState.getString(“productId”);
      payload = savedInstanceState.getString(“payload”);
      consume = savedInstanceState.getBoolean(“consume”);
      }else {
      Intent intent = getIntent();

      اینجا خیلی خوانا نیست ولی اگه آدرس گیت پروژه اندرویدتون رو بدید می‌تونم یه pull request بدم.

    4. سلام مجدد
      به هرحال سیاست‌های هر سازمان و مجموعه‌ای فرق میکنه. کاملا موافقم که بهتر بود اینکار توسط کافه‌بازار انجام میشد، اما …

      ممنون از تصحیح و حل این مشکل، چیزی بود که در نظر نگرفته بودیم.
      بله کاملا ممکنه به دلیل بسته شدن اکتیویتی این اتفاق بیافته.
      لایبرری جاوای پلاگین اوپن سورس نیست، اگر لطف کنید کد تصحیح شده رو به ایمیل بنده ارسال کنید تا پلاگین رو آپدیت کنیم.
      hojjat.reyhane@yahoo.com

      تشکر بسیار

  18. بله هنوز کار نمیکنه
    وقتی تابع CheckInventory صدا میزنم نه failToGetUserInventory و نه این OnHasThisProductValidated
    کال بک نمیشن.
    کال بکی که تو کد جاواتون نوشتین برای StoreHandler آیا این تابع صدا میزنه getInventoryResult ؟
    چون کال بک های این تابع عوض کردم به دو تا کال بک بالا.

    1. سلام مجدد
      من برنامه تست پلاگین رو با اخرین نسخه بازار آزمایش کردم و مشکلی نبود.
      به احتمال زیاد توی پیاده‌سازی مشکلی دارید. اسم پریفب پلاگین نباید عوض بشه. در این صورت نتایج برگشت داده نمیشه.
      مطمئن بشید تابع اصلی getInventoryResult صدا زده میشه.
      اسم توابع داخل کلاس StoreHandler نباید عوض بشن.
      نتیجه رو اطلاع بدید لطفا. تشکر

  19. سلام.با عرض خسته نباشید.
    آقای ریحانه بنده با یک مشکل مواجه شدم.زمانی که برنامه بازار از قبل بر روی گوشی نصب شده باشد این پلاگین به درستی کار میکند.
    اما اگر نصب نباشد و بعد از برنامه خودمون آنرا نصب کنیم همیشه ارور IAB helper is not setup مشاهده میشود.راه حلی برای این مشکل وجود نداره؟

    1. سلام
      بله متاسفانه این مشکل وجود داره. ما نتونستیم راه حل فنی براش پیدا کنیم. معمولا به کاربرها پیشنهاد میدیم یک بار بازی ما رو پاک کنن و مجدد نصب کنن, همینطور خاموش و روشن کردن گوشی میتونه مفید باشه.
      اتفاق افتادن این حالت خیلی درصدش پایینه به خاطر همین تا حالا به بازار گزارش ندادیم و پیگیری نکردیم. اما اگر برای شما اهمیت بالایی داره لطفا با پشتیبانی بازار تماس بگیرید و نتیجه رو به ما هم اعلام کنید.
      موفق باشید

    1. سلام
      نه این پلاگین مخصوص کافه بازار هست.
      درخواستی برای ارائه پلاگین برای مایکت نداشتیم.

    1. برای مایکت باید پلاگین اختصاصی توسعه داده بشه
      در صورت امکان در آینده برای مایکت هم طراحی میکنیم.

  20. سلام
    من با ی مشکلی بر خوردم
    اگر محصول من در کافه بازار مجانی باشه خرید درست انجام میشه
    ولی اگر بولی باشد و بول را کم میکند توکن به کافه بازار هم اطلاعات فرستاده میشه ولی تو بازی failed میشه

    1. سلام
      مشکلتون خیلی عجیبه! قیمت چیزی نیست که بخواد تاثیری بذاره روی عملکرد پلاگین
      تا حالا به این مشکل برخورد نکردیم!!!

  21. سلام

    تو پرداخت درون برنامه ای
    طرف خرید میکنه خرید درست انجام میشه ولی محصول رو نمیده
    مشکل از کجاست ؟
    تو هر ۱۰۰ تا خرید یکی اینطوری میشه

    1. سلام در پی حل این مشکل هستیم. با آپدیتی که امروز میدیم انشاءالله این مشکل حل میشه.

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

    1. سلام
      اطلاعات player prefs با خاموش یا روشن شدن گوشی پاک نمیشه. اینکه میگین پاک شده عجیبه!!!
      تنها در صورتی اطلاعات پاک میشه که کاربر برنامه رو از توی تنظیمات clear data کنه یا برنامه رو کلا پاک و مجدد نصب کنه.
      در هر صورت راه جایگزین دیگه ذخیره اطلاعات در فایل و کارت حافظه گوشی هست که نسبت به player prefs راه سخت تری هست.

  23. ممنون جناب ریحانه بابت پاسختون. صحبت شما کاملا درسته و PlayerPrefs تنها در صورت حذف برنامه پاک میشه. که من ابتدا برنامه رو حذف کرده بودم و بعد گوشی رو ریستارت که این مورد پیش اومد.
    حمایت مالی ناقابل تنها کاری هست که به خاطر کار ارزندتون میشه انجام داد.

  24. با عرض سلام و تشکر از پلاگین بسیار خوبتون
    ما در یک بازی پلاگین شما رو نصب کردیم, بدون مشکل خرید رو انجام میده, ولی بعد از خرید فانکشن موفقیت خرید صدا زده نمیشه, موقع بررسی خرید هم در جواب فانکشن مالکیت محصول صدا زده نمیشه, باید کار خاصی انجام بدیم یا تنظیم خاصی درست انجام نشده؟ ما از یونیتی ۴.۵ استفاده میکنیم
    با آرزوی موفقیت

    1. سلام
      ممنون
      نام گیم آبجکت مربوط به پرداخت نباید تغییر کنه و باید برابر com.bobardo IAB باشه. چون نتایج پلاگین به این آبجکت برگشت داده میشه.

  25. سلام. با استفاده از باباردو می تونیم برای مایکت و ایران اپس هم پرداخت درون برنامه ای بسازیم؟ اگر آره، بجای کد های مخصوص بازار مثلا برای مایکت باید چی وارد کنیم. چون خود مایکت آموزش مخصوص پلاگین سوملا رو گذاشته. ممنون

  26. سلام و تشکر بسیار به خاطر پلاگین عالی تون
    میخواستم ببینم این doubleCoin به چه دردی میخوره؟! چون به نظر میرسه ضروری نیست و میشه حذفش کرد.
    ضمنا من هر بار میخوام خرید کنم این ارور رو دریافت میکنم ولی برای بار دوم که روی دکمه خرید میزنم، پاپ آپ خرید بازار میاد:
    operation failed
    Error purchasing item
    IAB helper is not set up
    can’t perform operation
    lunchPurchaseFlow

    1. سلام
      ممنون از لطف شما
      اون doubleCoin صرفا برای تست توی نمونه پروژه هست، که کاربر با خریدنش سکه دو برابر میگیره. بله میتونید حذفش کنید.
      خطایی که گفتید برخی اوقات به دلیل راه‌اندازی نشدن سرویسهای بازار پیش میاد و مشکل خاصی نیست.

  27. سلام

    با تشکر از زحمات شما دوست عزیز.

    من از یونیتی ۵.۵.۳ استفاده میکنم. وقتی پلاگین شما رو روی پروژه خودم نصب کردم و کدهای مورد نیاز برای افزایش مقدار جان به بازیکن رو نوشتم. اما مشکلی که وجود داره اینه که وقتی میخوام برای اولین بار محصول مورد نظر رو خریداری کنم اون خریداری نمیشه و چیزی به بازیکن اضافه نمیشه و باید بار دوم این کار رو انجام بدم تا خرید انجام بشه. در ضمن من مقدار جان خریداری شده رو توی (PlayerPrefs.SetInt(“live”, PlayerController.PlayerLive ذخیره میکنم و بعد اون رو از طریق تابع Start فراخوانی میکنم مقدار خریداری شده نمایش داده نمیشه. (من فایل text مربوط به جان رو آپدیت میکنم ولی باز هم نشون داده نمیشه).

    این اسکریپت من هستش اگر ممکنه راهنمایی کنید. نمی دونم مشکل از کدهای منه یا چیز دیگه.

    https://www.dropbox.com/s/y1g1mevtfskf6bc/InAppStore.cs?dl=0

    1. سلام. ممنون از لطف شما

      اسکریپت شما مشکلی نداره تا جایی که من بررسی کردم.
      ممکنه اولین بار توی اتصال به کافه‌بازار مشکل پیش بیاد، اما به این شکل نیست که کاربر خریدی انجام بده و پول ازش کسر بشه.
      مطمئن بشید از آخرین نسخه پلاگین که در حال حاضر ۱.۰.۱ هست استفاده می‌کنید.
      در رابطه با ذخیره جان و نحوه نمایش اون باید تست بیشتری بکنید و ببینید دقیقا مشکل از کجاست.

      دقت داشته باشید که اسامی توابع اصلی و همینطور اسم گیم‌آبجکت پرداخت نباید عوض بشه.

  28. سلام خسته نباشید ممنون از زحماتتون من پکیج تستیتونو ایمپورت کردم داخل یونیتی ۵.۳.۳ ولی خطای اسکریپت داد
    Assets/bobardo IAB/InAppStore.cs(196,30): error CS0246: The type or namespace name `WaitForSecondsRealtime’ could not be found. Are you missing a using directive or an assembly reference?
    میشه راهنمایی کنید؟

  29. سلام

    من از آخرین نسخه پلاگین شما استفاده میکنم و اسم هیچ تابع و حتی گیم آبجکت پرداخت رو هم تغییر ندادم.
    متاسفانه پول از حساب کم میشه و هیچ چیزی به جان بازیکن اضافه نمیشه.
    من برای اطمینان با پلاگین Soomla تست کردم و مشکلی وجود نداشت و اولین پرداخت به درستی انجام میشد و مقدار جان به بازیکن اضافه می شد.

    1. پس در این صورت احتمال زیادی وجود داره که این مشکل زمان تست برای شما رخ داده.
      به دلیل حذف و نصب پشت سرهم بازی روی گوشی، برخی اوقات ممکنه اشکالاتی توی سرویس‌های پرداخت بازار به وجود بیاد و باعث بروز این خطاها بشه.
      ولی اگر این مشکل روی همه گوشی‌ها رخ میده باید دقیق‌تر بررسی بشه که چه ایرادی وجود داره.

    1. بستگی داره.
      ممکنه شما توی پیاده‌سازی پلاگین مشکلی داشته باشید، یا همونطور که عرض کردم به دلیل نصب و حذف پشت سرهم بازی روی گوشی، اختلالی توی سرویس‌های کافه‌بازار به وجود اومده باشه.
      توی حالت دوم با پاک کردن بازی و کافه‌بازار و نصب مجددش باید مشکل حل بشه.

  30. من طبق فرمایشات شما عمل کردم و کافه بازار و بازی رو کامل پاک کردم و گوشی را هم یکبار خاموش و روشن کردم ولی آنها را مجدداً نصب کردم ولی متاسفانه مشکل همچنان باقی است.من دیگه نمیدونم چکار باید بکنم. همه راه ها رو امتحان کردم.
    می تونم خواهش کنم اگر امکان داره یک نگاهی به پروژه من بندازید؟ من ساخت بازی رو تموم کردم و الان تنها مشکل من این پرداخت درون برنامه ای هست که باید مشکل رو رفع کنم و بازی رو منتشر کنم.

    اگر این کار برای شما امکان پذیر است لطفاً ایمیلتون رو بهم بدید.

    با تشکر.

    1. پروژه نمونه پلاگین براتون درست کار کرد؟ خریدها براتون فعال شد؟
      میتونید فایل apk بازی‌تون رو بفرستید تا من تست کنم. اگر روی بقیه گوشی‌ها درست باشه مشکلی نیست و میتونید بازی‌تون رو منتشر کنید.

  31. سلام

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

    ممنون از راهنمایی هاتون.

  32. سلام. در نسخه کامل بازی ۴۱۱۴۸ از پلاگین شما استفاده کردم. تقریبا با اینکه هیچ آشنایی خاصی با پرداخت درون برنامه ای نداشتم. در کمتر از یک روز، پیاده سازی شد و مشکل خاصی هم وجود نداشت. بسیار ممنون از زحمات تون برای این پلاگین و امیدوارم پشتیبانی تون از پلاگین ادامه داشته باشه و برای مارکت های دیگه، مخصوصا مایکت هم منتشر بشه. موفق باشید.

    1. سلام
      ممنون. باعث خوشحالی ماست این خبر
      پشتیبانی از سایر مارکت ها منوط به درخواستشون هست. در حال حاضر درخواستی از طرف سایر مارکت ها به ما نرسیده.

  33. با سلام و احترام خدمت شما دوست عزیز

    من وقتی مثال رو پلی میکنم و روی خرید ۵۰۰ سکه کلیک میکنم این خطا رو میده. مشکل کجاست؟
    Exception: JNI: Init’d AndroidJavaClass with null ptr!
    UnityEngine.AndroidJavaClass..ctor (IntPtr jclass) (at C:/buildslave/unity/build/Runtime/Export/AndroidJavaImpl.cs:556)
    UnityEngine.AndroidJavaObject.get_JavaLangClass () (at C:/buildslave/unity/build/Runtime/Export/AndroidJavaImpl.cs:534)
    UnityEngine.AndroidJavaObject.FindClass (System.String name) (at C:/buildslave/unity/build/Runtime/Export/AndroidJavaImpl.cs:525)
    UnityEngine.AndroidJavaClass._AndroidJavaClass (System.String className) (at C:/buildslave/unity/build/Runtime/Export/AndroidJavaImpl.cs:545)
    UnityEngine.AndroidJavaClass..ctor (System.String className) (at C:/buildslave/unity/build/artifacts/generated/common/runtime/AndroidJavaBindings.gen.cs:94)
    StoreHandler.initiateBilling () (at Assets/bobardo IAB/StoreHandler.cs:25)
    StoreHandler.BuyAndConsume (System.String produc_sku) (at Assets/bobardo IAB/StoreHandler.cs:47)
    InAppStore.purchaseProduct (Int32 productIndex) (at Assets/bobardo IAB/InAppStore.cs:165)
    UnityEngine.Events.InvokableCall`1[System.Int32].Invoke (System.Object[] args) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:188)
    UnityEngine.Events.CachedInvokableCall`1[System.Int32].Invoke (System.Object[] args) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:306)
    UnityEngine.Events.InvokableCallList.Invoke (System.Object[] parameters) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:634)
    UnityEngine.Events.UnityEventBase.Invoke (System.Object[] parameters) (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:769)
    UnityEngine.Events.UnityEvent.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent_0.cs:53)
    UnityEngine.UI.Button.Press () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:35)
    UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:44)
    UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:52)
    UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerClickHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:269)
    UnityEngine.EventSystems.EventSystem:Update()

    1. سلام
      دقت داشته باشید که در ویندوز قادر به اجرای عملیات پرداخت نخواهید بود و باید توی گوشی اندروید تست بگیرید.
      حتما مرحله به مرحله طبق راهنمای پیاده‌سازی پلاگین جلو برید.

    1. همونطور که در راهنما گفتیم، در صورتی که این فایل وجود نداره باید اون رو بسازید.
      نمونه فایل منیفست هم توی همین مطلب قرار داده شده.

  34. سلام من به یه مشکلی توی فرایند خرید از بازار خوردم که البته فک نمیکنم مربوط به پلاگین شما باشه .به این صورت هست که وقتی خرید شرو میشه و بعد از اینکه رمز اکانت کافه بازار رو میزنیم و ادامه رو میزنیم اگه سریع روی یه جای دیگه توی صفحه کلیک کنیم پلاگین خطای
    case 7: “purchase failed”;
    برمیگردونه و بنظر مباد که خرید کنسل شده ولی این درحالیه که خرید انجام شده و فقط کانسیوم نشده و اگه دوباره فرایند خرید رو شرو کنیم خرید انجام میشه.

    من برای رفع این مشکل لحظه شرو خرید sku رو زخیره میکنم و بعد اینکه خطا رخ داد بوسیله CheckInventory چک میکنم که اگه خرید انجام شده باشه خرید رو به کاربر بدم.
    مشکل اینجاست که بعضی وقتها (مطمعن نیستم ولی انگار به کلیک کردن روی صفحه مربوط میشه)تابع CheckInventory با اینکه خرید انجام شده خطای case 11: “user has not this product”;
    برمیگردونه و فرایند خرید تموم مشه درحالی که از کاربر پول کم شده.
    البته اگه کاربر دوباره روی خرید کلیک کنه محصول رو بهش میده ولی خوب خیلیا به مشکل میخورن.

    شما راه حلی دارید برای این مشکل؟

    1. سلام
      مشکل مصرف نشدن محصول از سمت پلاگین نیست و از طرف سرویس‌های کافه‌بازار هست.
      اما اینکه میگید دلیلش کلیک کردن روی صفحه ست یکم عجیبه!!!
      توی تست‌های ما بعضا مشکل مصرف نشدن محصول به دلیل حذف و نصب پشت سرهم بازی روی گوشی رخ میده. اما تا حالا کلیک کردن رو ندیدیم.

      متاسفانه راهکاری برای این مسئله نداریم.
      اینکه تابع checkInventory میگه کاربر این محصول رو نداره، به این معنیه که محصول مصرف شده.

    2. اخه پیش میاد که بعد اینکه checkInventory میگه کاربر این محصول رو نداره دوباره که روی دکمه خرید میزنم بدون پرسیدن رمز وتایید خرید انجام میشه.

    3. درسته مشکل از سرویس کافه بازاره و اینکه مشکل اتفاقی نیست ینی هردفه بد ورود رمز و زدن ادامه اگه یجایی بیرون دیالوگ بازار کلیک کنید purchase failed میده ولی خرید انجام شده.
      شاید این مشکل توی ورژن جدید بازار ایجاد شده که تا الان کسی ندیده بوده.
      من روی چنتا برنامه دیگه هم تست کردم.هم برنامه تست شما هم یه برنامه دیگه که با سوملا پیاده سازی شده.همیشه همین اتفاق میفته.
      شما هم تست کنید.

    4. بله این مشکلی هست که باید از سمت کافه‌بازار پیگیری بشه تا حل بشه. سرویس کافه‌بازار نباید اجازه بده با کلیک شدن دیالوگ پرداخت بسته بشه.
      در حال حاضر راه حلی برای این مشکل نداریم.
      اما به هرحال درصد رخ دادن این اتفاق خیلی خیلی کمه.

  35. سلام چرا وقتی خروجی میگیریم روی گوشی با اندروید ۵ کار میکنه ولی روی اندروید ۴ هرچی روی دکمه خرید میزنیم اتفاقی نمیوفته
    مگه ساپورت نمیکنه
    ممنون

    1. سلام
      پلاگین هیچ مشکلی با اندرویدهای نسخه پایین نداره.
      دلیل این مشکل میتونه جای دیگه‌ای باشه.
      یک بار بازی رو از روی نسخه اندروید ۴ پاک کنید و مجدد نصب کنید و امتحان کنید.
      برخی اوقات به دلایل نامعلوم توی تست این مشکلات پیش میاد.

  36. بی نهایت از شما ممنونم. با این کار شما پیاده سازی پرداخت درون برنامه ای کمتر از ۱۰ دقیقه وقت می گیره و بسیار ساده شده.

  37. سلام
    خیلی عالی میشد اگه یه فیلم اموزشی هم قرار میدادید دو روزه واقعا گیج شدم !!!

    شناسه کالا که در “محصولات/خدمات” توی بازار میسازیم را باید کجا قرار داد توی کد؟؟
    مثلا توی پروژه نمونه همه مشخصات خودم را زدم ولی توی اندروید که خرید را میزنم میگه “محصول وجود ندارد” ؟!
    ربطی به payload داره؟

    1. سلام
      طبق آموزش، شناسه کالا رو باید توی آرایه products توی صحنه در گیم آبجکت com.bobardo IAB مشخص کنید.
      اینکه میگه محصول وجود نداره، ممکنه به دلیل این باشه که شناسه رو درست وارد نکردید.

  38. ممنون از شما مشکلم حل شد بازیم را فراستادم ولی ایراد میگیرند که چرا از پلومیشن زیر استفاده کردی!!

    نباید استفاده کنم !؟ چون گفتید برای ارتباط لازمه ! عالی میشه اگه راهنماییم کنید !

    1. سلام مجدد
      استفاده از پرمیشن هایی که گفتیم غیر مجاز نیست. شاید پرمیشن دیگه ای توی بازی دارید. پرمیشنی که به صورت خودکار اضافه شده یا پلاگین های دیگه نیاز دارن بهش.
      دقیقا مشخص کنید به چه پرمیشنی ایراد گرفتن و دنبالش بگردید که برای چی داره استفاده میشه.

    1. سلام و وقت بخیر
      خیر این پلاگین فقط برای یونیتی هست.
      برای جاوا از مستندات کافه بازار برای اندروید استودیو استفاده کنید.

    2. منظورتون جاوا اسکریپت هست.
      بقیه بازی مشکلی نداره جاوا اسکریپت باشه, اما کدهای پلاگین C# هست و برای دادن محصول به کاربر یا باید کدها رو به همین زبان بنویسید یا اینکه خودتون ارتباط بین اسکریپت های پلاگین و بقیه قسمت های بازی رو مدیریت کنید.
      در کل مشکلی پیش نمیاد.

  39. با سلام و احترام،
    از پلاگین خوب شما در برنامه استفاده کرده ام.
    مواردی پیش میاد که روی بعضی از گوشی ها مثل گوشی خودم با API 19 اندروید دکمه پرداخت رو باید چند بار بزنم که صفه پرداخت کافه بازار باز بشه البته بعضی موقع ها با لمس اول باز میشه.
    اما روی گوشی دیگه با API 23 مشکلی نداره و به محض لمس دکمه صفحه پرداخت باز میشه.
    میتونید راهنمایی کنید مشکل از چی میتونه باشه.
    سپاس فراوان از شما

    1. سلام
      این اتفاق به دلیل اجرا نشدن کامل سرویس های کافه بازار پیش میاد. یعنی سرویس ها به درستی اجرا نمیشن و بنابراین اجازه خرید داده نمیشه. با تلاش مجدد سرویس ها به درستی اجرا میشن و میشه خرید کرد.
      برای این مورد باید یکسری بهبود توی پلاگین اعمال کنیم که انشاءالله در اولین فرصت آپدیت میشه.
      اما در کل مشکل خاص و حادی نیست و اختلالی توی فرآیند خرید ایجاد نمیکنه.
      موفق باشید.

  40. سلام

    لطفاً این پلاگین رو برای مایکت هم آماده کنید چون مایکت هم از سوملا استفاده میکنه و تقریباً همه بازی ها و برنامه هایی که داخل کافه بازار هست، داخل مایکت هم هست و معمولاً developer ها برنامه یا بازی خودشونو توی هر دو مارکت کافه بازار و مایکت قرار میدن.

    با تشکر.

    1. سلام
      فرآیند ساخت پلاگین برای سایر فروشگاه‌ها، تست، خطایابی و پشتیبانی از پلاگین، زمانبر هست و در حال حاضر اولویت ما نیست.
      این اتفاق تنها در صورت درخواست و توافق رسمی با سایر فروشگاه‌ها امکان پذیر هست.

      موفق باشید

  41. با سلام و با تشکر از زحمات شما
    خیلی خیلی ممنونم که این پلاگین رو رایگان در اختیار عموم قرار دادید. من تمامی مراحل رو انجام دادم و ضد هک رو هم اضافه کردم و پلاگین به خوبی روی برنامه تست من کار میکنه اما فقط یک مساله ذهنم رو درگیر کرده که قابلیت ضد هک تا چه مقدار قابل اطمینانه و تقریبا به درصد اگر بیان کنیم چند درصد از تراکنشها به خوبی ولیدیت میشن؟ همچنین سازگاری پلاگین با نسخه های اندروید چطوره؟ من برای API 15-23 نیاز دارم و فقط تونستم بروی API 15-18-19 تست کنم که اکثرا سامسونگ بودن.
    خوشحال میشم تجربیات خودتون رو با ما به اشتراک بگذارید.

    با سپاس فراوان

    1. سلام
      قابلیت ضد هک در حالت عادی ۱۰۰ درصد قابل اطمینان هست و برای افراد عادی هیچ راه دور زدنی وجود نداره.
      اما برای افراد هکر و کرکر، در صورتی که بازی شما رو مهندسی معکوس کنن میتونه راههایی باشه.
      پلاگین با تمام نسخه های اندروید سازگاری داره. در واقع هر گوشی‌ای که بتونه بازی شما رو اجرا کنه و بازار روی اون نصب باشه.

      موفق باشید

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

  43. با سلام خدمت شما و تشکر از پلاگین مختصر و بسیار مفیدتون
    من پلاگین رو استفاده کردم و عالی بود، فقط فکر میکنم یک باگی وجود داره که مربوط به شما یا کافه بازار هست:
    وقتی کاربر به اینرنت متصل نباشه و خطای عدم اتصال بگیره از پلاگین و بره اینترنتش رو فعال کنه و برگرده، دایما با خطای error connecting cafeBazaar
    روبرو میشه،
    البته این برای همه دستگاه ها نیست ولی من با ۵-۶ تا گوشی که تست کردم تقریبا ۲-۳ تا شون اینطوری بودن
    شما نمیدونید مشکل از کجاست؟

  44. سلام و تشکر از این آموزش و پشتیبانی خوبتون.
    من وقتی روی دکمه ی خرید میزنم، با ارور “Operation failed. error purchasing item. null” مواجه میشم، بدون اینکه صفحه ی خرید بازار یا همون اکتیویتی بازار باز بشه. این ارور رو توی هماون پنل Result که پیاده شده میبینم.
    مشگل از کجا میتونه باشه؟
    با تشکر.

  45. این برای پرداخت درون برنامه ای هست فقط؟ یه نفر یه بازی داری میخواد از ابتدا به قصد فروش باشه یعنی حتی مرحله ۱ هم خریداری شده باید بازی بشه . این پلاگین برای اون کار هم شدنیه؟

  46. با سلام و عرض خسته نباشید بابت این کار ارزندتون.
    آقای ریحانه من در پروژه خودم مجبورم از باتن لمسی استفاده کنم.
    چطور میتونم بین باتن لمسی و پریفب com.bobardo IAB ارتباط برقرارکنم؟

  47. سلام و درود بر شما
    من یه برنامه دارم فقط میخواهم قابل شیر کردن نباشه و فقط کسی که خرید کرد استفاده کنه آیا برای این موضوع باید پرداخت درون برنامه انجام بشه ؟
    ممنون از شما

  48. ممنون از این کار با ارزش
    من با اینکه ۷ تا بازی رو با سوملا کار کردم
    ام این بازی اخری رو با پلاگین شما میخوام انتشار بدم
    چون بسیار راحت بودم باهاش
    بازم ممنون

  49. با سلام
    من قبلا از پلاگین استفاده کرده بودم و نتیجه هم گرفته بودم اما بازی رو منتشر نکردم و برای توسعه بازی مجبور شدم به ورژن ۵.۶.۲ یونیتی ارتقاء بدم و متاسفانه پلاگین شما جواب نمیده و مجبور شدم پروژم رو به ۵.۴.۲ کاهش بدم و از اونجایی که من متوجه شدم مشکل از استفاده activity
    android:name=”com.unity3d.player.UnityPlayerProxyActivity” در مانیفست پروژه هست که از یوینیتی ۵.۶.۲ و ۲۰۱۷ به بعد حذف شده و این اکتیویتی مربوط به یونیتی ۳.x بود و پلاگین شما با استفاده از این اکتیویتی پاسخ خرید رو برمی گردونه لذا در یونیتی ذکر شده این پلاگین کار نخواهد کرد ( در تمامی موارد خرید انجام اما پاسخ دریافت نمیشه ) من چند بار سعی کردم اما نتونستم نتیجه بگیرم و مجبور شدم پروژم رو به یونیتی ۵.۴ کاهش بدم
    ممنون میشم بتونین پلاگین رو با یونیتی جدید هم سازگار کنید. با تشکر فراوان

    1. سلام و وقت بخیر
      تشکر از اطلاع رسانی این مشکل
      متاسفانه در حال حاضر نمیتونم قولی برای رفع این مشکل به دلیل مشغله‌های کاری بسیار بدم. اما اگر فرصت شد حتما این مشکل رو رفع میکنم.
      موفق باشید

    2. با سلام و با تشکر از سایت خوبتون

      مشکل یونیتی ۵.۶.۳ حل شد گویا مشکل در منیفست ما بود که با چندتا پلاگین تبلیغاتی، پوش و … تغییر کرده بود ( بعضی از پلاگین ها مانیفست خودشون رو داشتن و این باعث می شد اختلال ایجاد بشه ) که بعد از اصلاح و بازبینی و تست مشکل حل شد. یعنی پلاگین مشکلی با یونیتی ۵.۶.۳ نداره اگر خواستین می تونین این نظر رو حذف کنین تا برای دیگران مشکلی ایجاد نکنه.

      با تشکر

    3. سلام مجدد
      تشکر که این مورد رو مجدد اطلاع دادید.
      بله توی یونیتی ممکنه پلاگین ها با هم تداخل داشته باشن که بعضا فهمیدن ریشه مشکل سخت هست و آدم رو به اشتباه میندازه.
      با آرزوی موفقیت برای شما

    4. سلام
      منم جدیدا یونیتی رو به ۵.۶.۳ آپدیت کردم ولی مشکلی نخوردم توی پرداخت. این اکتیویتی هم که شما میگی نیستش توی منیفستم

  50. سلام مجدد
    ما یه مشکلی که جدیدا کاربرامون بهش برخوردن اینه که خرید انجام میشه ولی مصرف نمیشه.هرچقد هم که رویه بسته کلیک کنن بازم مصرف نمیشه.
    یه سریشون با پاک کردن بازار و نصب مجدد مشکلشون حل شده.ولی یکی دو مورد داشتیم که حتی بد اینکار هم نتونستن خرید رو مصرف کنن.
    شما ایده ای دارید؟
    یه اروری هم مبنی بر اینکه باید اول توی اکانت بازارشون لاگین باشن هم میاد.بصورت یه نوار ابی و میره سریع.

    1. سلام
      این مشکل از سمت کافه‌بازار رخ میده. بعضی اوقات به دلیل نصب و حذف چند باره اپلیکیشن این مشکل پیش میاد، مخصوصا توی زمانهای تست.
      متاسفانه راه حل قطعی برای رفع این مشکل پیدا نکردیم.
      بعضی وقتها با پاک کردن کافه بازار و بازی، و سپس به ترتیب نصب کافه‌بازار و بازی مشکل حل میشه
      موفق باشید

  51. سلام من این خط کد رو می نویسم
    GameObject.Find (“com.bobardo IAB”).GetComponent ().purchaseProduct (0);
    بعد از خرید و کم شدن پول هیچ اتفاقی نمیفته نه توی purchase success میره نه توی purchase failed
    به نظر شما مشکا از چی میتونه باشه؟
    ممنون

  52. با سلام میخواستم بدونم نمیشه ی پلاگین دیگه همینطور راحت و کار امد برای مایکت بسازین بعضی موقع ها ادم باید برای هر دو مارکت بازیش رو منتشر کنه
    یا مثلا نمیشه همین اسکریپت رو با یکم ویرایش کد برای مایکت هم استفاده کنیم؟؟؟

  53. من چهار محصول دارم با قیمت صفر تومان، دو محصول درست خرید میشن ولی دو محصول دیگه (که فرقی ندارن با دوتای دیگه) همیشه کد خطای ۱۷ : “مقادیر برگشتی از سمت کافه بازار نامعتبر است” رو میدن! محصول خریداری میشه ولی این خطا رو هم میده، یعنی پول به حساب واریز میشه؟

  54. درود آقای ریحانه
    قصد دارم این پلاگین را برای پرداخت درون برنامه ای مایکت پیاده سازی کنم.
    اینطور که مشخصه مثل بازار میمونه.
    خواهشا راهنمایی کنید که در فایل Jar که کدهای بازار قرار داره آیا تغییراتی داده اید یا اینکه همه کدنویسی ها در اسکریپت های یونیتی انجام شده است؟
    ممنون

    1. سلام و وقت بخیر
      فرآیند ساخت پلاگین برای هر فروشگاه متفاوت هست و باید تست و خطای زیادی بشه
      متاسفانه به دلیل اینکه فردا به خدمت سربازی اعزام میشم، فرصت راهنمایی دقیق ندارم.
      یک نکته اینکه، شما مجاز به استفاده از ساختار پلاگین باباردو برای فروشگاه های دیگه هستید، اما تنها برای استفاده شخصی خودتون و مجوز انتشار عمومی پلاگین رو ندارید.
      به هرحال انشاءالله در آینده برای فروشگاه مایکت هم این پلاگین رو ارائه میکنیم تا دوستان بازی‌ساز بتونن توی این فروشگاه هم بدون دغدغه بازی‌هاشون رو منتشر کنن.
      موفق باشید

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

  56. سلام.بسیار بسیار ممنون از زحماتی که میکشید
    ی سوالی داشتم.چرا همیشه دفعه اول که روی دکمه خرید کلیک میکنیم اخطار عدم ارتباط با بازر میده.و گاهی تا چندبار.و بعد درست میشه؟

    راستی اینم بازی ما با پلاگین شما
    https://cafebazaar.ir/app/com.mandm.Missiledefense/?l=fa
    https://www.aparat.com/v/ga2VJ

  57. سلام
    خسته نباشید
    من از پلاگین شما برای دوتا بازی استفاده کردم و خیلی هم خوب بود ولی توی بازی سومم یه مشکلی دارم باهاش
    وقتی که خرید از طریق پلاگین انجام میشه و بعد از پرداخت موفق و گرفتن پیام
    IabPurchase finished: IabResult: Success (response: 0:OK), purchase: PurchaseInfo(type:inapp):{“orderId”: “***”, “purchaseToken”: “***”, “developerPayload”: “”, “packageName”: “***”, “purchaseState”: 0, “purchaseTime”: ***, “productId”: “***”}
    هیچ اتفاق دیگه ای نمیافته و تابع getPurchaseResult اصلا فراخوانی نمیشه
    میتونید در این باره راهنماییم کنید؟

  58. خسته نباشید واقعا این یک پلاگین کامله همه چیز مورد نیاز رو هم داره.
    واقعا ممنونم…
    خیلی راحت و عالی پیاده سازی شد در کمتر از چند دقیقه! خیلی تمیز امادش کردید. در نظر دارم اگه فروشم خوب باشه حتما مبلغی رو هم برای حمایت از شما بزارم کنار چون ساعتها توی وقتم با پکیج شما صرفه جویی شد. بازم ممنون.

  59. سلام و درود بر شما
    ممنون از زحمتی که کشیدید
    شدیدا ازتون درخواست می کنم که برای مایکت هم تهیه کنید چون توسعه هنده های زیادی هستند که بنا به دلایلی می خوان به طرف مایکت برن

  60. سلام ببخشید یک مشکل پیش برام اومد وقتی بازی رو خروجی میگیرم و قسمت فروشگاهم میرم روی دکمه خرید میزنم درجا یک پیام خطا میده که مربوط به (به هر دلیلی در برقراری ارتباط با کافه بازار و initial کردن فرآیند خطا رخ داده.) این هست نمیدونم باید جیکار کنم

    کلید RSk رو هم درست دادم

    اگه راهنماییم کنید ممنون میشم

  61. سلام و خسته نباشید
    متاسفانه وقتی کالای OnCosume رو انجام میدم، برای باردوم هم می تونم انجام بدم
    یعنی به نوعی انگار خرید ذخیره نشده
    میشه برسی کنید؟

    1. منظورم nonConsume بود
      البته قیمت هارو برای تست روی ۰ گذاشتم و بازی رو انتشار ندادم

  62. سلام
    من از پلاگینتون استفاده کردم ولی وقتی خرید رو انجام می دم پول رو از حساب کافه بازارم کم می کنهولی سکه هایی رو ک باید اضافه کنه رو ن. از طرفی پولی هم ک کم می شه رو به حساب توسعه دهنده ارسال نمی کنه و پیغام خطا می ده . معلوم نیست ان پول کجا می ره اصلا . نرم افزار بازار و بازی خودمم حذف کردم و دوباره نصب کردم ولی باز درست نشد . ممنون می شم کمک کنید

    1. اقا شرمنده ایراد از کد های خودم بوداون بخش که باید سکه هارو اضافه می کردم

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

  64. با سلام و تشکر از شما برای گسترش فرهنگ زیبای اشتراک گذاری
    برای دوستانی که بازیشون بعد از خرید بسته می شد، (ارور unfortunately “app name” has closed) یا یه چیزی تو همین مایه ها
    من دو تا کار کردم که فکر میکنم باعث رفع این ارور شد، اول اینکه کلیدی که بازار میده رو باید چک کنین آخرش یه فاصله اضافی نداشته باشه و در ضمن چند تا حرف اول رو چک کنید که مطمئن شید کلید کامل کپی شده ، دوم تو یونیتی ۲۰۱۷.۳ تو بخش Player Setting تب Other تیک Multithreaded Rendering رو بر دارین. بعد بیلد بگیرین احتمالا درست میشه!

  65. با سلام و وقت بخیر و تبریک سال نو
    بنده دوتا بازی نوشتم و درونشون از پرداخت درون برنامه ای استفاده کردم
    اما فقط یکی از اون ها پرداختش عمل میکنه…
    و روی اون یکی Handle نمیشه
    دقیقا هر کاری روی اون یکی کردم روی این یکی هم کردم
    چرا این اتفاق میوفته؟
    با تشکر

  66. باسلام
    از پلاگین خوبتون سپاسگزارم.
    طبق سرچ و بررسی های خود به این نکته رسیده ام که پلاگین سوملا برای اندروید ۸ منسوخ شده است.
    https://assetstore.unity.com/packages/tools/integration/store-in-app-purchase-6103

    ایا پلاگین باباردو را در اندروید ۸ تست کرده اید؟ ایا در اندروید ۸ قابل استفاده است؟

    باتشکر

  67. سلام اگه برنامه ای با اپلیکیشن ساز ساخته باشیم مثلا اپچه هنگام بارگذاری و قیمت گذاری در بازار پیام میده برا یپولی کردن دسترسی پرداخت از طریق بازار رو از فایل مانیفیست برنامه حذف کن باتوجه به اینکه من بدون برنامه نویسی این کار و کردم چطور باید این کار و انجام بدم

  68. با سلام
    ممنون از سایت خوبتون
    من وقتی بازیم اجرا میکنم و روی دکمه خرید کلیک میکنم هر بار خطا شماره یک رو به من میده ؟؟
    چی کار باید بکنم ؟؟؟

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *