نسخه چاپی

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

۱. دانلود و وارد کردن پکیج یونیتی

پرداخت با یونیتی

۲. فعال‌سازی Android Auto-resulotion

پس از پایان واردسازی پکیج، پنجره فوق ظاهر می‌شود. برای دریافت کتابخانه‌های مورد نیاز پولکی، فعال‌سازی `Android Auto-resulotion` ضروری است.

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

۳. ساختن کلاس Payment

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

SecurityCheck securityCheck = SecurityCheck.Enable("KEY");

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

همچنین می‌توانید بدون استفاده از RSA و از طریق کد زیر یک نمونه از کلاس `SecurityCheck` درست کنید:

SecurityCheck securityCheck = SecurityCheck.Disable();

در مرحله بعد باید یک نمونه از کلاس `PaymentConfiguration` درست کنید و `localSecurityCheck` را به آن تزریق کنید:

PaymentConfiguration paymentConfiguration = new PaymentConfiguration(securityCheck);

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

private Payment payment;
SecurityCheck securityCheck = SecurityCheck.Enable("KEY");
PaymentConfiguration paymentConfiguration = new PaymentConfiguration(securityCheck);
payment = new Payment(paymentConfiguration);

۳. اتصال به پولکی

برای اتصال به بازار، باید از فانکشن connect موجود در کلاس Payment استفاده کنید. توجه داشته باشید، تمام API هایی که کار دریافت اطلاعات از پولکی را انجام می‌دهند، به دو صورت Async و Callback پیاده سازی شده‌اند. شما می‌توانید با توجه به نیاز خود از یکی از این روش‌ها استفاده کنید.‌

با استفاده از Async

var result = await payment.Connect();

با استفاده از Callback

_ = payment.Connect(OnPaymentConnect);
void OnPaymentConnect(Result<bool> result) { ... }

بستن ارتباط با پولکی در صورت بستن بازی

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

void OnApplicationQuit()
{
    payment.Disconnect();
}

۴. دریافت اطلاعات محصولات خریدنی یا اشتراکی:

از طریق دستور زیر می‌توان جزئیات محصولات، نظیر نوع محصول، شناسه، عنوان، توضیحات و قیمت را دریافت کرد:

type : انتخاب نوع محصولات. مقدار پیش‌فرض `SKUDetails.Type.all` است. در صورتی‌که می‌خواهید محصولات خریدنی یا اشتراکی رو بصورت جداگانه فیلتر کنید از آرگومان `type` بهره ببرید و آن را به یکی از مقادیر `inApp` یا ‍subscription‍ تغییر دهید.

با استفاده از Async :

var result = await payment.GetSkuDetails("productID");

با استفاده از Callback:

_ = payment.GetSkuDetails("productID", SKUDetails.Type.all, OnReceiveSkuDetails);
void OnReceiveSkuDetails(Result<List<SKUDetails>> result) { ... }

بکارگیری نتیجه:

Debug.Log($"{result.message}, {result.stackTrace}");
if (result.status == Status.Success)
{
    foreach (var sku in result.data)
    {
        Debug.Log(sku.ToString());
    }
}

۵. دریافت اطلاعات خریدها یا اشتراک‌های بازیکن:

شما با استفاده از فانکشن `GetPurchases` در کلاس `Payment` می‌توانید به جزئیات خرید بازیکنان دست یابید:

  • type : انتخاب نوع محصولات. مقدار پیش‌فرض `SKUDetails.Type.all` است. در صورتی‌که می‌خواهید محصولات خریدنی یا اشتراکی رو بصورت جداگانه فیلتر کنید از آرگومان `type` بهره ببرید و آن را به یکی از مقادیر `inApp` یا ‍subscription‍ تغییر دهید.

با استفاده از Async:

var result = await payment.GetPurchases();

با استفاده از Callback:

_ = payment.GetPurchases(SKUDetails.Type.all, OnReceivePurchases);
void OnReceivePurchases(Result<List<PurchaseInfo>> result) { ... }

بکارگیری نتیجه:

