الدفع مع مذكرة

يتيح لك برنامج المذكرات في سولانا إرفاق أرقام الفواتير أو معرفات الطلبات أو المراجع المخصصة بأي عملية دفع. يتم تسجيل هذه المذكرات بشكل دائم على السلسلة وتكون مرئية في سجلات المعاملات، مما يسهل مطابقة المدفوعات مع أنظمتك الداخلية.

كيف يعمل

يكتب برنامج المذكرات النص في سجلات المعاملة. يتم فهرسة هذه السجلات بواسطة المستكشفات ومزودي RPC، مما يجعل المذكرات قابلة للبحث لتسوية المدفوعات.

راجع كيف تعمل المدفوعات على سولانا لمفاهيم الدفع الأساسية.

تتطلب إضافة مذكرة بناء التعليمات مباشرة، مما يمنحك التحكم في ما يتم تضمينه في المعاملة.

توضح الخطوات أدناه التدفق الأساسي. راجع العرض التوضيحي للحصول على كود كامل قابل للتشغيل.

استيراد برنامج المذكرات

استورد getAddMemoInstruction من @solana-program/memo لإنشاء تعليمات المذكرات.

إنشاء تعليمات التحويل

أنشئ تعليمات تحويل الرموز مع تحديد ATA المصدر وATA الوجهة والسلطة (الموقع) والمبلغ بالوحدات الأساسية.

إنشاء تعليمات المذكرة

أنشئ تعليمات مذكرة مع رسالة. ستكون هذه الرسالة مرئية في سجلات البرنامج الخاصة بالمعاملة.

إرسال المعاملة مع المذكرة

ادمج تعليمات التحويل والمذكرة في معاملة واحدة.

عرض المذكرة في سجلات المعاملات

بعد تأكيد المعاملة، قم بجلبها لعرض المذكرة في السجلات. تظهر المذكرة كرسالة سجل من برنامج المذكرات.

Example Transaction Logs
"Program TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb invoke [1]",
"Program log: Instruction: Transfer",
"Program TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb consumed 1682 of 200000 compute units",
"Program TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb success",
"Program MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr invoke [1]",
'Program log: Memo (len 46): "Payment for services rendered - Invoice #12345"',
"Program MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr consumed 18097 of 198318 compute units",
"Program MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr success",
"Program ComputeBudget111111111111111111111111111111 invoke [1]",
"Program ComputeBudget111111111111111111111111111111 success"

استيراد برنامج المذكرات

استورد getAddMemoInstruction من @solana-program/memo لإنشاء تعليمات المذكرات.

إنشاء تعليمات التحويل

أنشئ تعليمات تحويل الرموز مع تحديد ATA المصدر وATA الوجهة والسلطة (الموقع) والمبلغ بالوحدات الأساسية.

إنشاء تعليمات المذكرة

أنشئ تعليمات مذكرة مع رسالة. ستكون هذه الرسالة مرئية في سجلات البرنامج الخاصة بالمعاملة.

إرسال المعاملة مع المذكرة

ادمج تعليمات التحويل والمذكرة في معاملة واحدة.

عرض المذكرة في سجلات المعاملات

بعد تأكيد المعاملة، قم بجلبها لعرض المذكرة في السجلات. تظهر المذكرة كرسالة سجل من برنامج المذكرات.

Example Transaction Logs
"Program TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb invoke [1]",
"Program log: Instruction: Transfer",
"Program TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb consumed 1682 of 200000 compute units",
"Program TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb success",
"Program MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr invoke [1]",
'Program log: Memo (len 46): "Payment for services rendered - Invoice #12345"',
"Program MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr consumed 18097 of 198318 compute units",
"Program MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr success",
"Program ComputeBudget111111111111111111111111111111 invoke [1]",
"Program ComputeBudget111111111111111111111111111111 success"
Payment with Memo
import { getAddMemoInstruction } from "@solana-program/memo";

عرض توضيحي

Demo
// Generate keypairs for sender and recipient
const sender = (await generateKeypair()).signer;
const recipient = (await generateKeypair()).signer;
console.log("Sender Address:", sender.address);
console.log("Recipient Address:", recipient.address);
// Demo Setup: Create client, mint account, token accounts, and fund with initial tokens
const { client, mint } = await demoSetup(sender, recipient);
console.log("\nMint Address:", mint.address);
// Derive the Associated Token Accounts addresses (ATAs) for sender and recipient
const [senderAta] = await findAssociatedTokenPda({
mint: mint.address,
owner: sender.address,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS
});
const [recipientAta] = await findAssociatedTokenPda({
mint: mint.address,
owner: recipient.address,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS
});
console.log("Sender Token Account:", senderAta.toString());
console.log("Recipient Token Account:", recipientAta.toString());
// =============================================================================
// Token Payment with Memo Demo
// =============================================================================
// Create instruction to transfer tokens from sender to recipient
// Transferring 250,000 base units = 0.25 tokens (with 6 decimals)
const transferInstruction = getTransferInstruction({
source: senderAta,
destination: recipientAta,
authority: sender.address,
amount: 250_000n // 0.25 tokens
});
// Create instruction to add a memo to the transaction
const memoInstruction = getAddMemoInstruction({
memo: "Payment for services rendered - Invoice #12345"
});
// Prepare and send transaction with both transfer and memo using @solana/client
const signature = await client.transaction.prepareAndSend({
authority: sender,
instructions: [transferInstruction, memoInstruction],
version: 0
});
console.log("\n=== Token Payment with Memo Complete ===");
console.log("Transaction Signature:", signature.toString());
// Fetch final token account balances using @solana/client SPL token helper
const splToken = client.splToken({
mint: mint.address,
tokenProgram: "auto"
});
const senderBalance = await splToken.fetchBalance(sender.address);
const recipientBalance = await splToken.fetchBalance(recipient.address);
console.log("\nSender Token Account Balance:", senderBalance);
console.log("Recipient Token Account Balance:", recipientBalance);
// Fetch transaction details to view the memo in the logs
const transaction = await client.runtime.rpc
.getTransaction(signature, {
encoding: "jsonParsed",
maxSupportedTransactionVersion: 0
})
.send();
console.log("\nTransaction logs with Memo:");
console.log(transaction?.meta?.logMessages);
// =============================================================================
// Demo Setup Helper Function
// =============================================================================
Console
Click to execute the code.

Is this page helpful?

جدول المحتويات

تعديل الصفحة

تدار بواسطة

© 2026 مؤسسة سولانا.
جميع الحقوق محفوظة.
تواصل معنا