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

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

مطمئن شوید که از آخرین نسخه B4A استفاده می‌کنید و SDK شما آخرین بروزرسانی ها را دریافت کرده است.

کتابخانه ی پولکی را از لینک زیر دریافت کنید و به پروژه خود اضافه کنید.

https://github.com/cafebazaar/PoolakeyB4Asdk

فایل Manifest را باز کنید و خط زیر را به آن اضافه کنید.

CreateResourceFromFile(Macro, Poolakey.BillingReceiver)


۲: ساخت و ساز

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

Dim Poolakey As Poolakey 
Poolakey.Initialize _
.EnableSecurityCheck("KEY") _ 
.Build

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

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

توجه: پیشنهاد میشود به جای قراردادن مستقیم کلید در پروژه آن را از سمت سرور دریافت کنید.

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

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

برای اتصال به بازار، باید از تابع Connect موجود در کلاس Poolakey استفاده کنید:

Poolakey.Connect("Poolakey")

Private Sub Poolakey_ConnectionSucceed
Log("Service: Connected")
End Sub
Private Sub Poolakey_Disconnected
Log("Service: Not Connected")
End Sub
Private Sub Poolakey_ConnectionFailed (Error As PoolakeyException)
Log("Service: Failed to Connect" & CRLF & Error.ErrorMessage)
End Sub

با صدا زدن تابع Connect به سه Event دسترسی دارید که EventName آن ها در ورودی تابع از شما گرفته میشود.

  • ConnectionSucceed وقتی صدا زده می‌شود که اتصال به بازار برقرار شود
  • ConnectionFailed وقتی صدا زده می‌شود که اتصال به بازار برقرار نشود
  • Disconnected وقتی صدا زده می‌شود که طبق رویدادی ارتباط برنامه شما با بازار قطع شود

همان‌طور که می‌بینید، در ConnectionFailed به یک نمونه از PoolakeyException دسترسی دارید که به کمک آن می‌توان متوجه مشکلی که باعث عدم اتصال برنامه شما به بازار شده است شد.

۴: قطع اتصال با بازار

برای جلوگیری از مشکلاتی همچون Memory Leak باید در متد Activity_Pause از Activity خود، اقدام به قطع اتصال با بازار کنید:

Sub Activity_Pause (UserClosed As Boolean)
If UserClosed Then Poolakey.Connection.Disconnect
End Sub

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

برای شروع روند خرید یک محصول، باید ابتدا یک نمونه از کلاس PurchaseRequest ساخته شود:

Dim Request As PoolakeyPurchaseRequest
Request.ProductId = "PRODUCT_ID"
Request.Payload = "PAYLOAD"

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

سپس با استفاده از فانکشن purchaseProduct از کلاس Payment روند خرید محصول مورد نظر را شروع کنید:

Poolakey.PurchaseProduct("Purchase", Request)


Private Sub Purchase_PurchaseFlowBegan
...
End Sub
Private Sub Purchase_PurchaseFailedToBeginFlow (Error As PoolakeyException)
...
End Sub
Private Sub Purchase_PurchaseSucceed (PurchaseInfo As PoolakeyPurchaseInfo)
...
End Sub
Private Sub Purchase_PurchaseCanceled
...
End Sub
Private Sub Purchase_PurchaseFailed (Error As PoolakeyException)
...
End Sub

با صدا زدن تابع PurchaseProduct به پنج Event دسترسی دارید که EventName آن ها در ورودی تابع از شما گرفته میشود.

  • PurchaseFlowBegan وقتی صدا زده می‌شود که فرایند هدایت کاربر به صفحه خرید بازار به درستی انجام شود.
  • FailedToBeginFlow وقتی صدا زده می‌شود که فرایند هدایت کاربر به صفحه خرید بازار به درستی انجام نشود.

همانطور که می‌بینید، در FailedToBeginFlow به یک نمونه از PoolakeyException دسترسی دارید که به کمک آن می‌توان متوجه مشکلی که در شروع فرایند خرید شده است شد.

  • PurchaseSucceed وقتی صدا زده می‌شود که خرید با موفقیت انجام شود، که در این صورت از طریق PurchaseEntity می‌توانید به اطلاعات خرید دست پیدا کنید. توجه کنید که در صورت موفقیت‌آمیز بودن خرید، بسیار پیشنهاد می‌شود که از طریق API پرداخت بازار، خودتان صحت پرداخت را نیز بررسی کنید.
  • PurchaseCanceled وقتی صدا زده می‌شود که کاربر از خرید منصرف شود.
  • PurchaseFailed وقتی صدا زده می‌شود که مشکلی در خرید وجود داشته باشد. این مشکل می‌تواند از جنس صحت نداشتن اطلاعات خرید و مشکلات مشابه باشد. در این‌صورت به کمک نمونه PoolakeyException موجود در این ایونت می‌توانید از اشکال به‌وجود آمده مطلع شوید.

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

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

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

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

