Solana Pay

Το Commerce Kit βρίσκεται αυτή τη στιγμή σε beta. Τα APIs ενδέχεται να αλλάξουν πριν από την σταθερή έκδοση. Για περισσότερες λεπτομέρειες, δείτε την τεκμηρίωση του Commerce Kit .

Το Solana Pay είναι ένα πρότυπο πρωτόκολλο για την κωδικοποίηση αιτημάτων πληρωμής ως URLs. Αυτά τα URLs μπορούν να κοινοποιηθούν ως links, να κωδικοποιηθούν ως QR codes για mobile wallets, ή να χρησιμοποιηθούν για την προγραμματιστική δημιουργία συναλλαγών πληρωμής.

Το πακέτο @solana-commerce/solana-pay παρέχει κωδικοποίηση/ανάλυση URL, δημιουργία QR code και δημιουργία συναλλαγών—συμβατό με το @solana/kit.

Εγκατάσταση

pnpm add @solana-commerce/solana-pay

Δημιουργία URLs πληρωμών

Χρησιμοποιήστε το encodeURL για να δημιουργήσετε ένα URL πρωτοκόλλου solana: που μπορούν να αναλύσουν τα wallets:

import { encodeURL } from "@solana-commerce/solana-pay";
const url = encodeURL({
recipient: address("merchant-wallet-address"),
amount: 100000000n, // 0.1 SOL in lamports
label: "Coffee Shop",
message: "Thanks for your order!"
});
console.log(url.toString());
// solana:merchant...?amount=0.1&label=Coffee%20Shop&message=...

Παράμετροι URL

ΠαράμετροςΤύποςΠεριγραφή
recipientAddressΔιεύθυνση wallet εμπόρου (απαιτείται)
amountbigintΠοσό σε lamports ή μικρές μονάδες token
splTokenAddressΔιεύθυνση mint του SPL token (παραλείψτε για SOL)
referenceAddress[]Μοναδική(-ές) αναφορά(-ές) για παρακολούθηση πληρωμών
labelstringΌνομα εμπόρου που εμφανίζεται στο wallet
messagestringΜήνυμα που εμφανίζεται πριν την πληρωμή
memostringOn-chain memo που επισυνάπτεται στη συναλλαγή

Πληρωμές με SPL token

Για πληρωμές με stablecoin, καθορίστε το token 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 SOL
reference: 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 source
document.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 purple
light: "#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 SOL
memo: "Coffee purchase"
}
);

Για tokens SPL, συμπεριλάβετε τη διεύθυνση mint:

const USDC_MINT = address("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
const transaction = await createTransfer(
client.rpc,
address(SENDER_WALLET_ADDRESS),
{
recipient: address(MERCHANT_WALLET_ADDRESS),
amount: 25000000n, // 25 USDC
splToken: USDC_MINT,
reference: [orderReference],
memo: "Order #12345"
}
);

Ανάλυση URLs

Επικυρώστε και εξαγάγετε δεδομένα από URLs Solana Pay:

import { parseURL, ParseURLError } from "@solana-commerce/solana-pay";
try {
const parsed = parseURL("solana:merchant...?amount=1.5&label=Store");
console.log(parsed.recipient); // Address
console.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?

Διαχειρίζεται από

© 2026 Ίδρυμα Solana.
Με επιφύλαξη παντός δικαιώματος.
Συνδεθείτε