Το 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 lamportslabel: "Coffee Shop",message: "Thanks for your order!"});console.log(url.toString());// solana:merchant...?amount=0.1&label=Coffee%20Shop&message=...
Παράμετροι URL
| Παράμετρος | Τύπος | Περιγραφή |
|---|---|---|
recipient | Address | Διεύθυνση wallet εμπόρου (απαιτείται) |
amount | bigint | Ποσό σε lamports ή μικρές μονάδες token |
splToken | Address | Διεύθυνση mint του SPL token (παραλείψτε για SOL) |
reference | Address[] | Μοναδική(-ές) αναφορά(-ές) για παρακολούθηση πληρωμών |
label | string | Όνομα εμπόρου που εμφανίζεται στο wallet |
message | string | Μήνυμα που εμφανίζεται πριν την πληρωμή |
memo | string | On-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 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"});
Για 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 USDCsplToken: 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); // 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?