결제구독
구독 권한은 프로그램이 한 사용자의 token account와 하나의 토큰 민트에 대한 SPL 토큰 위임자로 사용하는 PDA입니다. 해당 민트에 대한 고정 위임, 반복 위임 또는 구독 플랜 구독을 생성하기 전에 이를 생성하세요.
사용자의 token account는 이미 존재해야 합니다. 초기화 시 구독 권한 PDA가 생성되고 사용자의 token account에서 토큰 위임자로 승인됩니다.
권한 생성
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();}
참고사항
- 사용자가 초기화 트랜잭션에 서명합니다.
- 사용자와 토큰 민트 쌍당 하나의 구독 권한을 생성합니다.
- 동일한 민트에 대한 이후 위임에는 기존 구독 권한을 재사용합니다.
- 구독 권한에 의존하는 모든 위임이 취소되거나 종료된 후에만 구독 권한을 종료합니다.
Is this page helpful?