Το 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 | Διεύθυνση πορτοφολιού εμπόρου (απαιτείται) |
amount | bigint | Ποσό σε lamports ή μικρότερες μονάδες token |
splToken | Address | Διεύθυνση mint token SPL (παραλείψτε για SOL) |
reference | Address[] | Μοναδική αναφορά(-ές) για παρακολούθηση πληρωμών |
label | string | Όνομα εμπόρου που εμφανίζεται στο πορτοφόλι |
message | string | Μήνυμα που εμφανίζεται πριν την πληρωμή |
memo | string | Υπόμνημα 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 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?