Debug.Log($"{result.message}, {result.stackTrace}");
if (result.status == Status.Success)
{
    foreach (var purchase in result.data)
    {
        Debug.Log(purchase.ToString());
    }
}

۶. خرید یا اشتراک محصول

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

  • productId : باید مقدار شناسه محصولی که قصد خرید آن را دارید را جایگزین کنید. برای دریافت مقدار شناسه محصول مورد نظر، به پیشخان توسعه‌دهندگان مراجعه کنید و در صفحه اطلاعات برنامه، در تب «پرداخت درون برنامه‌ای» یک محصول جدید بسازید و شناسه‌ای برای آن در نظر بگیرید یا این که می‌توانید، شناسه محصول‌های پیشین که ساخته‌اید را جایگزین مقدار `PRODUCT_ID` کنید.
  • type : با تعیین آن به Payment.Type.subscription اشتراک فراخوانی می‌شود در غیر این صورت مقدار پیش‌فرض Payment.Type.inApp است و خرید فراخوانی می‌شود.
  • onStart : زمانی که فرآیند خرید به درستی آغاز شده است فراخوانی می‌شود.
  • onComplete : زمانی که فرآیند خرید به صورت کامل پایان یافته است، فراخوانی می‌شود.
  • payload : به صورت پیش‌فرض یک رشته خالی است که توسط توسعه‌دهنده ارسال و در پایان فعالیت دریافت می‌شود و معمولا برای ارزیابی صحت درخواست ارسالی کاربرد دارد.
  • dynamicPriceToken : به وسیله این کلید توسعه دهنده می‌تواند برای هر بازیکن، قیمت یک محصول خاص را تغییر دهد. برای اطلاعات بیشتر به مستندات توسعه دهندگان مراجعه فرمایید.

‌‌

با استفاده از Async

var result = await payment.Purchase("PRODUCT_ID");

با استفاده از Callback

_ = payment.Purchase("PRODUCT_ID", Payment.Type.inApp, OnPuschaseStart, OnPuschaseComplete, "PAYLOAD");
void OnPuschaseStart(Result<PurchaseInfo> result) { ... }
void OnPuschaseComplete(Result<PurchaseInfo> result) { ... }


به کارگیری نتیجه:

Debug.Log($"{result.message}, {result.stackTrace}");
if (result.status == Status.Success)
{
    var purchase = result.data;
    Debug.Log(purchase.ToString());
}

۷. مصرف محصول

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


با استفاده از Async

var result = await payment.Consume("PURCHASE_TOKEN");

با استفاده از Callback

_ = payment.Consume(purchaseToken, OnConsumeComlete);
void OnConsumeComlete(Result<PurchaseInfo> result) { ... }

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

برای مثال در پرداخت با پولکی خواهید خواند که کتابخانه پولکی برای پروژه‌های یونیتی 2020 و بالاتر قابل اجرا است. به طور کلی هدف از پیاده‌سازی این کتابخانه، بهبود فرآیند پیاده‌سازی پرداخت درون برنامه ای بازار برای توسعه دهندگان بازار است. به جز پرداخت با پولکی می‌توانید با مراجعه به این لینک از جزییات مرتبط با پیاده‌سازی پرداخت یونیتی آگاه شوید. به طور خلاصه برای راه اندازی پرداخت درون برنامه‌ای در Unity فقط کافیست بسته مربوط به یونیتی را دانلود و وارد پروژه خود کنید.

برای جزییات بیشتر در رابطه با یونیتی برای پولکی و اطلاعات دیگر می‌توانید از طریق ثبت تیکت یا تماس با شماره تلفن ۰۲۱۹۱۰۰۹۷۹۸‌ سوالات خود را با همکاران ما در پشتیبانی بازار در میان بگذارید. برای جزئیات مرتبط با اطلاعات مورد نیاز برای انتشار برنامه در بازار نیز می‌توانید به راهنمای پیشخان و قدم‌به‌قدم تا انتشار برنامه در پیشخان بازار مراجعه کرده و سایر مستندات بخش راهنما را بخوانید.

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


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

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

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

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