checkPayment method
Verifica o status de um pagamento.
Consulta a API da InfinitePay para verificar se um pagamento foi
realizado com sucesso. Use este método após o cliente ser redirecionado
de volta ao seu site pela redirectUrl.
Endpoint: POST https://api.infinitepay.io/invoices/public/checkout/payment_check
Os parâmetros da requisição (paymentCheck) devem ser obtidos da URL
de redirecionamento que contém: order_nsu, transaction_nsu, slug, etc.
Throws Exception se a requisição falhar ou retornar um status diferente de 200.
Dica: Guarde o transaction_nsu para futuras consultas.
Exemplo:
final request = PaymentCheckRequest(
handle: 'sua_infinite_tag',
orderNSU: '123456',
transactionNSU: 'UUID-recebido-na-redirect-url',
slug: 'codigo-da-fatura',
);
final response = await service.checkPayment(request);
if (response.paid) {
// Pagamento confirmado!
}
Implementation
Future<PaymentCheckResponse> checkPayment(
PaymentCheckRequest paymentCheck,
) async {
final response = await http.post(
Uri.parse(paymentCheckUrl),
body: paymentCheck.toMap(),
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
},
);
_log.info(
'[CheckoutService] checkPayment response: ${response.statusCode} - ${response.body}',
);
if (response.statusCode == 200) {
final responseBody = jsonDecode(response.body) as Map<String, dynamic>;
return PaymentCheckResponse.fromMap(responseBody);
} else {
throw PayException(
'Failed to check payment',
response.statusCode,
response.body,
);
}
}