Use o script público da Pagou para tokenizar cartão no frontend:
<script
src="https://js.pagou.ai/payments/v2.js"
data-public-key="pk_live_sua_chave_publica"
data-test-mode="false"
></script>
<form id="payment-form">
<input type="text" data-pagou="number" placeholder="Número do cartão" />
<input type="text" data-pagou="expiration" placeholder="MM/AA" />
<input type="text" data-pagou="verification_value" placeholder="CVV" />
<input type="text" data-pagou="full_name" placeholder="Nome do portador" />
<button type="submit">Pagar</button>
</form>
Tabela de bindings (data-pagou)
Atributo (data-pagou) | Campo tokenizado | Obrigatório | Observações |
|---|
number | number | Sim | Número do cartão (com ou sem máscara) |
verification_value | verification_value | Sim | CVV/CVC |
expiration | month + year | Sim* | Formato único MM/AA |
expiration_month | month | Sim* | Use quando separar mês/ano |
expiration_year | year | Sim* | Use quando separar mês/ano |
month | month | Sim* | Alias de expiration_month |
year | year | Sim* | Alias de expiration_year |
full_name | first_name + last_name | Sim** | O SDK faz split automático por espaço |
first_name | first_name | Sim** | Use com last_name |
last_name | last_name | Sim** | Use com first_name |
* Obrigatório informar validade via expiration ou expiration_month/expiration_year (ou month/year).
** Obrigatório informar nome via full_name ou first_name + last_name.
Tokenização e envio para backend
document.getElementById("payment-form").addEventListener("submit", async (event) => {
event.preventDefault();
const { token, errors } = await window.Pagou.createPaymentToken();
if (errors) {
console.error(errors);
return;
}
await fetch("/checkout/pay", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ token }),
});
});
Criação da transação no backend
import { Client } from "@pagouai/api-sdk";
const client = new Client({
apiKey: process.env.PAGOU_API_KEY!,
environment: "production",
});
const transaction = await client.transactions.create({
amount: 1500,
currency: "BRL",
method: "credit_card",
token: "pgct_0123456789abcdef",
installments: 1,
buyer: {
name: "Maria Silva",
email: "maria@empresa.com",
document: { type: "CPF", number: "12345678901" },
},
products: [{ name: "Pedido #1234", price: 1500, quantity: 1 }],
});
console.log(transaction.data.id);
Não integre tokenização de cartão diretamente via rota HTTP. Para integração pública, use o WebSDK.