SDK da Web
Instalar
Opção 1: NPM
npm install @yuno-payments/sdk-webimport { Yuno } from '@yuno-payments/sdk-web';Opção 2: CDN
<script src="https://sdk-web.y.uno/v1.5/main.js"></script>Opção 3: Carga dinâmica
const script = document.createElement('script');
script.src = 'https://sdk-web.y.uno/v1.5/main.js';
document.head.appendChild(script);
Suporte a TypeScriptTipos de instalação:
npm install @yuno-payments/sdk-web-types
Fluxo básico de pagamentos
1. Initialize
const yuno = aguardar Yuno.initialize(public-api-key);2. Criar sessão de checkout (back-end)
// Your backend endpoint
const session = await fetch('/api/checkout/session', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
customer_id: 'cus_123',
amount: { currency: 'USD', value: 2500 },
country: 'US'
})
}).then(r => r.json());3. Configurar checkout
yuno.startCheckout({
checkoutSession: session.checkout_session,
elementSelector: '#payment-container',
countryCode: 'US',
language: 'en-US',
async yunoCreatePayment(oneTimeToken) {
const result = await fetch('/api/payment/create', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
one_time_token: oneTimeToken,
checkout_session: session.checkout_session
})
}).then(r => r.json());
yuno.continuePayment({ showPaymentStatus: true });
},
yunoPaymentResult: (data) => {
console.log('Payment completed:', data.status);
}
});4. Formulário de pagamento de montagem
yunomountCheckout();5. Iniciar fluxo de pagamento
Adicione um botão de pagamento e acione o fluxo de pagamento:
const payButton = document.querySelector('#pay-button');
payButton.addEventListener('click', () => {
yuno.startPayment();
});6. Adicione HTML
<div id="payment-container"></div>
<button id="pay-button">Pay Now</button>Exemplo prático completo
<!DOCTYPE html>
<html>
<head>
<title>Yuno Payment</title>
<script src="https://sdk-web.y.uno/v1.5/main.js"></script>
</head>
<body>
<div id="payment-container"></div>
<button id="pay-button">Pay Now</button>
<script>
async function initPayment() {
// Initialize
const yuno = await Yuno.initialize('pk_test_123');
// Create session
const session = await fetch('/api/checkout/session', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
customer_id: 'cus_123',
amount: { currency: 'USD', value: 2500 },
country: 'US'
})
}).then(r => r.json());
// Configure checkout
yuno.startCheckout({
checkoutSession: session.checkout_session,
elementSelector: '#payment-container',
countryCode: 'US',
async yunoCreatePayment(token) {
await fetch('/api/payment/create', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
one_time_token: token,
checkout_session: session.checkout_session
})
});
yuno.continuePayment();
},
yunoPaymentResult: (data) => {
if (data.status === 'SUCCEEDED') {
window.location.href = '/success';
}
}
});
// Mount form
yuno.mountCheckout();
// Start payment on button click
document.querySelector('#pay-button').addEventListener('click', () => {
yuno.startPayment();
});
}
initPayment();
</script>
</body>
</html>Tratamento dos resultados de pagamento
yuno.startCheckout({
// ... other config
yunoPaymentResult: (data) => {
switch(data.status) {
case 'SUCCEEDED':
window.location.href = '/success';
break;
case 'FAILED':
alert('Payment failed: ' + data.error?.message);
break;
case 'PENDING':
console.log('Payment is being processed');
break;
case 'REJECTED':
alert('Payment was rejected');
break;
}
},
yunoError: (error) => {
console.error('Error:', error);
}
});Autenticação 3DS
O 3DS é tratado automaticamente pelo SDK. Para métodos de pagamento assíncronos:
async yunoCreatePayment(token) {
await createPaymentOnBackend(token);
// Handle redirect if needed
const result = await yuno.continuePayment();
if (result?.action === 'REDIRECT_URL') {
window.location.href = result.redirect.init_url;
}
}Opções de configuração
Parâmetros essenciais
| Parâmetro | Tipo | Descrição |
|---|---|---|
checkoutSession | string | ID da sessão do backend |
elementSelector | string | Seletor CSS para contêiner |
countryCode | string | Código ISO do país (por exemplo, “US”) |
language | string | Código do idioma (por exemplo, “en-US”) |
yunoCreatePayment | função | Retorno de chamada para criação de pagamento |
Configuração do cartão
yuno.startCheckout({
// ... other config
card: {
type: 'extends', // or 'only'
cardSaveEnable: true, // Show save checkbox
isCreditCardProcessingOnly: false, // Allow debit
onChange: ({ error, data }) => {
if (error) {
console.log('Card validation error:', error);
}
}
}
});Carregador e status
yuno.startCheckout({
// ... other config
showLoading: true, // Show Yuno's loader
showPaymentStatus: true, // Show payment result page
onLoading: (isLoading) => {
console.log('Loading state:', isLoading);
}
});Próximos passos
Pronto para explorar recursos mais avançados? Confira o guia Recursos avançados para:
- Opções alternativas de montagem -
mountCheckoutLite()emountSeamlessCheckout()para seleção de método de pagamento personalizado - Inscrição (Salvar cartões) - Salve métodos de pagamento para uso futuro
- Token armazenados - Pagamentos com um clique com cartões salvos
- IU personalizada (integração sem interface) - Crie formulários de pagamento totalmente personalizados
- Campos seguros - Formulários de cartão personalizados em conformidade com a norma PCI
- Estilo e personalização - Adapte o SDK à sua marca
- Configuração avançada - Visualizações dinâmicas, modo de renderização e muito mais
Veja também:
- Exemplos de código - Exemplos para copiar e colar em cenários comuns
Atualizado há 1 dia