Poolakey.ConsumeProduct("Consume", "PURCHASE_TOKEN")


Private Sub Consume_ConsumeSucceed
...
End Sub
Private Sub Consume_ConsumeFailed (Error As PoolakeyException)
...
End Sub

با صدا زدن تابع ConsumeProduct به دو Event دسترسی دارید که EventName آن ها در ورودی تابع از شما گرفته میشود.

  • ConsumeSucceed وقتی صدا زده می‌شود که عملیات مصرف کردن خرید با موفقیت انجام شود.
  • ConsumeFailed وقتی صدا زده می‌شود که عملیات مصرف کردن خرید انجام نشود، در این شرایط شما می‌توانید با استفاده از نمونه PoolakeyException موجود در این ایونت متوجه مشکل موجود شوید.

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

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

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

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

Poolakey.GetPurchasedProducts("Query")


Private Sub Query_QuerySucceed (Query As PoolakeyPurchaseQuery)
For i = 0 To Query.Size - 1
Log(Query.Get(i))
Next
End Sub
Private Sub Query_QueryFailed (Error As PoolakeyException)
Log("Query failed: " & Error)
End Sub

با صدا زدن تابع GetPurchasedProducts به دو Event دسترسی دارید که EventName آن ها در ورودی تابع از شما گرفته میشود.

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

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

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

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

برای دریافت مطلع شدن از اشتراک های کاربر در برنامه شما باید دقیقا مثل دریافت خریدهای مربوط به پرداخت درون برنامه ای کاربر در برنامه شما و به جای استفاده از تابع GetPurchasedProducts از تابع GetSubscribedProducts موجود در کلاس Poolakey استفاده کنید.

۱۰: بررسی وضعیت اشتراک آزمایشی برای کاربر

شما می‌توانید با استفاده از تابع CheckTrialSubscription موجود در کلاس Poolakey از وضعیت امکان تعلق اشتراک آزمایشی به کاربر ‌در برنامه خود مطلع شوید:

Poolakey.CheckTrialSubscription("Trial")


Private Sub Trial_CheckTrialSubscriptionSucceed (Info As PoolakeyTrialSubscriptionInfo)
...
End Sub
Private Sub Trial_CheckTrialSubscriptionFailed (Error As PoolakeyException)
...
End Sub

با صدا زدن تابع CheckTrialSubscription به دو Event دسترسی دارید که EventName آن ها در ورودی تابع از شما گرفته میشود.

  • CheckTrialSubscriptionSucceed وقتی صدا زده می‌شود که ارتباط با بازار به خوبی برقرار شود و مشکلی در دریافت وضعیت اشتراک آزمایشی وجود نداشته باشد که در این صورت، با استفاده از PoolakeyTrialSubscriptionInfo می‌توانید به وضعیت امکان تعلق اشتراک آزمایش کاربر دسترسی پیدا کنید. PoolakeyTrialSubscriptionInfo شامل فیلدهای زیر است:
  •  IsAvailable: (که در صورتی که فعال باشد True و در غیر این صورت False خواهد بود)، این فیلد در صورت فعال بودن نشانگر این است که در صورت خرید اشتراک توسط کاربر، اشتراک آزمایشی بجای اشتراک خریداری شده برای او فعال خواهد شد و پس از اتمام اشتراک آزمایشی با اشتراک اول تمدید خواهد شد.
  • TrialPeriodDays: طول اشتراک آزمایشی که به کاربر تعلق خواهد گرفت.
  • CheckTrialSubscriptionFailed وقتی صدا زده می‌شود که ارتباط با بازار برقرار نشود یا مشکلی در دریافت وضعیت اشتراک آزمایشی وجود داشته باشد، که در این شرایط، می‌توانید با استفاده از نمونه PoolakeyException موجود در این ایونت متوجه مشکل به‌وجود آمده شوید.
نکات مهم:

قبل از کار با CheckTrialSubscription باید مطمئن شوید که کاربر وارد حساب بازار خود شده است، در غیر این‌صورت CheckTrialSubscriptionFailed صدا زده می‌شود.

برای بررسی وضعیت اشتراک کاربر پس از فعال‌سازی اشتراک آزمایشی می‌توانید از قسمت «دریافت اشتراک‌های کاربر در برنامه شما» استفاده کنید.

بیشتر بخوانید:

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

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

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

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