checkPayment method

Future<PaymentCheckResponse> checkPayment(
  1. PaymentCheckRequest paymentCheck
)

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,
    );
  }
}