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 :

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 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
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>
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
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);
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.

Merci par avance de votre aide.