getAccessToken method

  1. @override
Future<AccessTokenResult> getAccessToken(
  1. String clientId,
  2. String clientSecret
)
override

Implementation

@override
Future<AccessTokenResult> getAccessToken(String clientId, String clientSecret)async {

  final String url = "$BASE_URL/oauth/token";
  final http.Response response = await http.post(
      Uri.parse(url),
      body: <String, String>{
        "grant_type": "client_credentials",
        "client_id": clientId,
        "client_secret":clientSecret
      },
      headers: {
        'Accept':'application/json',
        'Content-Type': 'application/x-www-form-urlencoded'
      }
  );
  if(response.statusCode == 200){
    final Map<String, dynamic> json = jsonDecode(response.body);
    final AccessTokenResult? accessTokenResult = AccessTokenResult.fromJson(json);
    if(accessTokenResult != null){
      return accessTokenResult;
    }else{
      throw new AdjeminPayAuthException(json['message'], response.statusCode);
    }

  }else{
    var message = "";
    if(response.headers['content-type'] == 'application/json'){
      final Map<String, dynamic> json = jsonDecode(response.body);

      if(json.containsKey('message')){
        message = json['message'] as String;

      }
    }else{
      message  = "Client authentication failed";
    }
    throw new AdjeminPayAuthException(message, response.statusCode);
  }


}