Pix2DePix

cobranca.sh

#!/usr/bin/env bash
# O ciclo inteiro em shell, no ambiente de teste.
#
#   export P2D_KEY='p2d_test_...'
#   ./cobranca.sh
#
# Em produção, troque a chave por uma p2d_live_ e pule o passo 3: quem paga o
# Pix é o seu cliente.
set -euo pipefail

: "${P2D_KEY:?defina P2D_KEY com sua chave de API}"
P2D_URL="${P2D_URL:-https://api.pix2depix.com}"

auth=(-H "authorization: Bearer $P2D_KEY" -H 'content-type: application/json')

echo "── 1. Quem sou eu e qual taxa vale"
curl -sS "$P2D_URL/v1/account" "${auth[@]}"
echo

echo "── 2. Criar a cobrança"
# O externalId é o número do pedido no seu sistema. Repetir a requisição com o
# mesmo valor devolve a mesma cobrança em vez de criar uma segunda.
pedido="pedido-$(date +%s)"
cobranca=$(curl -sS "$P2D_URL/v1/charges" "${auth[@]}" -d "{
  \"amountInCents\": 25000,
  \"payerTaxNumber\": \"529.982.247-25\",
  \"payerName\": \"Maria Silva\",
  \"externalId\": \"$pedido\",
  \"metadata\": { \"origem\": \"exemplo\" }
}")
echo "$cobranca"

id=$(printf '%s' "$cobranca" | sed -n 's/.*"id":"\([0-9a-f]\{24\}\)".*/\1/p')
echo "cobrança: $id"
echo

echo "── 2b. A mesma requisição de novo: não duplica"
codigo=$(curl -sS -o /dev/null -w '%{http_code}' "$P2D_URL/v1/charges" "${auth[@]}" -d "{
  \"amountInCents\": 25000,
  \"payerTaxNumber\": \"529.982.247-25\",
  \"payerName\": \"Maria Silva\",
  \"externalId\": \"$pedido\",
  \"metadata\": { \"origem\": \"exemplo\" }
}")
echo "HTTP $codigo (200 = já existia, 201 = criou agora)"
echo

echo "── 3. Simular o pagamento (só no sandbox)"
curl -sS "$P2D_URL/v1/test/charges/$id/advance" "${auth[@]}" \
  -d '{"status":"paid_pending_settlement"}'
echo

echo "── 4. Consultar: é aqui que você confirma antes de liberar"
curl -sS "$P2D_URL/v1/charges/$id" "${auth[@]}"
echo

echo "── 5. Simular a liquidação (só no sandbox)"
curl -sS "$P2D_URL/v1/test/charges/$id/advance" "${auth[@]}" -d '{"status":"settled"}'
echo
echo "status settled = DePix na carteira. Agora sim, libere o produto."