кстати, я не разработчик Android
это мой класс Bazar:
package org.godotengine.plugin.android.template
import android.app.Activity
import android.os.Bundle
import android.os.PersistableBundle
import android.util.Log
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
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.request.PurchaseRequest
class Bazar() : AppCompatActivity() {
private val paymentConfiguration = PaymentConfiguration(
localSecurityCheck = SecurityCheck.Enable(rsaPublicKey = "KEY")
)
private val payment by lazy(LazyThreadSafetyMode.NONE) {
Payment(context = this, config = paymentConfiguration)
}
private lateinit var paymentConnection: Connection
// override fun onCreate(savedInstanceState: Bundle?) {
// super.onCreate(savedInstanceState)
// connect()
// }
fun connect() {
paymentConnection = payment.connect {
connectionSucceed {
// Toast.makeText(activity, "Connected", Toast.LENGTH_LONG).show()
Log.i("godot", "connection succeed!")
}
connectionFailed {
// Toast.makeText(activity, "Connection failed", Toast.LENGTH_LONG).show()
Log.i("godot", "connection failed!")
}
disconnected {
// Toast.makeText(activity, "Disconnected", Toast.LENGTH_LONG).show()
Log.i("godot", "disconnected")
}
}
}
private val purchaseRequest = PurchaseRequest(
productId = "PRODUCT_ID",
payload = "PAYLOAD"
)
fun startPayment() {
Log.i("godot", "payment started")
payment.purchaseProduct(registry = activityResultRegistry, request = purchaseRequest) {
purchaseFlowBegan {
// Toast.makeText(activity, "Purchase flow began", Toast.LENGTH_LONG).show()
Log.i("godot", "purchase flow began")
}
failedToBeginFlow { throwable ->
// Toast.makeText(
// activity,
// "Failed to begin purchase flow: ${throwable.message}",
// Toast.LENGTH_LONG
// ).show()
Log.e("godot", "startPayment: ${throwable.message}")
}
purchaseSucceed { purchaseEntity ->
// Toast.makeText(
// activity,
// "Purchase succeeded: ${purchaseEntity.purchaseToken}",
// Toast.LENGTH_LONG
// ).show()
Log.i("godot", "purchase succeeded")
}
purchaseCanceled {
// Toast.makeText(activity, "Purchase canceled", Toast.LENGTH_LONG).show()
}
purchaseFailed { throwable ->
// Toast.makeText(activity, "Purchase failed: ${throwable.message}", Toast.LENGTH_LONG)
// .show()
Log.e("godot", "startPayment(purchaseFailed): ${throwable.message}")
}
}
}
}
а это мой класс плагина:
package org.godotengine.plugin.android.template
import android.util.Log
import android.widget.Toast
import androidx.activity.result.ActivityResultRegistryOwner
import org.godotengine.godot.Godot
import org.godotengine.godot.plugin.GodotPlugin
import org.godotengine.godot.plugin.UsedByGodot
class GodotAndroidPlugin(godot: Godot) : GodotPlugin(godot){
private val context = godot.getAndroidContext()
private var bazar: Bazar? = null
override fun getPluginName() = BuildConfig.GODOT_PLUGIN_NAME
@UsedByGodot
fun initiatePayment() {
runOnUiThread {
bazar = Bazar().apply { connect() }
}
}
@UsedByGodot
fun helloWorld() {
runOnUiThread {
Toast.makeText(activity, "Hello World", Toast.LENGTH_LONG).show()
Log.v(pluginName, "Hello World")
}
}
override fun onMainDestroy() {
// bazar?.disconnectPayment()
super.onMainDestroy()
}
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... dot-androi