Visão geral
Este gateway expõe endpoints para criar cobranças PIX (cash-in), solicitar saques (cash-out) e receber confirmações via webhooks. No Admin, você define qual adquirente usar por operação (WishPag / Versell / Auto).
Quickstart
- Configure as credenciais no Admin (ou no
.env). - Defina
CASHIN_PROVIDEReCASHOUT_PROVIDER. - Teste um depósito (cash-in) e valide o retorno do QR.
- Configure webhooks no painel da adquirente.
Exemplo de .env:
WISHPAG_SECRET_KEY=SEU_SECRET
WISHPAG_COMPANY_ID=SUA_EMPRESA
VERSELL_VSPI=SEU_VSPI
VERSELL_VSPS=SEU_VSPS
# auto | wishpag | versell
CASHIN_PROVIDER=wishpag
CASHOUT_PROVIDER=wishpag
Endpoints
Criar cobrança PIX (cash-in)
POST /libs/funcoes/gerar_pix.php
Body sugerido:
{
"valor": 100.00,
"user_id": 1,
"descricao": "Pedido #123",
"local_id": "pedido_123"
}
Solicitar saque PIX (cash-out)
POST /libs/funcoes/gerar_saque.php
Body sugerido:
{
"valor": 50.00,
"pix": "11999999999",
"tipo": "telefone",
"local_id": "saque_456"
}
Dica: sempre envie um local_id único por operação. Ele facilita conciliação e atualização de status via webhook.
WishPag
Use WishPag quando quiser padronizar com Idempotency-Key e conciliação via local_id. Para webhook:
http://pagpix.site/libs/wishpag/webhook.php
Versell
Versell retorna o QR via base64 + código de pagamento. Configure o webhook para atualizações:
http://pagpix.site/libs/versell/webhook.php
Webhooks
Ao receber uma confirmação, o sistema tenta localizar a transação por local_id e/ou external_id e atualiza o status
em transactions.status.
Rotas:
POST /libs/wishpag/webhook.php
POST /libs/versell/webhook.php
Exemplos • PHP
cURL (cash-in):
curl -X POST http://pagpix.site/libs/funcoes/gerar_pix.php \
-H "Content-Type: application/json" \
-d '{"valor":100,"user_id":1,"descricao":"Pedido #123","local_id":"pedido_123"}'
PHP (file_get_contents):
<?php
$url = "http://pagpix.site/libs/funcoes/gerar_pix.php";
$payload = [
"valor" => 100.00,
"user_id" => 1,
"descricao" => "Pedido #123",
"local_id" => "pedido_123",
];
$ctx = stream_context_create([
"http" => [
"method" => "POST",
"header" => "Content-Type: application/json\r\n",
"content" => json_encode($payload),
"timeout" => 20,
]
]);
$res = file_get_contents($url, false, $ctx);
echo $res;
Exemplos • Node.js
Fetch:
const res = await fetch('http://pagpix.site/libs/funcoes/gerar_pix.php', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ valor: 100, user_id: 1, descricao: 'Pedido #123', local_id: 'pedido_123' })
});
const data = await res.json();
console.log(data);
Axios:
import axios from 'axios';
const { data } = await axios.post('http://pagpix.site/libs/funcoes/gerar_pix.php', {
valor: 100,
user_id: 1,
descricao: 'Pedido #123',
local_id: 'pedido_123'
});
console.log(data);
Exemplos • Laravel
HTTP Client (Illuminate\\Support\\Facades\\Http):
use Illuminate\Support\Facades\Http;
$resp = Http::timeout(20)->post('http://pagpix.site/libs/funcoes/gerar_pix.php', [
'valor' => 100,
'user_id' => 1,
'descricao' => 'Pedido #123',
'local_id' => 'pedido_123',
]);
$data = $resp->json();
// $data['pixCopiaECola'] / $data['qrCodeBase64']
local_id com um UUID, registre status no seu banco e finalize o pedido apenas após webhook.
SDK (PHP)
O SDK simplifica chamadas ao gateway. Arquivo incluído: /libs/sdk/PagPixClient.php.
<?php
require_once __DIR__ . "/libs/sdk/PagPixClient.php";
$client = new PagPixClient("http://pagpix.site");
$pix = $client->createPix([
"valor" => 100.00,
"user_id" => 1,
"descricao" => "Pedido #123",
"local_id" => "pedido_123",
]);
$saque = $client->createCashout([
"valor" => 50.00,
"pix" => "11999999999",
"tipo" => "telefone",
"local_id" => "saque_456",
]);
Segurança (produção)
- Ative HTTPS obrigatório e HSTS.
- Use Idempotency-Key e
local_idúnico para evitar duplicidade. - Valide assinatura/token nos webhooks sempre que disponível.
- Logue todas requisições/retornos (sem expor segredos).
- Restrinja o Admin por IP, e use senhas fortes + 2FA.
Troubleshooting
Erros comuns e correções rápidas:
- 404 /public/index.php → seu Nginx está apontando pra
/publicmas o projeto está na raiz. - 500 → verifique logs do PHP/Nginx e permissões em
libs/*. - Webhook não chega → confirme URL pública/HTTPS e liberação de firewall.
Baixe o PDF para envio ao cliente:
http://pagpix.site/documentacao_pdf.php