مجموعة Commerce Kit حاليًا في مرحلة تجريبية. قد تتغير واجهات برمجة التطبيقات قبل الإصدار المستقر. للحصول على تفاصيل إضافية، راجع وثائق Commerce Kit.
سولانا باي هو بروتوكول قياسي لترميز طلبات الدفع كروابط URL. يمكن مشاركة هذه الروابط كوصلات، أو ترميزها كرموز QR للمحافظ المحمولة، أو استخدامها لبناء معاملات الدفع برمجيًا.
توفر حزمة @solana-commerce/solana-pay ترميز/تحليل URL، إنشاء رموز QR، وبناء
المعاملات—متوافقة مع @solana/kit.
التثبيت
pnpm add @solana-commerce/solana-pay
إنشاء روابط الدفع
استخدم encodeURL لإنشاء رابط URL ببروتوكول solana: يمكن للمحافظ تحليله:
import { encodeURL } from "@solana-commerce/solana-pay";const url = encodeURL({recipient: address("merchant-wallet-address"),amount: 100000000n, // 0.1 SOL in lamportslabel: "Coffee Shop",message: "Thanks for your order!"});console.log(url.toString());// solana:merchant...?amount=0.1&label=Coffee%20Shop&message=...
معاملات URL
| المعامل | النوع | الوصف |
|---|---|---|
recipient | Address | عنوان محفظة التاجر (مطلوب) |
amount | bigint | المبلغ بوحدات lamports أو الوحدات الصغرى للرمز |
splToken | Address | عنوان mint لرمز SPL (احذفه لـ SOL) |
reference | Address[] | مرجع فريد (مراجع) لتتبع المدفوعات |
label | string | اسم التاجر المعروض في المحفظة |
message | string | الرسالة المعروضة قبل الدفع |
memo | string | مذكرة على السلسلة مرفقة بالمعاملة |
مدفوعات رموز SPL
لمدفوعات العملات المستقرة، حدد mint الرمز:
import { encodeURL } from "@solana-commerce/solana-pay";const url = encodeURL({recipient: address("merchant-wallet"),amount: 25000000n, // 25 USDC (6 decimals)splToken: USDC_MINT,label: "My Store"});
تتبع المدفوعات باستخدام المراجع
إنشاء مرجع فريد لتحديد مدفوعات معينة:
import { encodeURL } from "@solana-commerce/solana-pay";import { address, generateKeyPairSigner } from "@solana/kit";const orderReference = (await generateKeyPairSigner()).address;const url = encodeURL({recipient: address(MERCHANT_WALLET_ADDRESS),amount: 500000000n, // 0.5 SOLreference: orderReference,memo: `Order-${Date.now()}`});// Query the blockchain later for transactions containing this reference
إنشاء رموز QR
استخدم createQR لإنشاء رموز QR قابلة للمسح الضوئي للمحافظ المحمولة:
import { createQR, encodeURL } from "@solana-commerce/solana-pay";import { address } from "@solana/kit";const url = encodeURL({recipient: address(MERCHANT_WALLET_ADDRESS),amount: 100000000n,label: "Coffee Shop"});const qrCode = await createQR(url.toString(),400, // size in pixels"white", // background"black" // foreground);// Use as image sourcedocument.getElementById("qr").src = qrCode;
رموز QR المخصصة
لرموز QR ذات العلامة التجارية مع الشعارات والتصميم المخصص:
import { createStyledQRCode, encodeURL } from "@solana-commerce/solana-pay";const qr = await createStyledQRCode(url.toString(), {width: 600,margin: 3,color: {dark: "#9945FF", // Solana purplelight: "#FFFFFF"},errorCorrectionLevel: "H",dotStyle: "dots",cornerStyle: "extra-rounded",logo: "/your-logo.png",logoSize: 120});
بناء المعاملات
استخدم createTransfer لبناء معاملة كاملة للتوقيع:
import { createTransfer } from "@solana-commerce/solana-pay";const transaction = await createTransfer(client.rpc,address(SENDER_WALLET_ADDRESS),{recipient: address(MERCHANT_WALLET_ADDRESS),amount: 100000000n, // 0.1 SOLmemo: "Coffee purchase"});
لرموز SPL، قم بتضمين عنوان السك:
const USDC_MINT = address("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");const transaction = await createTransfer(client.rpc,address(SENDER_WALLET_ADDRESS),{recipient: address(MERCHANT_WALLET_ADDRESS),amount: 25000000n, // 25 USDCsplToken: USDC_MINT,reference: [orderReference],memo: "Order #12345"});
تحليل عناوين URL
التحقق من صحة واستخراج البيانات من عناوين URL الخاصة بـ سولانا Pay:
import { parseURL, ParseURLError } from "@solana-commerce/solana-pay";try {const parsed = parseURL("solana:merchant...?amount=1.5&label=Store");console.log(parsed.recipient); // Addressconsole.log(parsed.amount); // 1500000000n (lamports)console.log(parsed.label); // "Store"} catch (error) {if (error instanceof ParseURLError) {console.error("Invalid URL:", error.message);}}
Is this page helpful?