نسخه چاپی
فهرست مطالب

پولکی فلاتر چیست؟

“پولکی فلاتر” کتابخانه‌ای برای پیاده‌سازی پرداخت درون برنامه‌ بازار برای فلاتر هست، این پروژه با استفاده از زیرساخت کتابخانه‌ی پولکی که با زبان kotlin نوشته شده پیاده‌ شده است. هدف از پیاده‌سازی این کتابخانه، بهبود فرآیند پیاده‌سازی پرداخت درون برنامه‌ای بازار برای توسعه‌دهنده است و به ما اجازه می‌دهد در طولانی مدت، قابلیت‌های تازه‌ای به این کتابخانه اضافه کنیم.

استفاده از “پولکی فلاتر”

۱- افزودن کتابخانه به پروژه: 

برای شروع نیاز هست که کتابخانه را به پروژه‌ خود اضافه کنید. برای این کار باید خط زیر را به فایل pubspec.yaml پروژه خودتان اضافه کنید:.

۱- افزودن کتابخانه به پروژه: 

توجه: مطمئن شوید که از آخرین نسخه کتابخانه استفاده می‌کنید. برای بررسی لطفا به لینک https://github.com/cafebazaar/flutter_poolakey مراجعه کنید.

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

flutter pub get

۲- ساخت و ساز

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

import 'package:flutter_poolakey/flutter_poolakey.dart';

۳. اتصال به بازار

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

await FlutterPoolakey.init(RSA_PUBLIC_KEY, onDisconnected: () { /*reconnect here*/ 
});

از آنجایی که احتمال دارد در وصل شدن به بازار خطایی صورت بگیرد نیاز هست تا خروجی متد را چک کنید و در صورت خطا دادن متوجه مشکلی که باعث عدم اتصال برنامه شما به بازار شده است شوید.

  • به جای مقدار RSA_PUBLIC_KEY باید از کلید برنامه خود استفاده کنید، برای دریافت کلید برنامه به پنل پیشخان مراجعه کنید و در صفحه اطلاعات برنامه، وارد بخش «پرداخت درون برنامه‌ای» شوید و کلید را از آنجا کپی کنید و به جای مقدار RSA_PUBLIC_KEY در نمونه کد بالا قرار دهید.

۴. شروع روند خرید یک محصول

برای شروع روند خرید باید از متد زیر استفاده کنید:

PurchaseInfo purchaseInfo = await FlutterPoolakey.purchase('PRODUCT_ID', payload: 'DEVELOPER_PAYLOAD');

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

۵: شروع روند اشتراک یک محصول

برای اشتراک یک محصول، دقیقا مثل شروع خرید یک محصول عمل کنید و به جای استفاده از فانکشن purchase از فانکشن subscribe موجود در کلاس FlutterPoolakey استفاده کنید.

۶: دریافت نتیجه خرید اشتراک و محصول

بعد از این‌که از یکی از فانکشن‌های purchase  یا  subscribe استفاده کردید، باید از نتیجه خرید کاربر خود مطلع شوید. مقدار بازگشتی متدهای فوق PurchaseInfo می‌باشد. در صورت موفق بودن فرآیند پرداخت می‌توانید اطلاعات پرداخت را در مدل PurchaseInfo دریافت کنید. در صورت  بروز هر گونه مشکلی در فرآیند پرداخت ، با خطای PlatformException  مواجه خواهید شد و نیاز هست که خطای مناسب را به کاربر نمایش دهید.

۷: مصرف کردن خرید کاربر

وقتی کاربر یکی از محصولات دیجیتالی برنامه شما را خریداری می‌کند، مالک یک نسخه محصول مورد نظر می‌شود و در صورتی که شما کاربر را مجددا به صفحه پرداخت هدایت کنید، کاربر نمی‌تواند دوباره خرید خود را انجام دهد و با اطلاعات خرید قبلی به برنامه شما باز می‌گردد (purchaseSucceed). اما شما می‌توانید برای محصول مورد نظر خود تاریخ مصرف و یا شرایط خاصی را در نظر بگیرید که خرید مصرف شود که در این صورت کاربر می‌تواند مجددا خرید خود را انجام دهد. برای مصرف کردن یک خرید از فانکشن consume موجود در کلاس FlutterPoolakey استفاده کنید:

await FlutterPoolakey.consume(PURCHASE_TOKEN);

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

توجه: محصولات اشتراکی را نمی‌توانید مصرف کنید.

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

۸: دریافت خریدهای کاربر در برنامه شما

شما می‌توانید با استفاده از فانکشن getAllPurchasedProducts موجود در کلاس FlutterPoolakey از خریدهای کاربر که در برنامه شما انجام داده است، مطلع شوید:

List<PurchaseInfo> purchasedProductsList= await FlutterPoolakey.getAllPurchasedProducts()

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

توجه: به این نکته توجه داشته باشید قبل از کار با getAllPurchasedProducts باید مطمئن شوید که کاربر وارد حساب بازار خود شده است، در غیر این‌صورت خطای PlatformException اتفاق می‌افتد.

۹: دریافت اشتراک‌های کاربر در برنامه شما

شما می‌توانید با استفاده از فانکشن getAllSubscribedProducts موجود در کلاس FlutterPoolakey از محصولاتی که کاربر اشتراک آنها را در برنامه شما خریداری کرده ، مطلع شوید:

List<PurchaseInfo> purchasedProductsList = await FlutterPoolakey.getAllSubscribedProducts()

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

توجه: به این نکته توجه داشته باشید که قبل از کار با getAllSubscribedProducts باید مطمئن شوید که کاربر وارد حساب بازار خود شده است، در غیر این‌صورت خطای PlatformException اتفاق می‌افتد.

۱۰- دریافت جزییات محصولات:

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

FlutterPoolakey.getInAppSkuDetails(['PRODUCT_ID1', 'PRODUCT_ID2'])

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

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

۱۱- دریافت جزییات محصولات اشتراکی:

شما می‌توانید با استفاده از فانکشن getSubscriptionSkuDetails می‌توانید جزییات محصولات اشتراکی خود را دریافت کنید.

FlutterPoolakey.getSubscriptionSkuDetails(['PRODUCT_ID1', 'PRODUCT_ID2'])

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

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

به مطالب ارائه شده چه امتیازی می‌دهید؟
محل نوشتن دیدگاه ...

اگر در مورد محتوا نظر یا پیشنهادی دارید لطفا برای ما بنویسید.

زمان انتشار: ۱۴۰۰-۰۴-۲۷ ۱۱:۱۷

آخرین به‌روزرسانی: ۱۴۰۰-۰۸-۱۹ ۰۸:۳۲