سلام به همه برنامه نویسای عزیز. بعد مدتها یه آموزش بزاریم کیف کنیم
همونطور که مطلع هستید بازار خیلی وقته درون پرداخت رو با پولکی انجام میده و این کتابخونه مخصوص کاتلین هست و به راحتی نمیتونید اونو مستقیم توی جاوا استفاده کنید. برا همین یه کلاس واسط که به اصطلاح از دیزاین پترن پ * ر * و * ک *س * ی استفاده شده برای دوستان آماده کردیم که راحت بتونن اونو توی جاوا استفاده کنن. دقت کنید که حتما باید کاتلین توی پروژه ست شده باشه. کلاس کاتلین زیر رو به پروژه اضافه کنید و اسمشو 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) {
}
});
بقیه متدها رو هم به راحتی میتونید استفاده کنید.
مانا باشید