Componentes Svelte
Usa @monei-js/svelte-components para añadir componentes de pago de MONEI a tu aplicación Svelte 5. Cada componente usa props basadas en runes y bind:this para submit().
Instalación
- npm
- yarn
- pnpm
npm install @monei-js/svelte-components @monei-js/components
yarn add @monei-js/svelte-components @monei-js/components
pnpm add @monei-js/svelte-components @monei-js/components
Requiere Svelte 5 o posterior. Todos los componentes usan runes de Svelte 5 ($props(), $state, $effect) — Svelte 4 no está soportado.
Componentes
| Componente | Descripción |
|---|---|
CardInput | Entrada de tarjeta segura (iframe) con submit() |
Bizum | Botón de Bizum + modal de verificación por teléfono |
PayPal | Botón de checkout de PayPal |
PaymentRequest | Botón de Apple Pay / Google Pay |
Card Input
El componente Card Input recopila el número de tarjeta, la fecha de caducidad y el CVC en un único iframe seguro. Usa bind:this para llamar a submit() y obtener un token de pago.
<script lang="ts">
import {CardInput, confirmPayment} from '@monei-js/svelte-components';
let {paymentId}: {paymentId: string} = $props();
let cardInput: CardInput;
let error = $state('');
function handleChange(event: {error?: string}) {
error = event.error ?? '';
}
async function handleSubmit() {
const result = await cardInput.submit();
if (result.error) {
error = result.error;
return;
}
await confirmPayment({paymentId, paymentToken: result.token});
}
</script>
<div>
<CardInput bind:this="{cardInput}" {paymentId} onChange="{handleChange}" />
<button onclick="{handleSubmit}">Pay</button>
{#if error}
<p>{error}</p>
{/if}
</div>
Consulta la Referencia de la API para ver todas las props de CardInput (estilo, placeholders, mensajes de error, callbacks de eventos).
Bizum
El componente Bizum muestra un botón de pago Bizum. Cuando el cliente hace clic, se abre un modal de verificación por teléfono para completar el pago.
<script lang="ts">
import {Bizum, confirmPayment} from '@monei-js/svelte-components';
let {paymentId}: {paymentId: string} = $props();
async function handleSubmit(result: {token?: string}) {
if (result.token) {
await confirmPayment({paymentId, paymentToken: result.token});
}
}
function handleError(error: string) {
console.error(error);
}
</script>
<Bizum {paymentId} onSubmit="{handleSubmit}" onError="{handleError}" />
PayPal
El componente PayPal muestra un botón de checkout de PayPal. Cuando el cliente aprueba, recibes un token para confirmar el pago.
<script lang="ts">
import {PayPal, confirmPayment} from '@monei-js/svelte-components';
let {paymentId}: {paymentId: string} = $props();
async function handleSubmit(result: {token?: string}) {
if (result.token) {
await confirmPayment({paymentId, paymentToken: result.token});
}
}
function handleError(error: string) {
console.error(error);
}
</script>
<PayPal {paymentId} onSubmit="{handleSubmit}" onError="{handleError}" />
PaymentRequest (Apple Pay / Google Pay)
El componente PaymentRequest muestra un botón de Apple Pay o Google Pay según el navegador y el dispositivo del cliente.
Apple Pay requiere verificación de dominio tanto en desarrollo como en producción.
<script lang="ts">
import {PaymentRequest, confirmPayment} from '@monei-js/svelte-components';
let {paymentId}: {paymentId: string} = $props();
async function handleSubmit(result: {token?: string}) {
if (result.token) {
await confirmPayment({paymentId, paymentToken: result.token});
}
}
function handleError(error: string) {
console.error(error);
}
</script>
<PaymentRequest {paymentId} onSubmit="{handleSubmit}" onError="{handleError}" />
Modal de pago
Llamar a confirmPayment() sin un paymentToken abre el Modal de pago de MONEI — un checkout completo en la página donde el cliente puede seleccionar un método de pago y completar el pago.
<script lang="ts">
import {confirmPayment} from '@monei-js/svelte-components';
let {paymentId}: {paymentId: string} = $props();
async function handleClick() {
const result = await confirmPayment({paymentId});
// Payment completed — check result.status
console.log(result);
}
</script>
<button onclick="{handleClick}">Pay</button>
Apple Pay no está disponible en el Modal de pago. Usa el componente PaymentRequest en su lugar.
Consulta Usar el Modal de pago para la guía de integración completa.
Próximos pasos
- Consulta la Referencia de la API para ver todas las opciones y métodos de los componentes
- Este es un paquete nuevo — no existía un driver de Svelte anteriormente. Consulta la Guía de migración para los cambios generales de v2 a v3