🚀 Paynch Button

v2.2.0

Integração de pagamento crypto em uma linha de código

📦 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 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 data-amount

✅ Correto: data-amount=""
❌ Errado: data-amount=""

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

✅ 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