Le Commerce Kit est actuellement en version bêta. Les API peuvent changer avant la version stable. Pour plus de détails, consultez la documentation du Commerce Kit .
Solana Pay est un protocole standard pour encoder les demandes de paiement sous forme d'URL. Ces URL peuvent être partagées sous forme de liens, encodées en codes QR pour les portefeuilles mobiles, ou utilisées pour construire des transactions de paiement de manière programmatique.
Le package @solana-commerce/solana-pay fournit l'encodage/analyse d'URL, la
génération de codes QR et la construction de transactions—compatible avec
@solana/kit.
Installation
pnpm add @solana-commerce/solana-pay
Créer des URL de paiement
Utilisez encodeURL pour créer une URL de protocole solana: que les
portefeuilles peuvent analyser :
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=...
Paramètres d'URL
| Paramètre | Type | Description |
|---|---|---|
recipient | Address | Adresse du portefeuille marchand (requis) |
amount | bigint | Montant en lamports ou unités mineures de jeton |
splToken | Address | Adresse de mint du jeton SPL (omettre pour SOL) |
reference | Address[] | Référence(s) unique(s) pour le suivi des paiements |
label | string | Nom du marchand affiché dans le portefeuille |
message | string | Message affiché avant le paiement |
memo | string | Mémo on-chain attaché à la transaction |
Paiements en jetons SPL
Pour les paiements en stablecoin, spécifiez le mint du jeton :
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"});
Suivi des paiements avec des références
Générez une référence unique pour identifier des paiements spécifiques :
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
Génération de codes QR
Utilisez createQR pour générer des codes QR scannables pour les portefeuilles
mobiles :
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;
Codes QR stylisés
Pour des codes QR personnalisés avec logos et style sur mesure :
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});
Construction de transactions
Utilisez createTransfer pour construire une transaction complète à signer :
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"});
Pour les jetons SPL, incluez l'adresse 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"});
Analyse d'URL
Validez et extrayez les données des URL 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?