Pular para o conteúdo principal

Quickstart em 5 minutos

Este caminho prova três coisas rapidamente: seu backend sabe enviar sk_test_... com segurança, o host de sandbox responde e o webhook consegue fechar o ciclo.

1. Crie a primeira charge autenticada no backend

curl -X POST https://api.sandbox.mupag.com.br/v1/charges \
-H "Authorization: Bearer sk_test_your_server_key" \
-H "Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \
-H "Content-Type: application/json" \
-d '{
"amount_cents": 1290,
"payment_method": "pix",
"customer": {
"name": "Ana Silva",
"email": "ana@example.com",
"tax_id": "12345678909"
}
}'

2. Faça o teste sem segredo no navegador

MétodoPOST
Hostapi.sandbox.mupag.com.br
Credenciaisomit

Corpo da requisição

{
  "amount_cents": 1290,
  "payment_method": "pix"
}
Abrir início rápido completo
Pronto para uma chamada segura de sandbox no navegador

O navegador nunca solicita uma chave do lojista aqui. Use os guias de servidor para chamadas autenticadas.

3. Repita o mesmo fluxo na linguagem do seu backend

Node.js
const response = await fetch('https://api.sandbox.mupag.com.br/v1/charges', {
method: 'POST',
headers: {
Authorization: 'Bearer sk_test_your_server_key',
'Idempotency-Key': crypto.randomUUID(),
'Content-Type': 'application/json',
},
body: JSON.stringify({
amount_cents: 1290,
payment_method: 'pix',
customer: {name: 'Ana Silva', email: 'ana@example.com', tax_id: '12345678909'},
}),
});
Java
var request = HttpRequest.newBuilder(URI.create("https://api.sandbox.mupag.com.br/v1/charges"))
.header("Authorization", "Bearer sk_test_your_server_key")
.header("Idempotency-Key", UUID.randomUUID().toString())
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString("""
{"amount_cents":1290,"payment_method":"pix","customer":{"name":"Ana Silva","email":"ana@example.com","tax_id":"12345678909"}}
"""))
.build();
Python
response = requests.post(
"https://api.sandbox.mupag.com.br/v1/charges",
headers={
"Authorization": "Bearer sk_test_your_server_key",
"Idempotency-Key": str(uuid.uuid4()),
"Content-Type": "application/json",
},
json={
"amount_cents": 1290,
"payment_method": "pix",
"customer": {"name": "Ana Silva", "email": "ana@example.com", "tax_id": "12345678909"},
},
)
PHP
$response = $client->request('POST', 'https://api.sandbox.mupag.com.br/v1/charges', [
'headers' => [
'Authorization' => 'Bearer sk_test_your_server_key',
'Idempotency-Key' => Ramsey\Uuid\Uuid::uuid4()->toString(),
'Content-Type' => 'application/json',
],
'json' => [
'amount_cents' => 1290,
'payment_method' => 'pix',
'customer' => ['name' => 'Ana Silva', 'email' => 'ana@example.com', 'tax_id' => '12345678909'],
],
]);
Go
payload := strings.NewReader(`{"amount_cents":1290,"payment_method":"pix","customer":{"name":"Ana Silva","email":"ana@example.com","tax_id":"12345678909"}}`)
req, _ := http.NewRequest(http.MethodPost, "https://api.sandbox.mupag.com.br/v1/charges", payload)
req.Header.Set("Authorization", "Bearer sk_test_your_server_key")
req.Header.Set("Idempotency-Key", uuid.NewString())
req.Header.Set("Content-Type", "application/json")

4. Feche o ciclo

  • Aponte seu recebedor para os eventos descritos em Webhooks.
  • Confirme no dashboard sandbox que a charge e o customer chegaram com os mesmos IDs do seu sistema.
  • Guarde charge_id, request_id e sua chave idempotente nos logs da aplicação.

Esta página liberou seu próximo passo?

O feedback permanece no fluxo da documentação e nunca deve incluir dados de clientes ou cartões.