پلاگین خرید درون‌برنامه‌ای فلاتر (Flutter)

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

نصب Plugin

جهت پیاده‌سازی In App Billing در برنامه‌های Flutter کافی ‌است dependency مایکت را به pubspec.yaml خود به صورت زیر اضافه کنید:

myket_iap: ^1.0.0

دسترسی زیر را در قسمت دسترسی‌های فایل AndroidManifest.xml برنامه‌ی خود اضافه کنید.

import 'package:myket_iap/myket_iap.dart';

نحوه استفاده

این plugin به صورت static هست و نیازی به ایجاد شی ندارد.

نصب سرویس پرداخت درون‌برنامه‌ای مایکت باید قبل از هر تابع دیگری این تابع صدا زده شود تا از وضعیت نصب بودن مایکت و پشتیبانی کردنش از این سرویس اطلاع پیدا کنی، این تابع را در متد initState() می‌توانید صدا بزنید:

var iabResult = await MyketIAP.init(rsaKey: rsa, enableDebugLogging: true);

پارامتر rsaKey کلید عمومی است که از پنل توسعه‌دهنگان مایکت گرفته‌اید.

توجه کنید با تغییر پارامتر enableDebugLogging می‌توانید لاگ‌های مربوط به خرید را مشاهده نمایید و مقدار جواب این متد کلاس IabResult است.

برای خرید یک محصول از متد launchPurchaseFlow به صورت زیر استفاده کنید:

Map<String, dynamic> result = await MyketIAP.launchPurchaseFlow(sku: "gas", payload:"payload");

پارامتر sku شناسهٔ محصول درون‌برنامه‌ای که قصد خرید آن را دارید.

پارامتر payload رشته developerPayload برای مشخص کردن هر اطلاعات اضافی که مایلید مایکت به همراه اطلاعات خرید برای شما برگرداند، استفاده می‌شود.

جواب این متد به صورت یک Map متشکل از IabResult و Purchase است، برای دسترسی به این دو مقدار از کد زیر استفاده کنید.

IabResult purchaseResult = result[MyketIAP.RESULT];
Purchase purchase = result[MyketIAP.PURCHASE];

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

Map<String, dynamic> result = await MyketIAP.consume(purchase: purchase);

پارامتر purchase محصول خریداری شده است.

جواب این متد به صورت یک Map متشکل از IabResult و Purchase است، برای دسترسی به این دو مقدار از کد زیر استفاده کنید:

IabResult purchaseResult = result[MyketIAP.RESULT];
Purchase purchase = result[MyketIAP.PURCHASE];

برای گرفتن وضعیت یک محصول از متد getPurchase به صورت زیر استفاده کنید:

Map<String, dynamic> result = await MyketIAP.getPurchase(sku: "gas", querySkuDetails: false);

پارامتر sku شناسهٔ محصول درون‌برنامه‌ای که وضعیت آن را می‌خواهید.

پارامتر querySkuDetails در صورت true بودن اطلاعات محصول را نیز برمی‌گرداند.

جواب این متد به صورت یک Map متشکل از IabResult و Purchase است، برای دسترسی به این دو مقدار از کد زیر استفاده کنید:

IabResult purchaseResult = result[MyketIAP.RESULT];
Purchase purchase = result[MyketIAP.PURCHASE];

در صورتی که می‌خواهید اطلاعات تمام محصولات خریداری شده توسط کاربر را داشته باشید از متد queryInventory به صورت زیر استفاده کنید:

Map<String, dynamic> result = await MyketIAP.queryInventory(querySkuDetails: false);

پارامتر querySkuDetails در صورت true بودن اطلاعات محصول را نیز برمی‌گرداند.

جواب این متد به صورت یک Map متشکل از IabResult و Inventory است، برای دسترسی به این دو مقدار از کد زیر استفاده کنید:

IabResult purchaseResult = result[MyketIAP.RESULT];
Inventory inventory = result[MyketIAP.INVENTORY];

برای آزادسازی ریسورس‌های گرفته شده می‌توانید از متد dispose استفاده کنید:

await MyketIAP.dispose();
Was this article helpful?
Dislike 0
قبلی: پلاگین خرید درون‌برنامه‌ای React Native
بعدی: پلاگین خرید درون‌برنامه‌ای Cordova و PhoneGap