PembayaranLangganan

Tutup Otoritas Langganan

Otoritas Langganan adalah PDA yang digunakan program sebagai delegasi SPL Token untuk akun token pengguna. Tutup akun ini ketika pengguna tidak lagi memiliki delegasi tetap, delegasi berulang, atau delegasi langganan yang aktif untuk mint tersebut.

Penutupan mengembalikan rent akun kepada pembiayanya (pengguna, atau pembayar mana pun yang mendanainya). Tutup semua delegasi aktif terlebih dahulu.

Penutupan tidak menghapus persetujuan delegasi SPL Token. Setelah PDA dihapus, persetujuan tersebut menjadi tidak aktif, namun tetap berada di token account hingga dicabut — lihat Cabut Persetujuan Delegasi.

Tutup Authority

import { address, createClient } from '@solana/kit';
import { solanaLocalRpc } from '@solana/kit-plugin-rpc';
import { signer } from '@solana/kit-plugin-signer';
import {
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 [subscriptionAuthorityPda] = await findSubscriptionAuthorityPda({
user: userSigner.address,
tokenMint,
});
await client.subscriptions.instructions
.closeSubscriptionAuthority({
user: userSigner,
tokenMint,
// Include this only when a sponsor funded the Subscription Authority.
receiver: sponsorSigner.address,
})
.sendTransaction();

Cabut Persetujuan Delegasi

RevokeSubscriptionAuthority membersihkan persetujuan delegasi yang tersisa dari token account pengguna. Ini memanggil Revoke milik token program, ditandatangani oleh pengguna, sehingga berfungsi terlepas dari apakah Subscription Authority masih ada atau tidak. Kirim secara tersendiri atau bersamaan dengan CloseSubscriptionAuthority.

Berikan token program yang memiliki mint: TOKEN_PROGRAM_ADDRESS untuk mint SPL Token, atau TOKEN_2022_PROGRAM_ADDRESS (dari @solana-program/token-2022) untuk mint Token-2022.

import { TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';
await client.subscriptions.instructions
.revokeSubscriptionAuthority({
user: userSigner,
tokenMint,
tokenProgram: TOKEN_PROGRAM_ADDRESS,
})
.sendTransaction();

Catatan

  • Pengguna menandatangani transaksi penutupan.
  • Jika sponsor mendanai Subscription Authority, berikan akun sponsor tersebut sebagai receiver agar rent dikembalikan kepada pembayar yang tercatat.
  • Tutup PDA delegasi tetap, berulang, dan langganan sebelum menutup Subscription Authority.
  • Jika pengguna membuat delegasi baru nantinya, inisialisasi Subscription Authority baru untuk mint yang sama.
  • Penutupan tidak menghapus persetujuan delegasi token. Gunakan RevokeSubscriptionAuthority untuk menghapusnya dari token account pengguna.

Is this page helpful?

Daftar Isi

Edit Halaman
© 2026 Yayasan Solana. Semua hak dilindungi.