PagosSuscripciones
Una Autoridad de Suscripción es una PDA que el programa utiliza como delegado de token SPL para la token account de un usuario y un token mint específico. Créala antes de crear delegaciones fijas, delegaciones recurrentes o suscripciones a planes de suscripción para ese mint.
La token account del usuario ya debe existir. La inicialización crea la PDA de Autoridad de Suscripción y la aprueba como delegado de token en la token account del usuario.
Crear la Autoridad
import { address, createClient } from '@solana/kit';import { solanaLocalRpc } from '@solana/kit-plugin-rpc';import { signer } from '@solana/kit-plugin-signer';import { findAssociatedTokenPda, TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';import {fetchMaybeSubscriptionAuthority,findSubscriptionAuthorityPda,subscriptionsProgram,} from '@solana/subscriptions';const client = createClient().use(signer(userSigner)).use(solanaLocalRpc({ rpcUrl: 'http://127.0.0.1:8899' })).use(subscriptionsProgram());const tokenMint = address('TOKEN_MINT_ADDRESS_HERE');const [userAta] = await findAssociatedTokenPda({mint: tokenMint,owner: userSigner.address,tokenProgram: TOKEN_PROGRAM_ADDRESS,});const [subscriptionAuthorityPda] = await findSubscriptionAuthorityPda({user: userSigner.address,tokenMint,});const subscriptionAuthority = await fetchMaybeSubscriptionAuthority(client.rpc,subscriptionAuthorityPda,);if (!subscriptionAuthority.exists) {await client.subscriptions.instructions.initSubscriptionAuthority({tokenMint,tokenProgram: TOKEN_PROGRAM_ADDRESS,userAta,}).sendTransaction();}
Notas
- El usuario firma la transacción de inicialización.
- Crea una Autoridad de Suscripción por cada par de usuario y token mint.
- Reutiliza la Autoridad de Suscripción existente para delegaciones posteriores en el mismo mint.
- Cierra la Autoridad de Suscripción solo después de que cada delegación que depende de ella haya sido revocada o cerrada.
Is this page helpful?