PembayaranLangganan

Buat Otoritas Berlangganan

Otoritas Berlangganan adalah PDA yang digunakan program sebagai delegasi SPL Token untuk satu token account pengguna dan satu token mint. Buat sebelum membuat delegasi tetap, delegasi berulang, atau langganan paket berlangganan untuk mint tersebut.

Token account pengguna harus sudah ada. Inisialisasi membuat PDA Otoritas Berlangganan dan menyetujuinya sebagai delegasi token pada token account pengguna.

Buat Otoritas

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();
}

Catatan

  • Pengguna menandatangani transaksi inisialisasi.
  • Buat satu Subscription Authority per pasangan pengguna dan token mint.
  • Gunakan kembali Subscription Authority yang sudah ada untuk delegasi berikutnya pada mint yang sama.
  • Sponsor dapat mendanai akun: berikan payer opsional ke initSubscriptionAuthority (juga didukung di createFixedDelegation, createRecurringDelegation, dan subscribe), atau konfigurasikan satu dengan .use(payer(sponsorSigner)). rent kemudian dikembalikan ke sponsor tersebut saat Anda menutup dengan receiver yang sesuai. Abaikan untuk default yang didanai sendiri.
  • Tutup Subscription Authority hanya setelah setiap delegasi yang bergantung padanya telah dicabut atau ditutup.

Is this page helpful?

Daftar Isi

Edit Halaman
© 2026 Yayasan Solana. Semua hak dilindungi.