getPaymentStatus method
Implementation
@override
Future<TransactionStatus> getPaymentStatus(
String clientId,
String clientSecret,
String transactionReference)async {
final AccessTokenResult accessTokenResult = await this.getAccessToken(clientId, clientSecret);
if(accessTokenResult == null){
final message = 'The requested service needs credentials, but the ones provided were invalid.';
throw new AdjeminPayAuthException(message,401);
}
final String url = "$API_URL/transactions/$transactionReference";
final http.Response response = await http.get(
Uri.parse(url),
headers: {
'Authorization' : 'Bearer ${accessTokenResult.accessToken}',
'Accept':'application/json',
'Content-Type': 'application/x-www-form-urlencoded'
}
);
if(response.statusCode == 200){
final Map<String, dynamic> json = jsonDecode(response.body);
final TransactionStatus result = TransactionStatus.fromJson(json);
return result;
}else{
var message = StatusCode.messages[StatusCode.OPERATION_ERROR];
var code = StatusCode.codes[StatusCode.OPERATION_ERROR];
var status = StatusCode.OPERATION_ERROR;
if(response.headers['content-type'] == 'application/json'){
final Map json = jsonDecode(response.body);
if(json.containsKey('message')){
message = json['message'] as String;
}
if(json.containsKey('code')){
code = json['code'] as int;
}
if(json.containsKey('status')){
status = json['status'] as String;
}
}else{
message = "Payment has failed";
}
throw new AdjeminPayException(message, response.statusCode, code,status);
}
}