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Διεύθυνση πορτοφολιού εμπόρου (απαιτείται)
amountbigintΠοσό σε lamports ή μικρότερες μονάδες token
splTokenAddressΔιεύθυνση mint token SPL (παραλείψτε για SOL)
referenceAddress[]Μοναδική αναφορά(-ές) για παρακολούθηση πληρωμών
labelstringΌνομα εμπόρου που εμφανίζεται στο πορτοφόλι
messagestringΜήνυμα που εμφανίζεται πριν την πληρωμή
memostringΥπόμνημα onchain που επισυνάπτεται στη συναλλαγή

Πληρωμές με 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.
Με επιφύλαξη παντός δικαιώματος.
Συνδεθείτε