Solana Pay

Solana Pay est un framework de paiement open-source qui permet des transactions instantanées, presque sans frais sur Solana.
Déjà adopté par des millions d'entreprises grâce à l'intégration avec Shopify, il transforme le commerce en éliminant complètement les intermédiaires de paiement traditionnels.
Fonctionnalités principales
Solana Pay se caractérise par :
Règlement direct : Les paiements vont directement des portefeuilles des clients à ceux des marchands en SOL ou n'importe quel jeton SPL. Pas de banques, de processeurs ou d'intermédiaires prenant une commission.
Finalité instantanée : Les fonds arrivent immédiatement après confirmation grâce au règlement quasi instantané de Solana.
Compatibilité universelle : Une seule implémentation fonctionne avec tous les portefeuilles et applications Solana.
Tout cela à travers deux types de requêtes fondamentales :
Requêtes de transfert (paiements simples)
URLs non interactives pour des transactions prédéterminées. Tout est encodé dans l'URL.
solana:mvines9iiHiQTysrwkJjGf2gb9Ex9jXJX8ns3qwf2kN?amount=0.01&spl-token=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1vRequêtes de transaction (paiements dynamiques)
URLs interactives qui composent des transactions complexes côté serveur.
Le portefeuille fait une requête HTTP à votre serveur, qui renvoie une transaction personnalisée construite avec des données en temps réel.
Options d'intégration
Solana Pay propose :
Codes QR : Paiements instantanés en personne
Liens partageables : Fonctionnent sur toutes les plateformes
Boutons intégrés : Expériences de paiement fluides
Flux personnalisés : Transactions multi-parties, accès conditionnels, signatures partielles
Pourquoi c'est important
Solana Pay remplace toute la pile de paiement traditionnelle par de simples URLs. Au lieu d'intégrer plusieurs portefeuilles et de gérer des flux de transactions complexes, vous créez des liens standardisés qui fonctionnent partout automatiquement.
Flux de paiement traditionnel : Client → Banque → Processeur de paiement → Votre banque → Vous (jours plus tard, moins les frais)
Flux de paiement Solana : Client → Vous (instantanément, frais quasi nuls)
Reference
Les références sont l'une des parties les plus importantes de la pile Solana Pay. Comme votre backend ne soumet pas de transactions au réseau mais renvoie uniquement des réponses de transaction que les portefeuilles signent, il n'y a pas de signatures de transaction pour aider à déterminer si le paiement a été effectué.
Une reference est une clé publique unique incluse comme compte non-signataire et non-inscriptible dans les transactions. Elle n'affecte pas le comportement de la transaction mais sert d'identifiant de suivi.
Voici le flux :
Générer une référence unique (clé publique) pour chaque demande de paiement
L'inclure dans vos URL de demande de transaction comme paramètre
L'ajouter à vos instructions de transaction comme compte non-signataire
Suivre la transaction en utilisant la référence
Vous pouvez utiliser la méthode RPC getSignaturesForAddress de Solana ou l'assistant findReference de la bibliothèque @solana/pay pour localiser les transactions contenant votre référence comme ceci :
useEffect(() => {
// Poll the network for transactions that include the reference address
const interval = setInterval(async () => {
try {
// Find transactions that include the reference address
const signatureInfo = await findReference(connection, reference, {
until: mostRecentNotifiedTransaction.current, // Only look for transactions after the most recent one we've found
finality: "confirmed",
});
// Update the most recent transaction with the transaction we just found
mostRecentNotifiedTransaction.current = signatureInfo.signature;
// Toast notification
displayToast(signatureInfo.signature);
} catch (e) {
if (e instanceof FindReferenceError) {
// No transaction found yet, ignore this error
return;
}
console.error("Unknown error", e);
}
}, 1000); // Check for new transactions every second
return () => {
clearInterval(interval);
};
}, [reference]);QR Code Generation
Transformez n'importe quelle demande de transaction en code QR scannable en utilisant la bibliothèque @solana/pay :
import { createQR, encodeURL, TransactionRequestURLFields } from '@solana/pay';
const urlParams: TransactionRequestURLFields = {
link: new URL("https://yourapi.com/pay"),
};
const solanaUrl = encodeURL(urlParams);
const qr = createQR(
solanaUrl,
400,
"transparent"
);