Gérer le Retour du Navigateur Externe (callback_url)
Aperçu
Lorsqu'un flux de paiement nécessite que l'utilisateur complète une action dans un navigateur externe (par exemple, défi 3DS, redirection bancaire), il est essentiel d'utiliser le paramètre callback_url pour garantir que l'utilisateur revienne à votre application de manière fluide.
1. Définir le callback_url lors de la création de la session de paiement
Envoyez le paramètre callback_url lors de la création de la session de paiement :
{
"callback_url": "myapp://return"
}
ImportantSans
callback_urll'utilisateur risque de rester dans le navigateur sans pouvoir revenir à votre application.
2. Configurer votre application Android pour gérer le lien profond
Ajoutez un intent-filter à votre activité principale dans AndroidManifest.xml:
<activity android:name=".YourMainActivity">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="myapp"
android:host="return" />
</intent-filter>
</activity>- Le régime (
myapp) et le host (return) doivent correspondre à votrecallback_url
3. Gérer l'intention dans votre activité
Dans votre activité, gérez l'intention de retour :
intent.data?.let { uri ->
val url = uri.toString()
if (url.contains("myapp://return")) {
// Handle the return, e.g., show a message or navigate
Toast.makeText(this, "Returned from payment flow", Toast.LENGTH_SHORT).show()
}
}- Adaptez cette logique aux besoins de votre application
4. Exemple complet : intégration avec le SDK Yuno
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
startCheckout(
callbackPaymentState = {
Toast.makeText(this, it, Toast.LENGTH_SHORT).show()
}
)
if (intent?.data != null) {
intent.data?.let {
if (it.toString().contains(URI_INTENT_CONTINUE)) {
val sessionId = extractCheckoutSessionFromIntent(intent)
continuePayment(
showPaymentStatus = configuration.showStatusYuno,
checkoutSession = sessionId,
countryCode = configuration.country,
) { result ->
result?.let {
Toast.makeText(this, it, Toast.LENGTH_SHORT).show()
}
}
}
}
} else {
setContent {
YunoContent(configuration) {
initYuno()
}
}
}
}
private fun extractCheckoutSessionFromIntent(intent: Intent?): String? {
return intent?.data?.getQueryParameter("checkoutSession")
}Bonnes Pratiques
- Définissez et utilisez toujours le
callback_urldans vos flux de paiement - Configurez correctement le
intent-filterdans votre manifeste - Gérez l'intention de retour pour mettre à jour le statut du paiement ou naviguer l'utilisateur
- Testez le flux sur plusieurs appareils et navigateurs
Résumé
- Utilisez
callback_urlpour assurer le retour des utilisateurs à votre application - Configurez la gestion des liens profonds sur Android
- Gérez l'intention pour finaliser le flux de paiement
Mis à jour il y a 7 mois