PaiementsAbonnements
Une Autorité d'Abonnement est un PDA que le programme utilise comme délégué de jeton SPL pour le token account d'un utilisateur et un mint de jeton. Créez-la avant de créer des délégations fixes, des délégations récurrentes ou des abonnements à un plan d'abonnement pour ce mint.
Le token account de l'utilisateur doit déjà exister. L'initialisation crée le PDA d'Autorité d'Abonnement et l'approuve en tant que délégué de jeton sur le token account de l'utilisateur.
Créer l'Autorité
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();}
Remarques
- L'utilisateur signe la transaction d'initialisation.
- Créez une Subscription Authority par paire utilisateur/token mint.
- Réutilisez la Subscription Authority existante pour les délégations ultérieures sur le même mint.
- Un sponsor peut financer le compte : passez un
payeroptionnel àinitSubscriptionAuthority(également pris en charge surcreateFixedDelegation,createRecurringDelegationetsubscribe), ou configurez-en un avec.use(payer(sponsorSigner)). Le rent est ensuite restitué à ce sponsor lorsque vous fermez avec unreceivercorrespondant. Omettez-le pour le comportement par défaut autofinancé. - Ne fermez la Subscription Authority qu'après la révocation ou la fermeture de toutes les délégations qui en dépendent.
Is this page helpful?