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 Otoritas Berlangganan per pasangan pengguna dan token mint.
  • Gunakan kembali Otoritas Berlangganan yang ada untuk delegasi selanjutnya pada mint yang sama.
  • Tutup Otoritas Berlangganan 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.