Examples
This guide provides various implementation examples of the Azakaw KYC SDK.
Basic Implementation
Simple implementation with minimal setup:
class MainActivity : AppCompatActivity() {
private val client = OkHttpClient()
private lateinit var startButton: Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
startButton = findViewById<Button>(R.id.startButton)
startButton.setOnClickListener { startKyc() }
}
private fun startKyc() {
// Example: using a hardcoded session for demonstration
val sessionId = "your-session-id"
AzakawKyc.start(
context = this,
config = AzakawKycConfig(
sessionId = sessionId,
environment = Environment.SANDBOX
),
onCancel = {
Toast.makeText(this, "KYC Cancelled", Toast.LENGTH_SHORT).show()
}
)
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
AzakawKyc.handlePermissionResult(requestCode, permissions, grantResults)
}
}
Complete Integration
Full implementation including session ID generation and error handling:
class MainActivity : AppCompatActivity() {
private val client = OkHttpClient()
private lateinit var startButton: Button
private lateinit var buttonProgress: ProgressBar
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
startButton = findViewById(R.id.startButton)
buttonProgress = findViewById(R.id.buttonProgress)
startButton.setOnClickListener {
setLoadingState(true)
getSessionId()
}
}
private fun setLoadingState(isLoading: Boolean) {
runOnUiThread {
startButton.isEnabled = !isLoading
startButton.text = if (isLoading) "" else "Start"
buttonProgress.visibility = if (isLoading) View.VISIBLE else View.GONE
}
}
private fun getSessionId() {
val jsonBody = JSONObject().apply {
put("appId", "your-app-id")
put("appSecret", "your-app-secret")
put("tenantId", "your-tenant-id")
// Add other required fields
}
val mediaType = "application/json; charset=utf-8".toMediaType()
val requestBody = jsonBody.toString().toRequestBody(mediaType)
val request = Request.Builder()
.url("your-api-endpoint")
.post(requestBody)
.addHeader("Content-Type", "application/json")
.build()
client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
runOnUiThread {
setLoadingState(false)
Toast.makeText(this@MainActivity, "Error: ${e.message}", Toast.LENGTH_LONG).show()
}
}
override fun onResponse(call: Call, response: Response) {
try {
val responseStr = response.body?.string()
if (response.isSuccessful && responseStr != null) {
val json = JSONObject(responseStr)
val sessionId = json.getJSONObject("result").getString("sessionId")
runOnUiThread {
setLoadingState(false)
startKycProcess(sessionId)
}
} else {
runOnUiThread {
setLoadingState(false)
Toast.makeText(this@MainActivity, "Error: ${response.code}", Toast.LENGTH_LONG).show()
}
}
} catch (e: Exception) {
runOnUiThread {
setLoadingState(false)
Toast.makeText(this@MainActivity, "Error: ${e.message}", Toast.LENGTH_LONG).show()
}
}
}
})
}
private fun startKycProcess(sessionId: String) {
AzakawKyc.start(
context = this,
config = AzakawKycConfig(
sessionId = sessionId,
environment = Environment.SANDBOX,
isFullscreen = true
),
onCancel = {
handleKycCancel()
}
)
}
private fun handleKycComplete() {
// Handle successful KYC completion
Toast.makeText(this, "KYC Completed Successfully", Toast.LENGTH_SHORT).show()
// Add your success logic here
}
private fun handleKycCancel() {
// Handle KYC cancellation
Toast.makeText(this, "KYC Process Cancelled", Toast.LENGTH_SHORT).show()
// Add your cancellation logic here
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
AzakawKyc.handlePermissionResult(requestCode, permissions, grantResults)
}
}
Layout Example
Example layout file (activity_main.xml
):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp">
<Button
android:id="@+id/startButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Start KYC"/>
<ProgressBar
android:id="@+id/buttonProgress"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="center"
android:visibility="gone"/>
</FrameLayout>
</LinearLayout>
These examples demonstrate:
- Basic SDK initialization
- Session ID generation
- Loading state management
- Error handling
- UI implementation
- Permission handling
For more specific use cases or customization options, please contact our support team.