راهنمای کتابخانهٔ پرداخت در Basic 4 Android

 دریافت کد نمونه

نمونه این کد را در گیتهاب مشاهده کنید: https://github.com/nivadcloud/InAppBillingB4A

راه اندازی پرداخت درون برنامه‌ای

گام اول: دریافت کلید RSA از بازار

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

info جزئیات اطلاعات برنامه در این مرحله اهمیتی ندارند

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

گام دوم: افزودن کتابخانه‌ی نیواد

فایل‌های کتابخانه را دانلود کنید و در پوشهٔ Libraries بیسیک قرار دهید. به طور مثال اگر بیسیک را در درایو D ویندوز نصب کرده باشید این پوشه در این آدرس قرار دارد:

D:\Program Files (x86)\Anywhere Software\Basic4android\Libraries

 

در پنجرهٔ Libraries بیسیک فور اندروید تیک مربوط به کتابخانهٔ نیواد را بزنید تا این کتابخانه به پروژه‌تان افزوده شود. اگر کتابخانهٔ نیواد در لیست موجود نبود، روی لیست راست کلیک کنید و گزینهٔ Reload را انتخاب کنید. 

 به Project->Manifest Editor رفته و دسترسی پرداخت درون برنامه‌ای مورد نظرتان را اضافه کنید.

AddPermission(com.farsitel.bazaar.permission.PAY_THROUGH_BAZAAR) ' برای کافه بازار
AddPermission(ir.mservices.market.BILLING) ' برای مایکت

warning فقط یکی از دسترسسی‌ها را استفاده کنید

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

در بخش Globals اکتیویتی خرید این متغیر را تعریف کنید:

Dim mNivadBilling As BillingProcessor

    

کدهای زیر را به متد Activity_Create اضافه کنید:

If FirstTime Then
    Dim bazaarRSAKey As String
    Dim nivadApplicationID As String
    Dim nivadBillingSecret As String

    bazaarRSAKey = "کلید RSA که از کافه بازار دریافت کردید"
    nivadApplicationID = "مقدار Application ID که در پنل نیواد، بخش پرداخت امن دریافت کردید"
    nivadBillingSecret = "مقدار Application Secret که در پنل نیواد، بخش پرداخت امن دریافت کردید"

    mNivadBilling.initialize(bazaarRSAKey, nivadApplicationID, nivadBillingSecret, "cafe-bazaar")
    ' در صورتی که از مایکت استفاده می‌کنید:
    ' mNivadBilling.initialize(bazaarRSAKey, nivadApplicationID, nivadBillingSecret, "myket")
End If

در منوی Tools گزینهٔ Manifest Editor را انتخاب کنید و خط زیر را به آن اضافه کرده، فایل را ذخیره کنید:

AddApplicationText(<activity android:name="io.nivad.billing.b4a.PurchaseActivity" />)

سابروتین‌های مربوط به پرداخت را اضافه کنید:

Sub nivadbilling_purchase_history_restored()
  ' این متد زمانی صدا زده می‌شود که محصولاتی که کاربر خریده اما هنوز مصرف نشده‌اند از بازار دریافت شده اند. این محصولات را با متد‌های 
  ' isPurchased و isSubscribed 
  ' می‌توانید چک کنید
End Sub

Sub nivadbilling_product_purchased(sku As String, details As TransactionDetails)
  ' این روتین پس از خرید موفق صدا زده می‌شود
  ' برای محصولات مصرف شدنی اینجا تابع
  ' consumePurchase یا consumePurchaseInBackground
  ' را صدا بزنید و در صورتی که مقدار بازگشتی
  ' True
  ' بود اثر آن‌ را اعمال کنید.
End Sub

Sub nivadbilling_initialized()
  'این روتین زمانی که سرویس پرداخت درون برنامه‌ای آماده‌ی کار می‌شود صدا زده می‌شود
  ' دکم‌های خرید را تا قبل از فراخوانی این متد فعال نکنید در غیر این صورت ممکن است برنامهٔ شما
  ' با خطا مواجه شده و بسته شود
End Sub

Sub nivadbilling_error(errorCode As Int)
  ' این روتین در زمانی که اشکالی در فرایند پرداخت یا راه اندازی سرویس پرداخت درون‌برنامه‌ای به وجود بیاید صدا زده می‌شود.
  ' برخی از مقادیر پارامتر 
  ' code
  ' در آدرس زیر معرفی و توضیح داده شده اند:
  ' https://nivad.io/docs/iab-methods-and-error-codes/
End Sub

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

انجام یک خرید

برای آغاز فرایند خرید و هدایت کاربر به بازار باید از متدهای purchase و subscribe استفاده کنید. این دو متد به عنوان پارامتر ورودی شناسه‌ی محصول(productId یا sku) را دریافت می‌کنند.

info شناسهٔ محصول چیست؟

شناسه‌ی محصول رشته‌ی منحصر به فردی است که محصولات مختلف را از یکدیگر متمایز می‌کند. این شناسه را در بخش «پرداخت درون‌برنامه‌ای» در پنل بازار زمانی که محصولات و اشتراک‌های اپلیکیشنتان را تعریف می‌کنید خودتان تعیین می‌کنید. شناسه‌ی محصول حداکثر 100 حرف می‌تواند داشته باشد و قابل تغییر نیست.

مثال:

mNivadBilling.purchase("product_1000_coins")

برای مصرف یک محصول مصرف شدنی از متد consumePurchase استفاده کنید. این متد به عنوان پارامتر ورودی شناسه‌ی محصول را دریافت می‌کند.

برای چک کردن اینکه کاربر یک محصول (یا اشتراک) را خریداری کرده باید از متدهای isPurchased و isSubscribed استفاده کنید.