نسخه چاپی
پولکی ریاکت نیتیو
پولکی ریاکت نیتیو چیست؟
“پولکی ریاکت نیتیو” کتابخانهای برای پیادهسازی پرداخت درون برنامه بازار برای ریاکت نیتیو هست، این پروژه با استفاده از زیرساخت کتابخانهی پولکی که با زبان kotlin نوشته شده پیادهسازی شده است. هدف از پیادهسازی این کتابخانه، بهبود فرآیند پیادهسازی پرداخت درون برنامهای بازار برای توسعهدهنده است و به ما اجازه میدهد در طولانی مدت، قابلیتهای تازهای به این کتابخانه اضافه کنیم.
استفاده از “پولکی ریاکت نیتیو”
۱- افزودن کتابخانه به پروژه:
برای شروع نیاز هست که کتابخانه را به پروژه خود اضافه کنید. برای اضافه کردن پروژه میتوانید به یکی از دو روش زیر این کار را انجام دهید.
- yarn add @cafebazaar/react-native-poolakey
- npm install @cafebazaar/react-native-poolakey
۲- ساخت و ساز
ساختار پرداخت درون برنامهای به شکلی هست که برنامه شما باید مستقیما با برنامه بازار صحبت کند تا بتواند عملیات خرید و... را انجام دهد. برای صحبت کردن با بازار، ابتدا باید به بازار متصل شوید. برای انجام این کار ابتدا باید کتابخانه را در کامپوننت خود import کنید:
import { useBazaar } from '@cafebazaar/react-native-poolakey';
۳. اتصال به بازار
برای اتصال به بازار، به ۲ طریق میتوانید این کار را انجام دهید:
۱- استفاده از متد useBazaar
:
import { useBazaar } from '@cafebazaar/react-native-poolakey';
// ...
function MyComponent() {
const bazaar = useBazaar(RSA_PUBLIC_KEY);
}
۲- وصل شدن و قطع اتصال در componentDidMount
:
import bazaar from '@cafebazaar/react-native-poolakey';
// ...
class MyComponent {
componentDidMount() {
bazaar
.connect(RSA_PUBLIC_KEY)
.catch(handleError); // bazaar is not installed or what?!
}
}
همانطور که میبینید، در catch
به یک نمونه از throwable
دسترسی دارید که به کمک آن میتوانید متوجه مشکلی که باعث عدم اتصال برنامه شما به بازار شده است شوید.
- به جای مقدار
RSA_PUBLIC_KEY
باید از کلید برنامه خود استفاده کنید، برای دریافت کلید برنامه به پنل پیشخان مراجعه کنید و در صفحه اطلاعات برنامه، وارد تب «پرداخت درون برنامهای» شوید و کلید را از آنجا کپی کنید و به جای مقدارRSA_PUBLIC_KEY
در نمونه کد بالا قرار دهید.
آبجکت bazaar
پل ارتباطی بین برنامه شما و بازار است و از این آبجکت برای اتصال به بازار، خرید یک محصول و... میتوانید استفاده کنید.
۴: قطع اتصال با بازار
برای جلوگیری از مشکلاتی همچون Memory Leak
در صورتی که از متد connect
استفاده کردهاید باید در متد componentWillUnmount
اقدام به قطع اتصال با بازار کنید:
componentWillUnmount() {
bazaar.disconnect();
}
به ازای هر فراخوانی connect
در کامپوننتهای مختلف در نهایت باید دقیقا یک فراخوانی disconnect
اتفاق بیافتد. در صورتی که تعداد فراخوانیهای disconnect
معادل connect
ها شود، اتصال با بازار کاملا قطع میشود.
در صورت استفاده از useBazaar
نیاز به فراخوانی disconnect
ندارید.
۵. شروع روند خرید یک محصول
برای شروع روند خرید یک محصول، باید از متد purchaseProduct
استفاده کنید:
const purchaseResult = await bazaar.purchaseProduct(“PRODUCT_ID”);
به جای مقدار PRODUCT_ID
باید مقدار شناسه محصولی که قصد خرید آن را دارید را جایگزین کنید. برای دریافت مقدار شناسه محصول مورد نظر، به پیشخان توسعهدهندگان مراجعه کنید و در صفحه اطلاعات برنامه، در تب «پرداخت درون برنامهای» یک محصول جدید بسازید و شناسهای برای آن در نظر بگیرید یا این که میتوانید، شناسه محصولهای پیشین که ساختهاید را جایگزین مقدار PRODUCT_ID
کنید.
۶: شروع روند اشتراک یک محصول
برای اشتراک یک محصول، دقیقا مثل شروع خرید یک محصول عمل کنید و به جای استفاده از فانکشن purchaseProduct
از فانکشن subscribeProduct
موجود در آبجکت bazaar
استفاده کنید.
۷: دریافت نتیجه خرید اشتراک و محصول
بعد از اینکه از یکی از فانکشنهای purchaseProduct
یا subscribeProduct
استفاده کردید، باید از نتیجه خرید کاربر خود مطلع شوید. مقدار بازگشتی متدهای فوق <Promise<PurchaseResult
میباشد. در صورت موفق بودن فرآیند پرداخت میتوانید اطلاعات پرداخت را در مدل purchaseResult
دریافت کنید. در صورتی که هر گونه مشکلی در فرآیند پرداخت بیافتد، promise
مربوطه reject
خواهد شد و خطا به شما برگردانده خواهد شد. میتواند از ساختار try-catch
با async/await
یا متد catch
روی promise
برای خواندن خطاها استفاده کنید.
۸: مصرف کردن خرید کاربر
وقتی کاربر یکی از محصولات دیجیتالی برنامه شما را خریداری میکند، مالک یک نسخه محصول مورد نظر میشود و در صورتی که شما کاربر را مجددا به صفحه پرداخت هدایت کنید، کاربر نمیتواند دوباره خرید خود را انجام دهد و با اطلاعات خرید قبلی به برنامه شما باز میگردد (purchaseSucceed)
. اما شما میتوانید برای محصول مورد نظر خود تاریخ مصرف و یا شرایط خاصی را در نظر بگیرید که خرید مصرف شود که در این صورت کاربر میتواند مجددا خرید خود را انجام دهد. برای مصرف کردن یک خرید از فانکشن consumeProduct
موجود در آبجکت bazaar
استفاده کنید:
consumeProduct(PURCHASE_TOKEN: string): Promise<void>
توجه کنید که بهجای مقدار PURCHASE_TOKEN
در نمونه کد بالا، باید مقدار واقعی توکن خریدی که میخواهید مصرف شود را قرار دهید. دسترسی به توکن خرید، از طریق PurchaseResult
امکانپذیر است. وقتی کاربر خرید انجام میدهد، پولکی به شما یک PurchaseResult
میدهد. همچنین میتوانید تمام خریدهای کاربر که در برنامه شما انجام داده است را از طریق فانکشن getPurchasedProducts
بدست بیاورید که در این صورت، پولکی به شما لیستی از PurchaseResult
میدهد که از این طریق نیز میتوانید به توکن خرید دسترسی پیدا کنید.
توجه: محصولات اشتراکی را نمیتوانید مصرف کنید.
توجه: به این نکته توجه داشته باشید که قبل از کار با
consumeProduct
باید مطمئن شوید که کاربر وارد حساب بازار خود شده است، در غیر اینصورت این عملیات با خطا مواجه میشود.
۹: دریافت خریدهای کاربر در برنامه شما
شما میتوانید با استفاده از فانکشن getPurchasedProducts
موجود در آبجکت bazaar
از خریدهای کاربر که در برنامه شما انجام داده است، مطلع شوید:
getPurchasedProducts(): Promise<PurchaseResult[]>
در صورتی که ارتباط با بازار به خوبی برقرار شود و مشکلی در دریافت لیست خریدها وجود نداشته باشد، لیستی از PurchaseResult به شما برمیگردد که میتوانید به خریدهای کاربر دسترسی پیدا کنید.
توجه: به این نکته توجه داشته باشید قبل از کار با
getPurchasedProducts
باید مطمئن شوید که کاربر وارد حساب بازار خود شده است، در غیر اینصورت صدا زدن این متد با خطا مواجه میشود.
۱۰: دریافت اشتراکهای کاربر در برنامه شما
شما میتوانید با استفاده از فانکشن getSubscribedProducts
موجود در آبجکت bazaar
از محصولاتی که کاربر اشتراک آنها را در برنامه شما خریداری کرده ، مطلع شوید:
getSubscribedProducts(): Promise<PurchaseResult[]>
در صورتی که ارتباط با بازار به خوبی برقرار شود و مشکلی در دریافت لیست اشتراکها وجود نداشته باشد که در این صورت، لیستی از PurchaseResult
به شما برمیگردد که میتوانید به اشتراکهای کاربر دسترسی پیدا کنید.
توجه: به این نکته توجه داشته باشید که قبل از کار با getSubscribedProducts
باید مطمئن شوید که کاربر وارد حساب بازار خود شده است، در غیر اینصورت queryFailed
صدا زده میشود.
۱۱- دریافت جزییات محصولات
شما میتوانید با استفاده از فانکشن getInAppSkuDetails
میتوانید جزییات محصولات را دریافت کنید.
getInAppSkuDetails(productIds: string[]): Promise<SkuDetails[]>
ورودی این متد لیستی PRODUCT_ID
ها است، به جای مقدار PRODUCT_ID
باید مقدار شناسه محصولی که قصد دریافت جزییات آن را دارید را جایگزین کنید. برای دریافت مقدار شناسه محصول مورد نظر، به پیشخان توسعهدهندگان مراجعه کنید و در صفحه اطلاعات برنامه، در تب «پرداخت درون برنامهای» یک محصول جدید بسازید و شناسهای برای آن در نظر بگیرید یا این که میتوانید، شناسه محصولهای پیشین که ساختهاید را جایگزین مقدار PRODUCT_ID
کنید.
در صورتی که ارتباط با بازار به خوبی برقرار شود و مشکلی در دریافت لیست جزییات محصولات وجود نداشته باشد، لیستی از SkuDetails
به شما برمیگردد که میتوانید به جزییات محصولات خود دسترسی پیدا کنید.
۱۲- دریافت جزییات محصولات اشتراکی
شما میتوانید با استفاده از فانکشن getSubscriptionSkuDetails
جزییات محصولات اشتراکی خود را دریافت کنید.
getInAppSkuDetails(productIds: string[]): Promise<SkuDetails[]>
ورودی این متد لیستی PRODUCT_ID
ها است، به جای مقدار PRODUCT_ID
باید مقدار شناسه محصولی که قصد دریافت جزییات آن را دارید را جایگزین کنید. برای دریافت مقدار شناسه محصول مورد نظر، به پیشخان توسعهدهندگان مراجعه کنید و در صفحه اطلاعات برنامه، در تب «پرداخت درون برنامهای» یک محصول جدید بسازید و شناسهای برای آن در نظر بگیرید یا این که میتوانید، شناسه محصولهای پیشین که ساختهاید را جایگزین مقدار PRODUCT_ID
کنید.
در صورتی که ارتباط با بازار به خوبی برقرار شود و مشکلی در دریافت لیست جزییات محصولات وجود نداشته باشد، لیستی از SkuDetails
به شما برمیگردد که میتوانید به جزییات محصولات خود دسترسی پیدا کنید.
به مطالب ارائه شده چه امتیازی میدهید؟
محل نوشتن دیدگاه ...
اگر در مورد محتوا نظر یا پیشنهادی دارید لطفا برای ما بنویسید.
زمان انتشار: ۱۴۰۰-۰۴-۲۷ ۱۰:۴۹
آخرین بهروزرسانی: ۱۴۰۰-۰۸-۱۹ ۰۸:۳۲