Solana Pay

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 lamports
label: "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ètreTypeDescription
recipientAddressAdresse du portefeuille marchand (requis)
amountbigintMontant en lamports ou unités mineures de jeton
splTokenAddressAdresse de mint du jeton SPL (omettre pour SOL)
referenceAddress[]Référence(s) unique(s) pour le suivi des paiements
labelstringNom du marchand affiché dans le portefeuille
messagestringMessage affiché avant le paiement
memostringMé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 SOL
reference: 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 source
document.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 purple
light: "#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 SOL
memo: "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 USDC
splToken: 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); // 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?

Table des matières

Modifier la page

Géré par

© 2026 Fondation Solana.
Tous droits réservés.
Restez connecté