#!/usr/bin/env bash
set -eu
# Noryk Gateway: execute no seu backend. Nunca ative "set -x" com credenciais.
# Persista esta chave junto do pedido ANTES da primeira tentativa.
: "${NORYK_API_KEY:?Defina NORYK_API_KEY no ambiente protegido do servidor.}"
: "${IDEMPOTENCY_KEY:?Defina a mesma IDEMPOTENCY_KEY persistida para este pedido.}"
BASE_URL="${NORYK_BASE_URL:-https://gateway.noryk.finance}"
if [[ ! "$IDEMPOTENCY_KEY" =~ ^[a-zA-Z0-9_.:-]{8,128}$ ]]; then
  printf '%s\n' 'IDEMPOTENCY_KEY deve ter de 8 a 128 caracteres permitidos.' >&2
  exit 1
fi
if [[ "$NORYK_API_KEY" =~ [[:space:][:cntrl:]] ]]; then
  printf '%s\n' 'NORYK_API_KEY não pode conter espaços ou caracteres de controle.' >&2
  exit 1
fi
https_origin='^https://([A-Za-z0-9.-]+|\[[0-9a-fA-F:]+\])(:[0-9]{1,5})?/?$'
local_origin='^http://(localhost|127\.0\.0\.1|\[::1\])(:[0-9]{1,5})?/?$'
if [[ ! "$BASE_URL" =~ $https_origin && ! "$BASE_URL" =~ $local_origin ]]; then
  printf '%s\n' 'Use uma origem HTTPS sem caminho/credenciais; HTTP somente no desenvolvimento local.' >&2
  exit 1
fi

# Resultado desconhecido não autoriza um novo pedido ou uma nova chave.
# Sem --retry e sem -L: não reenviar POST nem encaminhar segredo a redirecionamentos.
curl --silent --show-error --fail-with-body --connect-timeout 5 --max-time 15 \
  --request POST "${BASE_URL%/}/v1/charges" \
  --header "Authorization: Bearer ${NORYK_API_KEY}" \
  --header 'Content-Type: application/json' \
  --header "Idempotency-Key: ${IDEMPOTENCY_KEY}" \
  --data '{"amountCents":10000,"description":"Pedido 000001"}'

# Antes de marcar o pedido como confirmado, valide o JSON: objeto com id textual
# não vazio, status textual e amountCents=10000. Um 2xx incompleto é desconhecido.
# Guarde o id retornado após essa validação. qrCode contém o Pix copia e cola.
# Em sandbox o código é simulado e não tem valor financeiro.
