Skip to main content

Installation

Add the Cherp SDK to your build.gradle.kts:
dependencies {
  implementation("dev.cherp:sdk-android:1.0.0")
}

Setup

Initialize the SDK at app startup:
import dev.cherp.sdk.PaymentSDK

val sdk = PaymentSDK.init(
  apiKey = "pk_live_...",
  debug = BuildConfig.DEBUG
)

Wallet interface

Implement the PaymentWallet interface for your wallet provider:
class MyWallet : PaymentWallet {
  override val address: String = walletAddress
  override val chain: CAIP2ChainId = CAIP2ChainId.SOLANA

  override suspend fun signTransaction(tx: UnsignedTransaction): SignedTransaction {
    // Sign with your wallet provider
  }
}

Requesting a payment

// 1. Create an intent
val intent = sdk.createIntent(
  chain = "solana:5eykt4UsFv8P8NJdTREpY1vzqKq2Kvdp",
  token = "USDC",
  amount = "10.50",
  requestor = wallet.address,
  idempotencyKey = "order_982734"
)

// 2. Start audio broadcast
val broadcast = sdk.broadcast(intent)

// 3. Watch for fulfillment
sdk.onStatusChange(intent) { status, context ->
  if (status == IntentState.CONFIRMED) {
    broadcast.stop()
    // Payment complete
  }
}

Fulfilling a payment

// 1. Listen for audio signal
val received = sdk.listen()

// 2. Handle with default UI
sdk.onIntentReceived(received.intentId, wallet)

// Or headless mode for custom UI
sdk.onIntentReceived(received.intentId, wallet,
  headless = true,
  onDetails = { intent, summary ->
    // Render payment details
  },
  onComplete = { intent ->
    // Payment confirmed
  },
  onError = { error ->
    // Handle error
  }
)