ستحصل في النهاية على مكوّن React يعرض رمز QR الخاص بـ سولانا Pay لدفعة بعملة USDC،
وينتظر وصول الدفعة، ويتحقق من أنها تطابق ما طلبته. تحتاج إلى Node.js 20 أو أحدث،
وتطبيق React أو Next.js (يكفي إنشاء
create-next-app جديد)، ومحفظة جوال مضبوطة على devnet. موّلها بعملة
USDC على devnet من faucet.circle.com وبعملة SOL على devnet
من faucet.solana.com لتغطية رسوم المعاملات.
@solana/pay قيد التجربة التجريبية حاليًا. قد تتغير واجهات برمجة التطبيقات قبل الإصدار المستقر.
1. تثبيت سولانا Pay
pnpm add @solana/pay@beta @solana/kit
2. إضافة رمز QR للدفع
ينشئ المكوّن مرجعًا فريدًا للطلب، ويضمّنه في رابط
طلب التحويل، ثم
يعرض الرابط على هيئة رمز QR. بعد ذلك يراقب وجود معاملة تتضمن
المرجع، ويتحقق من المستلم والمبلغ والرمز المميز قبل تعليم
الطلب على أنه مدفوع. اضبط MERCHANT_WALLET على عنوان تتحكم فيه:
"use client";import { useEffect, useRef, useState } from "react";import {address,createSolanaRpc,createSolanaRpcSubscriptions,generateKeyPair,getAddressFromPublicKey} from "@solana/kit";import {createQR,encodeURL,validateTransfer,watchReference} from "@solana/pay";const MERCHANT_WALLET = address("your-wallet-address");const USDC_DEVNET = address("4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU");const AMOUNT = 1;const rpc = createSolanaRpc("https://api.devnet.solana.com");const rpcSubscriptions = createSolanaRpcSubscriptions("wss://api.devnet.solana.com");export function Checkout() {const qrRef = useRef<HTMLDivElement>(null);const [signature, setSignature] = useState<string | null>(null);useEffect(() => {const abortController = new AbortController();async function startPayment() {const keyPair = await generateKeyPair();const reference = await getAddressFromPublicKey(keyPair.publicKey);const url = encodeURL({recipient: MERCHANT_WALLET,amount: AMOUNT,splToken: USDC_DEVNET,reference,label: "My Store",message: "Order #1001"});if (abortController.signal.aborted) return;if (qrRef.current) {qrRef.current.innerHTML = "";createQR(url, 300).append(qrRef.current);}const result = await watchReference(rpcSubscriptions, reference, {abortSignal: abortController.signal});if (result.err) throw new Error("Payment transaction failed");await validateTransfer(rpc, result.signature, {recipient: MERCHANT_WALLET,amount: AMOUNT,splToken: USDC_DEVNET,reference});setSignature(result.signature);}startPayment().catch((error) => {if (!abortController.signal.aborted) console.error(error);});return () => abortController.abort();}, []);if (signature) return <p>Payment confirmed: {signature}</p>;return <div ref={qrRef} />;}
تُحدَّد amount بوحدات الرمز المميز، لذا تطلب القيمة 1 مبلغ 1 USDC. احذف splToken
لطلب SOL بدلًا من ذلك.
3. استلام دفعة
شغّل تطبيقك، وامسح رمز QR بمحفظتك، ووافق على الدفعة. بمجرد تأكيد المعاملة واجتيازها التحقق، يعرض المكوّن توقيع المعاملة. هذا التوقيع هو إيصالك: ابحث عنه باستخدام getTransaction أو في أي مستكشف.
التحقق في المتصفح مناسب للعرض التجريبي. قبل تنفيذ الطلبات الحقيقية، تحقق من الدفعات على خادمك. راجع التحقق من المدفوعات.
إلى أين تذهب بعد ذلك
- سولانا Pay - طلبات التحويل، وطلبات المعاملات، وخيارات رمز QR
- كيف تعمل المدفوعات على سولانا - المحافظ، والعملات المستقرة، وtoken account، والرسوم
- التحقق من المدفوعات - تأكيد الدفعة من جانب الخادم قبل تنفيذ الطلب
- إرسال المدفوعات - المدفوعات والتحويلات من الواجهة الخلفية الخاصة بك
- الجاهزية للإنتاج - قبل تحريك الأموال الحقيقية
Is this page helpful?