رفتن به مطلب

آموزش استفاده از پولکی در جاوا


محمدرضا شاهپیری

ارسال‌های توصیه شده

سلام به همه برنامه نویسای عزیز. بعد مدتها یه آموزش بزاریم کیف کنیم:eynak:

همونطور که مطلع هستید بازار خیلی وقته درون پرداخت رو با پولکی انجام میده و این کتابخونه مخصوص کاتلین هست و به راحتی نمیتونید اونو مستقیم توی جاوا استفاده کنید. برا همین یه کلاس واسط که به اصطلاح از دیزاین پترن پ * ر * و * ک *س * ی استفاده شده برای دوستان آماده کردیم که راحت بتونن اونو توی جاوا استفاده کنن. دقت کنید که حتما باید کاتلین توی پروژه ست شده باشه. کلاس کاتلین زیر رو به پروژه اضافه کنید و اسمشو PoolakeyWrapper بزارید.

package com.example.myapplication

import android.content.Context
import androidx.activity.result.ActivityResultRegistry
import ir.cafebazaar.poolakey.Connection
import ir.cafebazaar.poolakey.Payment
import ir.cafebazaar.poolakey.config.PaymentConfiguration
import ir.cafebazaar.poolakey.config.SecurityCheck
import ir.cafebazaar.poolakey.entity.PurchaseInfo
import ir.cafebazaar.poolakey.request.PurchaseRequest

/**
 * Created by Mohamadreza Shahpiri on 6/18/2023.
 * Answercenter.ir
 ***************************************************
 */
class PoolakeyWrapper(
    publicKey: String,
    context: Context,
) {
    private val securityCheck = SecurityCheck.Enable(rsaPublicKey = publicKey)
    private val paymentConfig = PaymentConfiguration(localSecurityCheck = securityCheck)
    private val payment = Payment(context = context.applicationContext, config = paymentConfig)
    private var connection:Connection?=null
    fun connect(connectionCallback: ConnectionCallback){
        connection=payment.connect {
            connectionSucceed{
                connectionCallback.connectionSucceed()
            }
            connectionFailed {
                connectionCallback.connectionFailed(it)
            }
            disconnected {
                connectionCallback.disconnected()
            }
        }
    }
    fun purchaseProduct(registry: ActivityResultRegistry,request: PurchaseRequest,purchaseCallback: PurchaseCallback){
        payment.purchaseProduct(registry,request){
            purchaseFlowBegan {
                purchaseCallback.purchaseFlowBegan()
            }
            failedToBeginFlow {
               purchaseCallback.failedToBeginFlow(it)
            }
            purchaseSucceed {
               purchaseCallback.purchaseSucceed(it)
            }
            purchaseCanceled {
                purchaseCallback.purchaseCanceled()
            }
            purchaseFailed {
                purchaseCallback.purchaseFailed(it)
            }
        }
    }
    fun subscribeProduct(registry: ActivityResultRegistry,request: PurchaseRequest,purchaseCallback: PurchaseCallback){
        payment.subscribeProduct(registry,request){
            purchaseFlowBegan {
                purchaseCallback.purchaseFlowBegan()
            }
            failedToBeginFlow {
                purchaseCallback.failedToBeginFlow(it)
            }
            purchaseSucceed {
                purchaseCallback.purchaseSucceed(it)
            }
            purchaseCanceled {
                purchaseCallback.purchaseCanceled()
            }
            purchaseFailed {
                purchaseCallback.purchaseFailed(it)
            }
        }
    }
    fun consumeProduct(purchaseToken: String,consumeCallback: ConsumeCallback){
        payment.consumeProduct(purchaseToken){
            consumeSucceed {
               consumeCallback.consumeSucceed()
            }
            consumeFailed {
                consumeCallback.consumeFailed(it)
            }
        }
    }
    fun getPurchasedProducts(queryCallback: QueryCallback){
        payment.getPurchasedProducts {
            querySucceed {
               queryCallback.querySucceed(it)
            }
            queryFailed {
                queryCallback.queryFailed(it)
            }
        }
    }
    fun getSubscribedProducts(queryCallback: QueryCallback){
        payment.getSubscribedProducts {
            querySucceed {
                queryCallback.querySucceed(it)
            }
            queryFailed {
                queryCallback.queryFailed(it)
            }
        }
    }
    fun disconnect(){
        connection?.disconnect()
    }
    interface ConnectionCallback{
        fun connectionSucceed()
        fun connectionFailed(throwable:Throwable)
        fun disconnected()
    }
    interface PurchaseCallback{
        fun purchaseFlowBegan()
        fun failedToBeginFlow(throwable:Throwable)
        fun purchaseSucceed(info: PurchaseInfo)
        fun purchaseCanceled()
        fun purchaseFailed(throwable:Throwable)
    }
    interface ConsumeCallback{
        fun consumeSucceed()
        fun consumeFailed(throwable:Throwable)
    }
    interface QueryCallback{
        fun querySucceed(items:List<PurchaseInfo>)
        fun queryFailed(throwable:Throwable)
    }
}

 

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

مثلا برای اینشیالایز.

       PoolakeyWrapper poolakeyWrapper=new PoolakeyWrapper("publicKey",this);
        poolakeyWrapper.connect(new PoolakeyWrapper.ConnectionCallback() {
            @Override
            public void connectionSucceed() {

            }
            @Override
            public void connectionFailed(@NonNull Throwable throwable) {

            }
            @Override
            public void disconnected() {

            }
        });

 

و برای خرید

       PurchaseRequest purchaseRequest=new PurchaseRequest(
                      "productId","payload","dynamicPriceToken"
              );
        poolakeyWrapper.purchaseProduct(getActivityResultRegistry(), purchaseRequest, new PoolakeyWrapper.PurchaseCallback() {
            @Override
            public void purchaseFlowBegan() {

            }

            @Override
            public void failedToBeginFlow(@NonNull Throwable throwable) {

            }

            @Override
            public void purchaseSucceed(@NonNull PurchaseInfo info) {

            }

            @Override
            public void purchaseCanceled() {

            }

            @Override
            public void purchaseFailed(@NonNull Throwable throwable) {

            }
        });

 

بقیه متدها رو هم به راحتی میتونید استفاده کنید.

مانا باشید :answercenter:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 2 ماه بعد...
  • 7 ماه بعد...

سلام . موقع کامپایل به این کلاس ایراد میگیره 

 

PoolakeyWrapper poolakeyWrapper = new PoolakeyWrapper("rsa_public_key",this);

E:\android pro\ProAsli\poolke3\app\src\main\java\com\example\poolakey\MainActivity.java:20: error: cannot find symbol
    PoolakeyWrapper poolakeyWrapper;
    ^
  symbol:   class PoolakeyWrapper
  location: class MainActivity

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۳/۱/۳۱ در ۲۲:۲۸، berayan گفته است:

سلام . موقع کامپایل به این کلاس ایراد میگیره 

سلام و درود. شما باید کلاس PoolakeyWrapper رو ایجاد کنید مطابق راهنماییهای پست اول. اگه کلاس رو ایجاد کردید و هنوز خطا میده شاید از نسخه کاتلینتون باشه. کاتلین رو به نسخه آخر بروز کنید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

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

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
  • اضافه کردن...