fetchQrCodeDetails static method
Implementation
static Future<ClientResponse<QrResponseData>> fetchQrCodeDetails({
required String publicKey,
required String processId,
required String assetId,
required String networkId,
}) async {
try {
final response = await http.post(
Uri.parse('$apiURL/payment-button/process/confirm'),
headers: getHeaders(publicKey),
body: jsonEncode({
'processId': processId,
'assetId': assetId,
'networkId': networkId,
}),
);
final data = jsonDecode(response.body);
if (data['result'] == null) {
throw ClientError(
code: ClientCode.paymentProcessNotAvailable,
message: I18n.t.errors.paymentProcessNotAvailable,
);
}
final Map<String, dynamic> result =
Map<String, dynamic>.from(data['result']);
final wallet = result['wallet'];
final networkName = result['network'];
final String address = networkName == "apolopay"
? "$appURL/payment-process/$processId"
: wallet;
return ClientResponse.fromJson(
data,
result: (val) {
final Map<String, dynamic> map = Map<String, dynamic>.from(val);
return QrResponseData.fromJson({
...map,
'address': address,
'qrCodeUrl':
'https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=$address&ecc=H',
'paymentUrl': address.startsWith('http') ? address : null,
});
},
);
} catch (error) {
throw ClientError.fromError(
error,
code: ClientCode.qrFetchError,
message: I18n.t.errors.qrFetchError,
);
}
}