Je suis en train d'essayer de créer une application qui intègre Sumup et notamment la connexion avec un terminal de paiement.
J'utilise le plugin flutter sumup (https://pub.dev/packages/sumup) que j'ai modifié notamment au niveau du login, pour essayer d'intégrer une connexion transparente pour l'utilisateur.
En utilisant cette documentation -> https://developer.sumup.com/docs/authorization/ , j'ai compris que l'utilisateur (qui est le vendeur) devrait se loguer une fois au début, puis je pourrais utiliser le refresh_token pour qu'il se logue ensuite sans rentrer à nouveau ses identifiants.
Je n'ai jamais mis en place de système d'authentification dans mes applis flutter (qui sont très basiques), et donc je n'arrive pas à comprendre le mécanisme, voici ce que je fais :
Je m'attends à avoir un écran de connexion normalement, pour que le vendeur se connecte et que je reçoive dans data mes code d'authentification. Cela me print ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 http.Response response = await http.get(Uri.parse( "https://api.sumup.com/authorize?response_type=code&client_id=" + client_id + "&redirect_uri=myredirecturi")); if (response.statusCode == 200) { String data = response.body; print(data); }
Je comprends que je dois afficher cette page d'authentification, j'ai donc essayer de passer par un plugin, mais cela m'amène sur la page api.sumup.com/authorize qui reste blanche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 I/flutter ( 3950): <!doctype html> I/flutter ( 3950): <html> I/flutter ( 3950): <head> I/flutter ( 3950): <title>SumUp OAuth</title> I/flutter ( 3950): <meta name="viewport" content="width=device-width, maximum-scale=1"> I/flutter ( 3950): <link rel="icon" href="/favicon.png"> I/flutter ( 3950): </head> I/flutter ( 3950): <body> I/flutter ( 3950): I/flutter ( 3950): <oauth></oauth> I/flutter ( 3950): I/flutter ( 3950): I/flutter ( 3950): <script src="/gateway/oauth.js"></script> I/flutter ( 3950): </body> I/flutter ( 3950): </html>
Quelque chose m'échappe, j'ai fais des recherches et suivi des tutos (notamment celui de Auth0) mais je n'arrive pas à comprendre comment l'appliquer pour mon cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 final callbackUrlScheme = 'myredirecturl'; final url = Uri.https('api.sumup.com', '/authorize', { 'response_type': 'code', 'client_id': client_id, 'redirect_uri': '$callbackUrlScheme:/', }); final result = await FlutterWebAuth.authenticate( url: url.toString(), callbackUrlScheme: callbackUrlScheme); final code = Uri.parse(result).queryParameters['code']; final response = await http.post(Uri.parse('https://api.sumup.com/token'), body: { 'client_id': client_id, 'redirect_uri': '$callbackUrlScheme:/', 'grant_type': 'authorization_code', 'code': code, }); final accessToken = jsonDecode(response.body)['access_token'] as String; print(accessToken);
Merci par avance de votre aide.
Partager