PayPal
Purpose: PayPal payments
Add PayPal Widget to Layout
<io.hyperswitch.view.BasePaymentWidget
android:id="@+id/payPalButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:paymentMethod="paypal" />
Initialize PayPal Launcher
private lateinit var payPalButton: BasePaymentWidget
private lateinit var payPalLauncherInstance: UnifiedPaymentLauncher
private fun setupPayPalLauncher() {
payPalButton = findViewById(R.id.payPalButton)
payPalButton.isEnabled = false
payPalLauncherInstance = UnifiedPaymentLauncher.createPayPalLauncher(
activity = this,
clientSecret = paymentIntentClientSecret,
readyCallback = ::onPayPalReady,
resultCallback = ::onPayPalResult
)
payPalButton.setOnClickListener {
if (::payPalLauncherInstance.isInitialized) {
payPalLauncherInstance.presentForPayment(paymentIntentClientSecret)
} else {
Toast.makeText(this, "PayPal Launcher not initialized", Toast.LENGTH_SHORT).show()
}
}
}
Handle PayPal Callbacks
private fun onPayPalReady(isReady: Boolean) {
payPalButton.isEnabled = isReady
}
private fun onPayPalResult(result: PayPalPaymentMethodLauncher.Result) {
when (result) {
is PayPalPaymentMethodLauncher.Result.Completed -> {
val paymentMethodId = result.paymentMethod.id
Toast.makeText(this, "PayPal payment successful: $paymentMethodId", Toast.LENGTH_LONG).show()
}
is PayPalPaymentMethodLauncher.Result.Canceled -> {
Toast.makeText(this, "PayPal payment canceled: ${result.data}", Toast.LENGTH_LONG).show()
}
is PayPalPaymentMethodLauncher.Result.Failed -> {
Toast.makeText(this, "PayPal payment failed: ${result.error.message}", Toast.LENGTH_LONG).show()
}
}
}
Last updated
Was this helpful?