📦 Instalação Rápida
Cole este código HTML onde você deseja que o botão de pagamento apareça:
<script src="https://pay.paynch.app/botao/button23.js"
data-shop="0xE5fF9d546278a7CE0DF261EB85945Df2F0Dcc3c6"
data-amount="15.00"
data-order-id="pedido-123"
data-product-name="Acesso Premium"
data-redirect="https://sualoja.com/obrigado"
data-theme="light"
data-language="pt-br"
data-currency="USDT"
data-dev-mode="false">
</script>
✨ Pronto! Com apenas essa linha de código, você tem um sistema completo de pagamento crypto com verificação automática e design responsivo.
⚙️ Parâmetros de Configuração
Parâmetros Obrigatórios
| Parâmetro | Tipo | Descrição | Exemplo |
|---|---|---|---|
data-shop Obrigatório |
String | Endereço do contrato da loja (Ethereum address) | 0xE5fF9d546278a7CE0DF261EB85945Df2F0Dcc3c6 (endereço criado no seu dashboard) |
data-amount Obrigatório |
Number | Valor em USDT (usar ponto como separador decimal) | 15.00 ou 99.90 |
data-order-id Obrigatório |
String | ID único do pedido (deve ser diferente para cada transação) | pedido-123, ORD_abc456 (identificação gerada e salva no seu banco de dados para cada pedido/checkout) |
data-redirect Obrigatório |
URL | Crie ou baixe o arquivo (PHP) de confirmação para fazer integrações com seu sistema | URL de redirecionamento após confirmação |
Parâmetros Opcionais
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
data-product-name Opcional |
String | "Produto" |
Nome exibido no widget |
data-theme Opcional |
String | "default" |
Tema visual: default, dark, light |
data-language Opcional |
String | "pt-BR" |
Idioma: pt-BR, en, es |
data-currency Opcional |
String | "USDT" |
Símbolo do token de pagamento (Se você usar seu próprio token para receber pagamentos, é necessário digitar o símbolo dele) |
data-dev-mode Opcional |
Boolean | false |
Modo desenvolvimento (simula transações) |
data-script-path Opcional |
URL | null |
Caminho customizado do script de pagamento |
📝 Exemplos Práticos
Exemplo 1: HTML Estático
<!DOCTYPE html>
<html>
<head>
<title>Minha Loja</title>
</head>
<body>
<h1>Produto Premium</h1>
<script
src="https://pay.paynch.app/botao/button23.js"
data-shop="0xE5fF9d546278a7CE0DF261EB85945Df2F0Dcc3c6"
data-amount="25.00"
data-order-id="ordem-456"
data-product-name="Produto Premium"
data-theme="light"
data-language="pt-br"
data-currency="USDT"
data-dev-mode="false">
</script>
</body>
</html>
Exemplo 2: PHP Dinâmico
<?php
// Configurações do produto
$produto = [
'nome' => 'Curso Completo de Web3',
'preco' => 99.90
];
// Gera ID único (armazene no banco para validação futura)
$orderId = uniqid('order_');
// Config Paynch
$paynchConfig = [
'contract' => '0xE5fF9d546278a7CE0DF261EB85945Df2F0Dcc3c6',
'redirectUrl' => 'https://minhaloja.com/obrigado'
];
?>
<!-- Botão Paynch -->
<script
src="https://pay.paynch.app/botao/button23.js"
data-shop="<?= htmlspecialchars($paynchConfig['contract']) ?>"
data-amount="<?= number_format($produto['preco'], 2, '.', '') ?>"
data-order-id="<?= htmlspecialchars($orderId) ?>"
data-product-name="<?= htmlspecialchars($produto['nome']) ?>"
data-redirect="<?= $paynchConfig['redirectUrl'] ?>?orderId=<?= urlencode($orderId) ?>"
data-theme="light"
data-language="pt-br"
data-currency="USDT"
data-dev-mode="false">
</script>
Exemplo 3: E-commerce Completo (PHP + MySQL)
<?php
// Conecta ao banco
$pdo = new PDO(
'mysql:host=localhost;dbname=loja',
'user',
'pass'
);
// Busca produto
$produtoId = $_GET['id'] ?? 1;
$stmt = $pdo->prepare(
"SELECT * FROM produtos WHERE id = ?"
);
$stmt->execute([$produtoId]);
$produto = $stmt->fetch();
// Cria pedido
$orderId = 'ORD' . time() . rand(1000, 9999);
$stmt = $pdo->prepare(
"INSERT INTO pedidos (order_id, produto_id, valor, status)
VALUES (?, ?, ?, 'pendente')"
);
$stmt->execute([
$orderId,
$produto['id'],
$produto['preco']
]);
?>
<!-- Botão Paynch -->
<script
src="https://pay.paynch.app/botao/button23.js"
data-shop="<?= htmlspecialchars($paynchConfig['contract']) ?>"
data-amount="<?= number_format($produto['preco'], 2, '.', '') ?>"
data-order-id="<?= htmlspecialchars($orderId) ?>"
data-product-name="<?= htmlspecialchars($produto['nome']) ?>"
data-redirect="<?= $paynchConfig['redirectUrl'] ?>?orderId=<?= urlencode($orderId) ?>"
data-theme="light"
data-language="pt-br"
data-currency="USDT"
data-dev-mode="false">
</script>
🎨 Temas Visuais
O Paynch Button oferece 3 temas pré-configurados:
Default
Roxo vibrante e moderno
data-theme="default"
Dark
Escuro e elegante
data-theme="dark"
Light
Claro e minimalista
data-theme="light"
💡 Dica: Escolha o tema que melhor combina com o design do seu site. Todos são 100% responsivos!
✨ Funcionalidades
⚡ Zero Configuração
Apenas uma linha de código. Sem imports, sem setup complexo.
🔄 Retry Logic
Sistema inteligente de fallback com múltiplos caminhos de script.
🔍 Verificação Automática
Monitora a blockchain a cada 3 segundos até confirmar o pagamento.
📱 100% Responsivo
Funciona perfeitamente em desktop, tablet e mobile.
🌍 Multi-idioma
Suporte nativo a Português (PT-BR), Espanhol (ES) e English (EN).
🎨 3 Temas Prontos
Default, Dark e Light - escolha o que combina com seu site.
🛡️ Segurança e Boas Práticas
Validação de Order IDs
❌ NÃO FAÇA: IDs previsíveis ou duplicados
$orderId = "pedido-1"; // PÉSSIMO!
$orderId = $_GET['id']; // INSEGURO!
✅ FAÇA: IDs únicos e imprevisíveis
// Bom
$orderId = uniqid('ORD_', true);
// Ótimo!
$orderId = 'ORD_' . time() . '_' . bin2hex(random_bytes(8));
Validação Backend (ESSENCIAL!)
Sempre valide o pagamento no servidor antes de liberar o produto:
<?php
// Página de confirmação (obrigado.php)
$orderId = $_GET['orderId'] ?? null;
if (!$orderId) {
die('Order ID inválido');
}
// Consulta API Paynch
$paynchApi = 'https://pay.paynch.app/paynch.php';
$contract = '0xE5fF9d546278a7CE0DF261EB85945Df2F0Dcc3c6';
$response = file_get_contents(
"$paynchApi?contract=$contract&orderId=$orderId"
);
$data = json_decode($response, true);
if ($data['success'] === true && $data['count'] > 0) {
// ✅ PAGAMENTO CONFIRMADO!
$pdo->prepare(
"UPDATE pedidos
SET status = 'pago'
WHERE order_id = ?"
)->execute([$orderId]);
echo '✅ Pagamento confirmado!';
} else {
echo '⏳ Aguardando confirmação...';
}
?>
Escape de Dados (Prevenção XSS)
// 🔐 SEMPRE use htmlspecialchars() para valores HTML
data-shop="<?= htmlspecialchars($paynchConfig['contract']) ?>"
data-order-id="<?= htmlspecialchars($orderId) ?>"
data-product-name="<?= htmlspecialchars($produto['nome']) ?>"
// 🌐 Para URLs, use urlencode()
data-redirect="<?= $baseUrl ?>?orderId=<?= urlencode($orderId) ?>"
⚠️ IMPORTANTE: Sempre use ponto (.) como separador decimal no
✅ Correto:
❌ Errado:
data-amount:
✅ Correto:
data-amount="15.00"
❌ Errado:
data-amount="15,00"
🚨 Troubleshooting
Problema: Botão não aparece
Solução:
- Verifique se os 3 parâmetros obrigatórios estão presentes (
data-shop,data-amount,data-order-id) - Abra o console do navegador (F12) e procure por erros
- Verifique se a URL do script está correta
Problema: Pagamento não é detectado
Solução:
- Aguarde até 10 minutos (200 verificações × 3 segundos)
- Verifique se o Order ID está correto
- Confirme se a transação foi para o contrato correto
- Pegue a identificação do pedido (ID que é passado como parâmetro na URL 'orderid' e busque no dashboard)
- Consulte manualmente a API:
https://pay.paynch.app/paynch.php?contract=...&orderId=...
Problema: Valor com formato incorreto
Erro comum: Usar vírgula (,) no
✅ Correto:
❌ Errado:
data-amount
✅ Correto:
data-amount="= number_format($preco, 2, '.', '') ?>"
❌ Errado:
data-amount="= number_format($preco, 2, ',', '.') ?>"
Use a nossa IA caso precise de ajuda
💬 Precisa de Ajuda? Nossa IA está disponível 24/7 para responder suas dúvidas sobre integração e troubleshooting.
Abrir Chat de Suporte IA
Abrir Chat de Suporte IA
✅ Checklist de Produção
Antes de colocar em produção, verifique:
- Testei em modo
data-dev-mode="true" - Validei todos os parâmetros obrigatórios
- Gerei Order IDs únicos e imprevisíveis
- Implementei validação backend (essencial!)
- Testei fluxo completo com transação real
- Configurei página de redirecionamento
- Escapei todos os dados dinâmicos (XSS)
- Formatei valores com ponto decimal
- Testei em mobile e desktop
- Configurei
data-dev-mode="false" - Documentei o contrato usado
- Configurei logs e monitoramento