Intenciones de pago
Crea, obtén, lista, edita, cancela, elimina y valida intenciones de pago SEP-7 de Stellar.
Una intención de pago representa un pago que quieres que un usuario realice. Es el recurso central de la API y el administrador al que recurrirás con más frecuencia.
client.paymentIntents: intenciones SEP-7 de Stellar. Dos tipos:
- Intención
pay: sin origen. La billetera del pagador elige la cuenta de origen. Produce un URIweb+stellar:pay?...+ QR (sin XDR). - Intención
tx: origen conocido. Produce un XDR sin firmar + URIweb+stellar:tx?...- QR.
Crear
import { Assets } from '@cosmosapp/pay_sdk';
// pay (no source)
const pay = await client.paymentIntents.createPay({
destination: 'G...', // required: payee (or an address-book name)
amount: '10', // optional; omit for an open amount (donations)
asset: Assets.USDC, // typed asset → fills assetCode + verified issuer
// assetCode: 'USDC', assetIssuer: 'G...', // …or set them explicitly
// omit asset entirely for native lumens (XLM)
memo: '123456789', // optional MEMO_ID (uint64), auto-generated if omitted
msg: 'Order #24', // optional, ≤ 300 chars, shown in the wallet
callback: 'url:https://...', // optional SEP-7 callback for the signed XDR
});
// tx (source known)
const tx = await client.paymentIntents.createTx({
source: 'G...PAYER', // required (extra vs pay)
destination: 'G...MERCHANT',
amount: '25.5',
});
console.log(tx.xdr, tx.uri, tx.qr);Los montos son cadenas decimales, máx. 7 decimales. Los emisores de activos son específicos de cada red (mainnet vs testnet).
Obtener / listar
const intent = await client.paymentIntents.fetch('pi_123');
const page = await client.paymentIntents.list({
status: 'SUCCEEDED', // optional filter (PaymentIntentStatus)
take: 50, // page size, max 100, default 20
skip: 0, // offset
});
// page → { items: PaymentIntent[], total, take, skip }Actualizar / cancelar / eliminar
await intent.edit({ reference: 'order_1234' }); // status / txHash / reference
await intent.cancel(); // → status CANCELLED
await intent.delete();
// manager forms: client.paymentIntents.update(id, {...}) / .delete(id)Validar (finalizar)
const outcome = await intent.validate('<txHash>');
// → { valid, status, reason, paymentIntent }
if (outcome.valid) console.log('settled', outcome.status);
// manager form: client.paymentIntents.validate(id, { txHash })La validación comprueba el éxito de la tx + destino + monto + memo, finaliza el estado en el servidor y dispara el webhook.
Accesores de la estructura (en un PaymentIntent)
id, kind, status, network, source, destination, amount, asset,
assetIssuer, memo, msg, callback, xdr, uri, qr, txHash,
reference, createdAt, updatedAt. Auxiliares: isTx, isPay, isSucceeded,
isPending, assetLabel ('XLM' para nativo). Métodos: fetch(), edit(),
validate(txHash), cancel(), delete(), toJSON().
Referencias
- PaymentIntent: Una intención de pago SEP-7 de Stellar
- Assets: Typed asset / wallet catalog or address helper.
- TestnetAssets: Typed asset / wallet catalog or address helper.