برو به محتوای اصلی

معرفی پلتفرم پرداخت depay

yasin

DePay یک پلتفرم پرداخت مبتنی بر فناوری وب ۳ است که امکان انجام تراکنش‌های مالی مستقیم و امن را بر روی بلاک‌چین فراهم می‌کند. این پلتفرم با پشتیبانی از چندین بلاک‌چین، صدها کیف پول دیجیتال و هزاران توکن، به کاربران و کسب‌وکارها اجازه می‌دهد تا پرداخت‌های خود را بدون واسطه و به‌صورت غیرمتمرکز انجام دهند.

ویژگی‌های DePay:

  • پرداخت‌های درون‌زنجیره‌ای : تراکنش‌ها مستقیماً بر روی بلاک‌چین انجام می‌شوند، که امنیت و شفافیت بالایی را تضمین می‌کند.
  • پشتیبانی از چندین بلاک‌چین: DePay از بلاک‌چین‌های مختلفی مانند اتریوم، بایننس اسمارت چین، پالیگان، سولانا و دیگر شبکه‌ها پشتیبانی می‌کند.
  • یکپارچگی با کیف پول‌های متعدد: این پلتفرم با استانداردهایی مانند WalletConnect، Coinbase SDK، Solana Pay و Solana Mobile Wallet Adapter سازگار است و امکان استفاده از کیف پول‌های متنوع را فراهم می‌کند.
  • تبدیل خودکار توکن‌ها: DePay قابلیت تبدیل خودکار توکن‌ها را در هر پرداخت ارائه می‌دهد، به‌طوری‌که مشتریان می‌توانند با هر توکنی که در کیف پول خود دارند پرداخت کنند و پذیرندگان نیز توکن مورد نظر خود را دریافت نمایند.
  • پرداخت‌های غیرحضانتی : کاربران کنترل کامل بر دارایی‌های خود دارند و نیازی به واسطه‌های مالی نیست؛ بنابراین، خطرات مرتبط با کلاهبرداری و بازگشت تراکنش‌ها کاهش می‌یابد.
  • تجربه کاربری ساده: با استفاده از کیف پول‌های دیجیتال، پرداخت‌ها به‌صورت فوری و بدون نیاز به مراحل پیچیده انجام می‌شوند.

کاربردها:

  • کسب‌وکارهای آنلاین: فروشگاه‌های اینترنتی می‌توانند با استفاده از DePay پرداخت‌های رمزنگاری را به‌راحتی بپذیرند و تجربه خرید بهتری برای مشتریان خود فراهم کنند.
  • برنامه‌های غیرمتمرکز (DApps): توسعه‌دهندگان می‌توانند از DePay برای ادغام پرداخت‌های درون‌برنامه‌ای استفاده کنند.
  • پلتفرم‌های NFT: بازارهای NFT می‌توانند از قابلیت‌های پرداخت DePay برای تسهیل خرید و فروش آثار دیجیتال بهره‌مند شوند.

مزایا

پرداخت مستقیم از کیف پول
پرداخت‌ها با DePay همتا به همتا هستن؛ هر پرداخت مستقیماً وارد کیف پول شما می‌شه و هیچ واسطه‌ای در کار نیست. کنترل کامل پول همیشه دست خودتونه.

تبدیل خودکار
DePay از دیفای (DeFi) برای تبدیل پرداخت‌ها در صورت نیاز استفاده می‌کنه. این کار به شما امکان می‌ده هزاران توکن رو قبول کنید و همیشه همون توکنی رو که می‌خواید دریافت کنید.

پرداخت با یک کلیک
DePay مستقیم به کیف پول کاربر وصل می‌شه و توکن‌های موجود در همه بلاک‌چین‌ها رو بررسی می‌کنه. بعد کم‌هزینه‌ترین گزینه پرداخت رو پیشنهاد می‌ده و یه تجربه پرداخت Web3 راحت و سریع با یک کلیک رو فراهم می‌کنه.

شروع سریع
فقط کافیه یه بار DePay رو ادغام کنید تا بتونید پرداخت‌های رمزارزی رو در ۱۰ بلاک‌چین، صدها کیف پول، و هزاران توکن پشتیبانی کنید.

ادغام ساده
DePay طوری طراحی شده که خیلی راحت ادغام بشه. فقط یه تکه کد کوچک رو توی پروژه‌تون بذارید و آماده پذیرش و اجرای پرداخت‌های Web3 بشید.


پشتیبانی‌ ها

۱:بلاک‌چین‌ها

DePay در حال حاضر از بلاک‌چین‌های زیر پشتیبانی می‌کند


Solana
پرداخت‌ها روی شبکه Solana به طور متوسط ۱ ثانیه طول می‌کشه تا پردازش و تأیید بشن. هزینه هر تراکنش پرداخت در Solana برای کاربران به طور متوسط کمتر از ۰.۰۰۱ دلار است.

World Chain
پرداخت‌ها روی شبکه World Chain به طور متوسط ۳ ثانیه طول می‌کشه تا پردازش و تأیید بشن. هزینه هر تراکنش پرداخت در Gnosis به طور متوسط برای کاربران کمتر از ۰.۰۰۱ دلار است.

Arbitrum
پرداخت‌ها روی شبکه Arbitrum به طور متوسط ۱ ثانیه طول می‌کشه تا پردازش و تأیید بشن. هزینه هر تراکنش پرداخت در Arbitrum به طور متوسط برای کاربران کمتر از ۰.۰۱ دلار است.

Polygon
پرداخت‌ها روی شبکه Polygon به طور متوسط ۵ ثانیه طول می‌کشه تا پردازش و تأیید بشن. هزینه هر تراکنش پرداخت در Polygon به طور متوسط برای کاربران کمتر از ۰.۰۱ دلار است.

BNB Smart Chain
پرداخت‌ها روی شبکه BNB Smart Chain به طور متوسط ۵ ثانیه طول می‌کشه تا پردازش و تأیید بشن. هزینه هر تراکنش پرداخت در BNB Smart Chain به طور متوسط بین ۰.۰۵ تا ۰.۵۰ دلار برای کاربران است.

Ethereum
پرداخت‌ها روی شبکه Ethereum به طور متوسط ۱۸ ثانیه طول می‌کشه تا پردازش و تأیید بشن. هزینه هر تراکنش پرداخت در Ethereum به طور متوسط بین ۱ تا ۵۰ دلار برای کاربران است.

Avalanche
پرداخت‌ها روی شبکه Avalanche به طور متوسط ۴ ثانیه طول می‌کشه تا پردازش و تأیید بشن. هزینه هر تراکنش پرداخت در Avalanche به طور متوسط بین ۰.۰۳ تا ۰.۲۰ دلار برای کاربران است.

Fantom
پرداخت‌ها روی شبکه Fantom به طور متوسط ۴۰ ثانیه طول می‌کشه تا پردازش و تأیید بشن. هزینه هر تراکنش پرداخت در Fantom به طور متوسط بین ۰.۰۱ تا ۰.۰۸ دلار برای کاربران است.

Gnosis
پرداخت‌ها روی شبکه Gnosis به طور متوسط ۵ ثانیه طول می‌کشه تا پردازش و تأیید بشن. هزینه هر تراکنش پرداخت در Gnosis به طور متوسط کمتر از ۰.۰۰۱ دلار برای کاربران است.

Optimism
پرداخت‌ها روی شبکه Optimism به طور متوسط ۳ ثانیه طول می‌کشه تا پردازش و تأیید بشن. هزینه هر تراکنش پرداخت در Optimism به طور متوسط ۰.۰۰۱ دلار برای کاربران است.

Base
پرداخت‌ها روی شبکه Base به طور متوسط ۳ ثانیه طول می‌کشه تا پردازش و تأیید بشن. هزینه هر تراکنش پرداخت در Base به طور متوسط ۰.۰۱ دلار برای کاربران است.

۲:کیف پول‌ها

DePay از بیشتر کیف پول‌های کریپتو پشتیبانی می‌کند.

  • بیش از ۱۰۰ کیف پول دیگه از طریق استاندارد Ethereum Extension پشتیبانی می‌شن
  • بیش از ۱۰ کیف پول دیگه از طریق استاندارد Solana Extension پشتیبانی می‌شن
  • بیش از ۱۰ کیف پول دیگه از طریق Solana Mobile Wallet Adapter پشتیبانی می‌شن
  • بیش از ۲ کیف پول دیگه از طریق Solana Pay پشتیبانی می‌شن.
  • بیش از ۱۰۰ کیف پول دیگه از طریق WalletConnect پشتیبانی می‌شن.

استاندارد Ethereum Extension
DePay از استاندارد Ethereum Extension (window.ethereum) پشتیبانی می‌کنه و اون رو یکپارچه کرده.

WalletConnect
DePay از WalletConnect با استفاده از پل/رله اختصاصی WalletConnect نسخه ۱ و رله ابری WalletConnect نسخه ۲ پشتیبانی می‌کنه و اون رو یکپارچه کرده.

استاندارد Solana Extension
DePay از استاندارد Solana Extension (window.solana) پشتیبانی می‌کنه و اون رو به سیستمش اضافه کرده.

Solana Mobile Wallet Adapter
DePay از Solana Mobile Wallet Adapter استفاده می‌کنه تا بتونه راحت با کیف پول‌های موبایلی روی اندروید و Saga کار کنه.

Solana Pay
DePay از پروتکل Solana Pay که بر اساس کد QR هست، پشتیبانی می‌کنه.

۳:توکن‌های پشتیبانی‌شده

ببینید چه توکن‌هایی توسط DePay پشتیبانی می‌شن و توکن‌های سفارشی چه شرایطی باید داشته باشن.

چه توکن‌هایی پشتیبانی می‌شن؟
پروتکل پرداخت غیرمتمرکز و بدون نیاز به مجوز DePay از نظر فنی همه توکن‌هایی رو که شرایط لازم رو داشته باشن، پشتیبانی می‌کند.

شرایط
برای اینکه یک توکن توسط DePay پشتیبانی بشه، باید یک توکن استاندارد مثل ERC20 باشه. هرگونه تغییر یا اضافه کردن ویژگی‌ به استاندارد توکن، توسط DePay پشتیبانی نمی‌شه.

علاوه بر این، توکن باید شرایط زیر رو هم داشته باشه:

  • یه جفت (استخر نقدینگی) در یکی از صرافی‌های غیرمتمرکز پشتیبانی‌شده داشته باشه
  • یه جفت در توکن بسته‌بندی‌شده (wrapped) بومی بلاک‌چین مورد نظر (مثل WETH روی اتریوم یا WMATIC روی پالیگان) یا یه استیبل‌کوین پشتیبانی‌شده در بلاک‌چین مربوطه داشته باشه
  • حداقل ۱۰ هزار دلار نقدینگی داشته باشه

۴:صرافی‌های پشتیبانی‌شده

DePay در حال حاضر از صرافی‌های غیرمتمرکز زیر پشتیبانی می‌کند.


آماده‌سازی

برای دریافت پرداخت‌های Web۳ با DePay آماده بشید.

راه‌اندازی کیف پول
برای دریافت پرداخت در هر بلاک‌چین، باید کیف پولی داشته باشید که با اون بلاک‌چین سازگار باشه.

DePay از همه نوع کیف پول پشتیبانی می‌کنه؛ چه «کیف پول گرم» باشه، چه «کیف پول سرد»، لجر، کیف پول امانی، کیف پول صرافی متمرکز، یا کیف پول چندامضایی. DePay فرایند دریافت پرداخت رو مستقیم به کیف پول شما ساده می‌کنه.

انتخاب بلاک‌چین‌ها
بلاک‌چین‌ها از نظر سرعت، کاربرد (مثل تعداد کاربران فعال، توکن‌ها و نقدینگی) و امنیت با هم فرق دارن. پیشنهاد می‌کنیم خودتون تحقیق کنید و حداقل یک بلاک‌چین رو برای تنظیم DePay و دریافت پرداخت‌ها انتخاب کنید.

انتخاب توکن‌ها
بعد از انتخاب بلاک‌چین‌ها برای دریافت پرداخت، باید مشخص کنید که می‌خواید چه توکن‌هایی رو قبول کنید. با قابلیت تبدیل خودکار DePay، کاربران شما می‌تونن با هر توکنی که دارن پرداخت کنن، و شما فقط همون توکن‌هایی رو دریافت می‌کنید که از قبل انتخاب یا تنظیم کردید.


ادغام DePay

با انواع گزینه‌های ادغام DePay آشنا بشید.

مقایسه:

لینک: لینک‌های پرداخت نیازی به تجربه برنامه‌نویسی ندارن.

کافیه از رابط کاربری اپلیکیشن DePay استفاده کنید تا پرداخت رو تنظیم کنید.

در نهایت، یه لینک/آدرس دریافت می‌کنید که می‌تونید برای دریافت پرداخت‌ها ازش استفاده کنید.

حتی با اینکه این یه راه‌حل بدون کدنویسیه، باز هم می‌تونید اون رو با قابلیت کال‌بک و اتوماسیون ادغام کنید.

دکمه: دکمه‌های پرداخت کمی دانش HTML نیاز دارن.

برای این کار نیازی به دانش JavaScript نیست.

می‌تونید دکمه رو توی اپلیکیشن DePay تنظیم کنید و فقط کافیه یه مقدار HTML توی سایت‌تون بذارید تا پرداخت‌ها رو دریافت کنید.

دکمه DePay امکانات و ویژگی‌های کمتری نسبت به یکپارچه‌سازی با ویجت داره.

ویجت: برای یکپارچه‌سازی ویجت پرداخت DePay، نیاز به آشنایی پایه با JavaScript دارید.

ویجت‌های پرداخت به‌صورت خودکار روی سایت یا اپ شما اجرا می‌شن و به شما کنترل کامل روی روند کاربر می‌دن.

اپ DePay می‌تونه بهتون کمک کنه یه «پیکربندی پرداخت» معتبر بسازید و پرداخت‌ها رو به‌طور خودکار توی حساب‌تون پیگیری کنید.

مینی اپ (ساخته شده بر بستر World App)
ادغام DePay خیلی ساده‌ست.

پرداخت‌های رمزارزی راحت و بدون دردسر رو به مینی اپ خودتون (ساخته شده بر بستر World App) اضافه کنید.

با DePay شروع کنید و پرداخت‌های رمزارزی بدون دردسر رو به مینی اپ‌تون بسپارید!

اموزش انواع گزینه های ادغام

۱:لینک پرداخت Web۳

فقط یه لینک بسازید و برای کاربرها بفرستید.

نمونه
https://link.depay.com/201JapngwCukZzlvdZgR1K

روی موبایل
لینک‌های پرداخت DePay روی موبایل برای صفحه‌های کوچیک بهینه شدن و یه تجربه کاربری روان ارائه می‌دن. این لینک‌ها با کیف پول‌های موبایلی هماهنگ هستن، و مشتری‌ها می‌تونن با چند تا لمس ساده تراکنش رو تکمیل کنن.

روی دسکتاپ
لینک‌های پرداخت DePay روی دسکتاپ طراحی شیکی دارن و کار باهاشون خیلی راحت و سرراسته، که باعث می‌شه کاربرها راحت‌تر پرداخت کنن. این لینک‌ها امکان پرداخت از طریق افزونه‌های کیف پول کریپتو در مرورگر یا ایجاد کد QR برای انتقال راحت به کیف پول‌ها و دستگاه‌های موبایل رو فراهم می‌کنن.

ساخت لینک جدید
وارد اپ DePay بشید در https://app.depay.com، از مسیر Links > New Link، گزینه Payment Link رو انتخاب کنید و یه لینک پرداخت بسازید.

فروشنده (حساب کاربری)
نام و لوگوی حساب شما به‌عنوان هویت برندتون به مشتری‌ها نمایش داده می‌شه.

برای به‌روزرسانی نام حساب، رنگ برند یا لوگوی خودتون، به مسیر Account > Settings > Branding برید.

محصول
یه اسم برای محصول وارد کنید تا کاربرها بدونن دارن برای چی پرداخت می‌کنن.

می‌تونید یه تصویر هم برای نمایش محصول آپلود کنید.

توضیحات
اگه خواستید، می‌تونید یه توضیح هم اضافه کنید تا جزئیات خرید رو روشن‌تر کنید.

قیمت‌گذاری
می‌تونید قیمت محصولتون رو به ارز فیات یا ارز دیجیتال تعیین کنید.

ارز فیات
اگه قیمت محصول رو به ارز فیات تعیین کنید، باید قیمت رو به همون ارز وارد کنید. نرخ تبدیل به‌روز همون لحظه‌ای که مشتری برای پرداخت وارد لینک می‌شه، محاسبه می‌شه.

مثال

فرض کنید قیمت محصول رو به دلار تعیین کردید و قیمتش ۱۰ دلار هست. همچنین لینک رو تنظیم کردید تا پرداخت‌ها رو به ETH روی شبکه اتریوم دریافت کنید. وقتی مشتری برای پرداخت وارد لینک می‌شه، قیمت ETH برابر با ۱۵۰۰ دلار هست. پس مشتری باید ۰.۰۰۶۶۷ ETH به شما پرداخت کنه. تبدیل‌ها به‌صورت لحظه‌ای محاسبه و نمایش داده می‌شن.

ارز دیجیتال
اگه قیمت محصول رو به ارز دیجیتال تعیین کنید، باید قیمت محصول رو به ازای هر ارز دیجیتالی که به‌عنوان روش پرداخت قبول می‌کنید وارد کنید. نرخ تبدیل به‌صورت لحظه‌ای همون موقعی که مشتری برای پرداخت وارد لینک می‌شه محاسبه می‌شه.

مثال

فرض کنید قیمت محصول رو به ارزهای دیجیتال تعیین کردید و تنظیم کردید که USDC (کوین دلار توسط Circle) و USDT (تتر دلار) رو به‌عنوان پرداخت قبول کنید. قیمت محصول رو ۱۰ USDC و ۱۰ USDT تعیین کردید. وقتی مشتری برای پرداخت وارد لینک می‌شه، باید ۱۰ USDC یا ۱۰ USDT پرداخت کنه. تبدیل‌ها به‌صورت لحظه‌ای محاسبه و نمایش داده می‌شن.

تعداد
می‌تونید این امکان رو فعال کنید تا مشتری‌ها بتونن تعداد رو تنظیم کنن و محصولتون رو چند بار توی یه تراکنش بخرن.

مشتری‌ها بعداً می‌تونن موقع پرداخت یا تسویه‌حساب، تعداد مورد نظرشون رو خودشون تنظیم کنن.

مالیات (VAT)
می‌تونید نمایش مالیات بر ارزش افزوده رو روی لینک‌های پرداخت فعال کنید و نرخ مالیات رو هم خودتون تنظیم کنید.

نکته
قبل از فعال کردن گزینه «شامل مالیات»، مطمئن بشید که کشور حساب کاربری‌تون رو در مسیر Account > Settings > Billing تنظیم کردید.

مالیات (VAT) فقط به مشتری‌هایی نمایش داده می‌شه که تو همون کشوری هستن که ارائه‌دهنده خدمت قرار داره.

نکته
بسته به تنظیمات لینک شما، موارد زیر تعیین می‌کنن که آیا مالیات (VAT) نمایش داده بشه یا نه:

  • اگه جمع‌آوری آدرس یا کشور فعال نباشه، کشور محل مشتری از طریق IP شناسایی می‌شه.
  • اگه جمع‌آوری اطلاعات ارسال و صورت‌حساب فعال باشه، آدرس ارسال انتخاب‌شده مشتری در نظر گرفته می‌شه.
  • اگه جمع‌آوری اطلاعات صورت‌حساب فعال باشه، آدرس صورت‌حساب انتخاب‌شده مشتری در نظر گرفته می‌شه.
  • اگه جمع‌آوری اطلاعات کشور فعال باشه، کشور انتخاب‌شده مشتری در نظر گرفته می‌شه.

توکن‌ها
تعیین کنید که می‌خواید چه توکن‌هایی روی کدوم بلاک‌چین‌ها رو به‌عنوان روش پرداخت دریافت کنید.

احتیاط
پیشنهاد می‌کنیم فقط یک توکن برای هر بلاک‌چین تنظیم کنید. مطمئن بشید که برای هر بلاک‌چینی که می‌خواید پشتیبانی کنید، حداقل یک توکن انتخاب کرده باشید.

نکته
فقط توکن‌هایی رو که می‌خواید دریافت کنید، تنظیم کنید. با قابلیت تبدیل خودکار، مشتری‌ها می‌تونن به راحتی با هزاران توکن مختلف پرداخت کنن و برای هر تراکنش انعطاف و راحتی داشته باشن

دریافت‌کننده
آدرس‌هایی رو وارد کنید که قراره پرداخت‌ها رو دریافت کنن؛ برای هر توکن یک آدرس. اگه یه آدرس بتونه چند توکن رو دریافت کنه، می‌تونید از همون آدرس برای چند توکن استفاده کنید.

احتیاط
آدرس‌های وارد شده رو دوباره چک کنید، چون آدرس اشتباه ممکنه باعث از دست رفتن پرداخت‌ها بشه.

نکته
می‌تونید کیف‌پول‌هاتون رو مستقیماً از طریق تنظیمات حساب (Account > Settings > Wallets) مدیریت کنید، که اینطوری می‌تونید راحت کیف‌پول‌هاتون رو انتخاب کنید و نیازی به کپی و چسبوندن دستی آدرس‌ها نیست.

برندینگ و رنگ‌ها
می‌تونید یه رنگ اصلی انتخاب کنید که تو تجربه پرداخت استفاده بشه و حس برندتون رو حفظ کنه.

نکته
لینک‌های پرداخت به‌طور خودکار تنظیمات برند و رنگ رو از حساب شما می‌گیرن، که می‌تونید این تنظیمات رو در مسیر Account > Settings > Branding پیکربندی کنید.

جمع‌آوری اطلاعات
لینک‌های پرداخت این امکان رو به شما می‌ده که اطلاعات زیر رو از کاربران جمع‌آوری کنید:

  • نام کامل
  • ایمیل
  • آدرس
  • فقط آدرس صورت‌حساب
  • آدرس ارسال و صورت‌حساب
  • فقط کشور
  • فیلد های سفارشی

اطلاعات ارسالی (Payload)
اطلاعاتی که هنگام پرداخت وارد می‌شه، از طریق ویژگی payload در تراکنش‌ها منتقل می‌شه.

"payload": {

"full_name": "Mister Smith",
"email": "test@example.com",
"shipping_address": "Mr. Peter\n738 S. Wentworth Street\nBronx, NY 10466\nUS",
"shipping_address_data": {
  "full_name": "Mr. Peter",
  "address_line_1": "738 S. Wentworth Street",
  "postal_code": "NY 10466",
  "city": "Bronx",
  "state": "New York",
  "country": "US"
},
"billing_address": "Mr. Peter\n738 S. Wentworth Street\nBronx, NY 10466\nUS",
"billing_address_data": {
  "full_name": "Mr. Peter",
  "address_line_1": "738 S. Wentworth Street",
  "postal_code": "NY 10466",
  "city": "Bronx",
  "state": "New York",
  "country": "US"
},
"quantity": 5,
"custom_values": [
  { name: "Discord Name", value: "Ninja#123" },
  { name: "Age", value: 18 }
]

پیش‌پر کردن داده‌های فرم
اگه هنگام ساخت لینک گزینه «جمع‌آوری اطلاعات» رو انتخاب کنید، می‌تونید تمام فیلدهای فرم رو با پارامترهای GET پر کنید:

مثال:
https://link.depay.com/201JapngwCukZzlvdZgR1K?name=Max%20Musterman&country=CH

  • name: نام کامل فرستنده پرداخت
  • email: ایمیل فرستنده پرداخت
  • country: کد کشور (ISO 3166-1 alpha-2) فرستنده پرداخت
  • quantity: تعداد از پیش انتخاب‌شده برای آیتم

افزودن داده به Payload
می‌تونید با اضافه کردن پارامترهای GET به لینک پرداخت، داده‌هایی رو به عنوان payload تزریق کنید که بخشی از درخواست کال‌بک پرداخت بشه.

این کار به شما امکان می‌ده که کاربرها یا جلسات رو با شناسه خاص توی جریان پرداخت پیگیری کنید.

https://link.depay.com/6KFBECVsokSt0UKOAug8CI?payload[user_id]=1234567

یا چندین پارامتر

https://link.depay.com/6KFBECVsokSt0UKOAug8CI?payload[user_id]=1234567&payload[session_id]=89

این مقادیر به این شکل توی درخواست کال‌بک پرداخت ظاهر می‌شن:

  {    "payload": {      "injected": {        "user_id": 1234567,        "session_id": 89      }    }  }

این کار به شما امکان می‌ده که کاربرها یا جلسات رو با شناسه خاص توی جریان پرداخت پیگیری کنید.

باز کردن محتوا
می‌تونید محتوایی رو ذخیره کنید که فقط بعد از پرداخت موفق به مشتری نمایش داده بشه، مثل یه لینک به محتوای اضافی پولی.

به مشتری‌ها اطلاع داده می‌شه که با پرداخت، محتوا برای اون‌ها باز می‌شه، وقتی که لینک پرداخت رو باز می‌کنن.

بعد از اینکه مشتری پرداخت رو با موفقیت انجام بده، محتوا یا لینک براش نمایش داده می‌شه.

روند کاربر
تنظیم کنید که بعد از انجام و تأیید موفق پرداخت، چه اتفاقی بیفته:

  • نمایش تأیید پرداخت بدون هدایت کاربر به صفحه دیگه
  • هدایت کاربر به یک آدرس وب‌سایت که خودتون مشخص می‌کنید

تأییدیه ایمیلی
می‌تونید لینک‌های پرداخت رو طوری تنظیم کنید که بعد از پرداخت موفق، به‌صورت خودکار تأییدیه ایمیلی ارسال کنن:

  • ارسال تأییدیه به کاربرها
  • ارسال تأییدیه به خودتون

دریافت درخواست‌های کال‌بک
اگه سیستم‌های شما نیاز دارن از پرداخت‌های ورودی مطلع بشن (مثلاً برای اتوماسیون)، یه درخواست کال‌بک تنظیم کنید.

بعد از اینکه پرداخت با موفقیت انجام و تأیید شد، نقطه پایان کال‌بک که تنظیم کردید، درخواست زیر رو دریافت می‌کنه:

مثال:

is https://example.com/payments/depay/callback

POST https://example.com/payments/depay/callback
{  "status": "success",  "failed_reason": undefined,  "blockchain": "ethereum",  "transaction": "0xd4a9424440f6010af1bec311dda4e23d4f0016f4cc215da84a41650150ecb8b7",  "sender": "0x29b0d4cb9cFfEB360067199cf026dfD4854A8aB0",  "nonce": "1",  "receiver": "0x29b0d4cb9cFfEB360067199cf026dfD4854A8aB0",  "token": "0xa0bEd124a09ac2Bd941b10349d8d224fe3c955eb",  "decimals": 18,  "commitment": "confirmed",  "confirmations": 1,  "after_block": "13609144",  "amount": "822.5",  "fee_amount": undefined,  "fee_receiver": undefined,  "payload": {    "link_id": "xxNdddVnbN02f0Enrav8L"  },  "secret_id": "74417770-e6ac-4ae8-b027-0657600d7bad",  "callback": "https://webhook.site/74417770-e6ac-4ae8-b027-0657600d7bad",  "release": true,  "forward_to": "https://example.com/payments/depay/confirmation",  "forward_on_failure": false,  "confirmed_at": "2021-11-25T12:54:52.332Z",  "created_at": "2021-11-25T11:17:13.833Z",  "updated_at": "2021-11-25T12:54:52.334Z"}

کدهای پاسخ غیر از ۲۰۰ به‌عنوان کال‌بک ناموفق در نظر گرفته می‌شن و تا ۲۵ بار در حدود ۲۱ روز دوباره امتحان می‌شن.

کال‌بک‌های پرداخت ناموفق با تأخیر افزایشی دوباره امتحان می‌شن، بر اساس این فرمول:
(retry_count * 4) + 15 + (rand(30) * (retry_count + 1))
به‌عنوان مثال: ۱۵، ۱۶، ۳۱، ۹۶، ۲۷۱ ثانیه، به‌علاوه یک مقدار تصادفی زمان.

تأیید ارتباط
روی صفحه لینک‌تون در app.depay.com، وقتی گزینه «ارسال کال‌بک» رو فعال کنید، یک کلید عمومی مخصوص به شما داده می‌شه. این کلید رو در برنامه‌تون ذخیره و استفاده کنید تا مطمئن بشید که تمام ارتباطات از APIهای DePay به سیستم شما معتبر هستن.

APIهای DePay یک هدر x-signature همراه با تمام درخواست‌ها به سیستم شما ارسال می‌کنن.

از این هدر x-signature به‌همراه کلید عمومی ذخیره‌شده استفاده کنید تا مطمئن بشید که درخواست معتبره.

DePay از RSA-PSS با طول نمک ۶۴ و SHA256 برای امضای بدنه درخواست‌ها استفاده می‌کنه. امضا هم به‌صورت base64 و به شکل URL-encoded از طریق هدر x-signature ارسال می‌شه.

از پکیج verify-js-signature DePay برای جاوااسکریپت و Node استفاده کنید.

import { verify } from '@depay/js-verify-signature'let verified = await verify({  signature: req.headers['x-signature'],  data: JSON.stringify(req.body),  publicKey,});if(!verified){ throw('Request was not authentic!') }
  • Ruby
public_key = OpenSSL::PKey::RSA.new(STORED_PUBLIC_KEY)signature_decoded = Base64.urlsafe_decode64(request.headers["X-Signature"])data = request.raw_postverified = public_key.verify_pss(  "SHA256",  signature_decoded,  data,  salt_length: :auto,  mgf1_hash: "SHA256")raise 'Request was not authentic' unless verified
  • PHP
use phpseclib3\Crypt\RSA;use phpseclib3\Crypt\PublicKeyLoader;$signature = $request->get_header('x-signature');$signature = str_replace("_","/",  $signature);$signature = str_replace("-", "+",  $signature);$key = PublicKeyLoader::load($public_key)->withHash('sha256')->withPadding(RSA::SIGNATURE_PSS)->withMGFHash('sha256')->withSaltLength(64);if( !$key->verify($request->get_body(), base64_decode($signature)) ) {  throw new Exception("Request was not authentic");}

تخفیف‌ها
می‌تونید به لینک پرداختتون تخفیف اضافه کنید.

درصد تخفیف رو تنظیم کنید و شرایط لازم برای اعمال تخفیف رو انتخاب کنید.

  • گزینه "Enters Code" رو انتخاب کنید تا تخفیف به مشتریانی داده بشه که کد تخفیف وارد می‌کنن.
  • گزینه "Owns Token" رو انتخاب کنید تا تخفیف به مشتریانی که توکن مشخصی دارن، داده بشه.
  • گزینه "Owns NFT" رو انتخاب کنید تا تخفیف به مشتریانی که NFT خاصی دارن، اعمال بشه

ادغام
بعد از وارد کردن همه اطلاعات لازم، اپلیکیشن یه لینک پرداخت برای شما ایجاد می‌کنه که می‌تونید ازش استفاده کنید.

کاربرهاتون رو به این لینک بفرستید تا پرداخت‌ها رو طبق تنظیمات انجام بدن.

ارسال پارامترها
اگه برای لینک‌تون یه ریدایرکت تنظیم کرده باشید، هر پارامتر GET که همراه لینک باشه، به سیستم شما ارسال می‌شه. این کار به شما اجازه می‌ده که بعضی از پارامترها رو از طریق لینک پرداخت به سیستم‌تون منتقل کنید.

پارامترهای GET مربوط به payload بعد از ریدایرکت ارسال نمی‌شن؛ فقط برای اضافه کردن اطلاعات به کال‌بک استفاده می‌شن.

مثال
ریدایرکت به آدرس https://example.com?step=confirmation تنظیم شده.

شما پارامتر GET زیر رو هنگام ارسال کاربرها به لینک پرداخت اضافه می‌کنید:

https://link.depay.com/xxNdddVnbN02f0Enrav8?user=123

بعد از پرداخت موفق، کاربرها به این آدرس هدایت می‌شن:

https://example.com?user=123&step=confirmation

قطعیت
DePay دو سطح تأیید متفاوت برای اعتبارسنجی پرداخت‌ها داره که بر اساس مقدار تراکنش و ویژگی‌های بلاک‌چین تنظیم می‌شه. پرداخت‌های کمتر از ۱,۰۰۰ دلار بعد از یک تأیید بلاک به عنوان «تأییدشده» شناخته می‌شن. اما برای پرداخت‌های ۱,۰۰۰ دلار یا بیشتر، وضعیت «نهایی‌شده» داده می‌شه که بسته به بلاک‌چین مورد استفاده، به تعداد بیشتری تأیید بلاک نیاز داره.


۲:دکمه پرداخت Web3

با یه کلیک پرداخت‌ها رو دریافت کنید.

دکمه پرداخت Web3 DePay این امکان رو می‌ده که پرداخت‌های Web3 رو مستقیم بپذیرید، بدون نیاز به تجربه در جاوااسکریپت. فقط کافیه HTML دکمه ما رو استفاده کنید تا ویجت پرداخت رو باز کنه و از تنظیمات پرداخت شما استفاده کنه.

مثال:

<div  class="DePayButton"  label="Pay"  integration="1f517a0d-5bf3-4095-a096-c6b11d8e4d91"  blockchains='["ethereum","bsc","polygon","solana","gnosis","fantom","avalanche","arbitrum","optimism","base"]'></div><script src="https://integrate.depay.com/buttons/v12.js"></script><noscript><a href="https://depay.com">Web3 Payments</a> are only supported with JavaScript enabled.</noscript><script>DePayButtons.init({document: document});</script>

نمونه‌های ادغام
مستقیم برید سراغ نمونه‌های ادغام برای فریم‌ورک‌ها و پلتفرم‌های رایج.

  • Express

https://github.com/DePayFi/buttons-example-express-js

  • Next.js

https://github.com/DePayFi/buttons-example-next-js

ساخت دکمه
به آدرس https://app.depay.com/dev/integrations برید و روی «New Integration» کلیک کنید.

حتماً گزینه «Payment Button» رو برای ادغام انتخاب کنید.

برای ادغام یه نام بزارید تا بعداً راحت بتونید شناساییش کنید.

تنظیم قیمت
قیمتی رو که باید پرداخت بشه وارد کنید.

اگه نیاز به قیمت‌گذاری پویا دارین، ادامه بدید و بخونید که چطور تنظیمات پویا رو راه‌اندازی کنید.

اگه نیازی به این تنظیم ندارید، با غیرفعال کردن تنظیمات پویا ادامه بدید.

تعیین قیمت به ارز فیات
اگه قیمت رو به یه ارز خاص تنظیم کنید، نرخ‌های لحظه‌ای اعمال می‌شن تا مطمئن بشید مبلغی که از توکن‌های قبول‌شده دریافت می‌کنید با قیمت تنظیم‌شده ارز شما تطابق داره.

تعیین قیمت به توکن‌ها
اگه قیمت رو به توکن‌ها تعیین کنید، دقیقاً همون مقدار مشخص‌شده از هر توکن رو دریافت می‌کنید.

توکن‌ها/بلاک‌چین‌های قبول‌شده
توکن‌هایی رو که می‌خواید به‌عنوان روش پرداخت قبول کنید انتخاب کنید. برای هر توکن انتخاب‌شده، حتماً یه آدرس کیف پول دریافت‌کننده ارائه بدید.

قراردادن HTML دکمه
حالا می‌تونید کد ادغام رو توی اپلیکیشن خودتون بذارید و ویجت پرداخت DePay رو باز کنید:

<div  class="DePayButton"  label="Pay"  integration="1f517a0d-5bf3-4095-a096-c6b11d8e4d91"  blockchains='["ethereum","bsc"]'></div><script src="https://integrate.depay.com/buttons/v12.js"></script><noscript><a href="https://depay.com">Web3 Payments</a> are only supported with JavaScript enabled.</noscript><script>DePayButtons.init({document: document});</script>

ریدایرکت بعد از پرداخت
آدرس URL‌ای رو وارد کنید که بعد از پرداخت موفق، کاربرها به اون هدایت بشن.

اگه نیاز به تنظیم ریدایرکت پویا دارید، ادامه بدید و بخونید که چطور تنظیمات پویا رو راه‌اندازی کنید.

تنظیم کال‌بک‌ها
یه نقطه پایان (endpoint) تنظیم کنید تا بعد از هر پرداخت موفق فراخوانی بشه.

کال‌بک‌ها یک درخواست POST به URL مشخص‌شده ارسال می‌کنن.

حتماً یه URL با HTTPS ارائه بدید.

بدنه درخواست کال‌بک به شکل زیر خواهد بود:

{  "blockchain": "polygon",  "transaction": "0x053279fcb2f52fd66a9367416910c0bf88ae848dca769231098c4d9e240fcf56",  "sender": "0x317D875cA3B9f8d14f960486C0d1D1913be74e90",  "receiver": "0x08B277154218CCF3380CAE48d630DA13462E3950",  "token": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F",  "amount": "0.0985",  "payload": null,  "after_block": "46934392",  "commitment": "confirmed",  "confirmations": 1,  "created_at": "2023-08-30T11:37:30.157555Z",  "confirmed_at": "2023-08-30T11:37:35.492041Z"}

احتیاط
مطمئن بشید که نقطه پایان کال‌بک شما با کد ۲۰۰ پاسخ می‌ده، وگرنه ویجت کاربر رو آزاد نمی‌کنه. جریان پرداخت رو ببینید.

نکته
فقط پرداخت‌های موفق به کال‌بک تنظیم‌شده ارسال می‌شن.

نکته
درخواست‌های کال‌بک برای پاسخ‌های ناموفق (کد پاسخ غیر از ۲۰۰) با تأخیر افزایشی دوباره امتحان می‌شن، بر اساس این فرمول:
(retry_count * 4) + ۱۵ + (rand(30) * (retry_count + 1))
یعنی ۱۵، ۱۶، ۳۱، ۹۶، ۲۷۱ ثانیه به‌علاوه یه مقدار تصادفی زمان.

در مجموع ۲۵ بار و در حدود ۲۱ روز دوباره امتحان می‌شه.

هدایت کاربر
اگه می‌خواهید بعد از دریافت کال‌بک به‌طور پویا کاربرها رو هدایت کنید، آدرس مورد نظر رو با استفاده از forward_to در پاسخ کال‌بک ارائه بدید:

{  "forward_to": "https://example.com/depay/success/1212391238123"}

تنظیم رویدادها
اگه می‌خواهید سیستم‌های شما در جریان رویدادهای مختلف در جریان پرداخت قرار بگیرن، یه آدرس endpoint رویداد برای ادغام‌تون روی https://app.depay.com تنظیم کنید.

بعد از تنظیم، درخواست‌های رویداد یک POST به URL مشخص‌شده ارسال می‌کنن.

حتماً یه URL با HTTPS ارائه بدی

بدنه درخواست رویداد به شکل زیر خواهد بود:

{  "status": "attempt",  "blockchain": "polygon",  "transaction": "0x053279fcb2f52fd66a9367416910c0bf88ae848dca769231098c4d9e240fcf56",  "sender": "0x317D875cA3B9f8d14f960486C0d1D1913be74e90",  "receiver": "0x08B277154218CCF3380CAE48d630DA13462E3950",  "token": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F",  "amount": "0.0985",  "payload": null,  "after_block": "46934392",  "commitment": "confirmed",  "confirmations": 1,  "created_at": "2023-08-30T11:37:30.157555Z",  "confirmed_at": "2023-08-30T11:37:35.492041Z"}

وضعیت می‌تونه یکی از این چهار حالت باشه: attempt (تلاش)، processing (در حال پردازش)، failed (ناموفق) یا succeeded (موفق).

نکته
درخواست‌های رویداد برای پاسخ‌های ناموفق (کد پاسخ غیر از ۲۰۰) با تأخیر افزایشی دوباره امتحان می‌شن، بر اساس فرمول:
(retry_count * 4) + ۱۵ + (rand(30) * (retry_count + 1))
یعنی ۱۵، ۱۶، ۳۱، ۹۶، ۲۷۱ ثانیه به‌علاوه یه مقدار تصادفی زمان.

این کار تا ۲۵ بار و در حدود ۲۱ روز انجام می‌شه.

تأیید ارتباط
کلید عمومی‌ای که برای ادغام شما در app.depay.com ارائه شده رو کپی کنید، ذخیره کنید و ازش توی برنامه‌تون استفاده کنید تا مطمئن بشید که تمام ارتباطات از APIهای DePay به سیستم شما معتبره.

در تمام درخواست‌های ارسال‌شده به سیستم شما، APIهای DePay یه هدر x-signature اضافه می‌کنن.

از این هدر x-signature به‌همراه کلید عمومی ذخیره‌شده استفاده کنید تا درخواست رو تأیید کنید که معتبره.

DePay از RSA-PSS با طول نمک ۶۴ و SHA256 برای امضای بدنه درخواست‌ها استفاده می‌کنه. امضا به‌صورت base64 و به شکل URL-encoded از طریق هدر x-signature ارسال می‌شه

از پکیج verify-js-signature DePay برای جاوااسکریپت و Node استفاده کنید.

  • JavaScript
import { verify } from '@depay/js-verify-signature'let verified = await verify({  signature: req.headers['x-signature'],  data: JSON.stringify(req.body),  publicKey,});if(!verified){ throw('Request was not authentic!') }
  • Ruby
public_key = OpenSSL::PKey::RSA.new(STORED_PUBLIC_KEY)signature_decoded = Base64.urlsafe_decode64(request.headers["X-Signature"])data = request.raw_postverified = public_key.verify_pss(  "SHA256",  signature_decoded,  data,  salt_length: :auto,  mgf1_hash: "SHA256")raise 'Request was not authentic' unless verified
  • Python
from cryptography.hazmat.primitives import hashes, serializationfrom cryptography.hazmat.primitives.asymmetric import paddingimport base64# Load the public keypublic_key = serialization.load_pem_public_key(PUBLIC_KEY.encode('utf-8'))# Decode the signature from the headerssignature_decoded = base64.urlsafe_b64decode(request.headers["X-Signature"])# Get the raw post data (make sure it's not parsed data!)data = request.body# Verify the signaturetry:    public_key.verify(        signature_decoded,        data,        padding.PSS(            mgf=padding.MGF1(hashes.SHA256()),            salt_length=padding.PSS.MAX_LENGTH        ),        hashes.SHA256()    )except InvalidSignature:    raise ValueError('Request was not authentic')
  • PHP
use phpseclib3\Crypt\RSA;use phpseclib3\Crypt\PublicKeyLoader;$signature = $request->get_header('x-signature');$signature = str_replace("_","/",  $signature);$signature = str_replace("-", "+",  $signature);$key = PublicKeyLoader::load($public_key)->withHash('sha256')->withPadding(RSA::SIGNATURE_PSS)->withMGFHash('sha256')->withSaltLength(64);if( !$key->verify($request->get_body(), base64_decode($signature)) ) {  throw new Exception("Request was not authentic");}

محدود کردن دامنه‌ها
ادغام‌ها فقط اجازه استفاده و قرار گرفتن روی وب‌سایت‌هایی رو دارن که در دامنه‌های مشخص‌شده میزبانی بشن.

اگه هیچ دامنه‌ای وارد نکنید، محدودیت دامنه غیرفعال می‌مونه.

ولی به محض اینکه حتی یک دامنه رو وارد کنید، محدودیت فعال می‌شه.

باید هر دامنه و زیردامنه‌ای که می‌خواید پشتیبانی بشه رو جداگانه وارد کنید.

مثلاً: example.com، www.example.com، pay.example.com.

پیکربندی پویا
برای ارسال پیکربندی پویا به دکمه، مثل تعیین قیمت‌های متغیر یا تنظیم ریدایرکت پویا بعد از پرداخت موفق، باید پیکربندی پویا رو برای ادغام مشخص‌شده فعال کنید.

بعد از فعال‌سازی، پیکربندی پویا که از طریق یک API از سیستم شما ارسال می‌شه، باید یه پیکربندی معتبر برای ویجت برگردونه. این پیکربندی حداقل باید جزئیات پرداخت‌های قبول‌شده رو شامل بشه، مثل بلاک‌چین‌ها، توکن‌ها، مقدار و گیرنده.

احتیاط
مطمئن بشید که تنظیمات ویجت رو از طریق API مشخص‌شده‌تون ارائه می‌دید. "accept" رو مستقیم از سمت فرانت‌اند به ویجت ارسال نکنید.

تنظیم نقطه پایان
اول باید یه URL با HTTPS مشخص کنید که هر بار کسی قصد پرداخت داره، ادغام به اون آدرس درخواست بفرسته.

احتیاط
نقطه پایان باید تنظیمات پویا رو در کمتر از ۲ ثانیه پاسخ بده، وگرنه درخواست‌ها رد می‌شن و ویجت بارگذاری نمی‌شه.

ایجاد کلید خصوصی/عمومی
درست مثل روشی که APIهای DePay برای اطمینان از معتبر بودن درخواست‌ها به سیستم شما از امضای رمزنگاری RSA-PSS استفاده می‌کنن، شما هم باید از همین روش برای تنظیمات پویا استفاده کنید.

برای شروع امضای پاسخ‌های تنظیمات پویا، اول یه کلید خصوصی ایجاد کنید.

مطمئن بشید که OpenSSL رو نصب کردید تا بتونید کلیدهای خصوصی رو ایجاد کنید.

OpenSSL رو نصب کنید

بهترین روش اینه که از Homebrew استفاده کنید.

  • macOS
brew updatebrew install openssl
  • Debian/Ubuntu
sudo apt updatesudo apt install openssl

ایجاد کلید خصوصی

openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048

هشدار
حتماً بالاترین استانداردهای امنیتی رو هنگام کار با کلیدهای خصوصی رعایت کنید. هرگز کلید خصوصی رو به اشتراک نذارید یا عمومی نکنید.

ایجاد کلید عمومی

openssl rsa -pubout -in private_key.pem -out public_key.pem

ذخیره کلید عمومی
حالا محتوای فایل public_key.pem (نه کلید خصوصی!) رو بردارید و با ادغام‌تون در https://app.depay.com ذخیره کنید.

فرمت کلید عمومی به این شکل هست:

-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4PlPK+oM4nQX5TcmnWAEUMtd5hL8irx1Fbmwtpg4P7aQA1Y7RJ7/JwEMKs4+kJcgSQqqBoil+YgP2WSGtDnpar4jIFIPDWY+eWBe3kGqqse+OxyuVMG/k4iMyQG7wB/9l4gY2udi6qciBiSDlNpocs7X+zPrnL1jaO9C85yaEBAe4qpRUXhyjZ32DfduDeCP7p2O+cNHXzNwppsWApnEL8LOX/UkSlSaduJL2pOEv3zcTupOo38fds7V3MmqaxJfMfH9mWMbvVPfEJ2eeEx6GKnXhyKyW3MH69iEFCrFgAEk/HKI2bAck4DOyh5wVD4bdks0a9cXRWHI747auCeZsQIDAQAB-----END PUBLIC KEY-----

ادغام پاسخ‌ها
بعد از تنظیم یک نقطه پایان و ثبت کلید عمومی در ادغام، می‌تونید نقطه پایان خودتون رو طوری تنظیم کنید که تنظیمات پویا رو برگردونه.

درخواست‌های ورودی
درخواست‌های ورودی شامل هدرهای زیر خواهند بود:

Accept: application/json,application/vnd.api+jsonAccept-Charset: utf-8Content-Type: application/json; charset=utf-8X-Signature: 0Lt-bOwigLB_tPzWev5Iwe1YeWFWQ1fTi31wolfisWXuSKfuj53MujGfxkDli_A3R4IgFpgfEF6KmU1tDqYn2bId2HiFG6MYf5v25bhLscJnwAlGyVYMVmnxYyuPYsHMTZvZx61LSxC52TavRw4LN5wq9ux4nw4B30rnqCAaYKAZcUgpKgUwsMRToY0D8AwwW2mkkFk5rJKdx0LAnhz0dpGx5b5lc1v7UbcdzvteU8PBzyXcT2hQ-lMo8dTcdFM6tr_xJRrlxEOzeAKB3b2EfOKS_H9AtzICXT-NGc-HvgWKI56NURAheJweKdAvV7AF5atWTjSLnTFAHFl4NkLFsg==

حتماً هدر x-signature ورودی رو بررسی کنید تا از معتبر بودن درخواست مطمئن بشید

پاسخ ساده
پاسخ‌ها باید به فرمت JSON باشن.

یک پاسخ ساده شامل تنظیمات پایه ویجت هست که فهرست توکن‌های پذیرفته‌شده برای پرداخت رو مشخص می‌کنه. در تنظیمات پایه، پرداخت‌ها به صورت توکن تعیین می‌شن:

{  "accept": [    {      "blockchain": "ethereum",      "amount": 20,      "token": "0xdac17f958d2ee523a2206206994597c13d831ec7",      "receiver": "0x4e260bB2b25EC6F3A59B478fCDe5eD5B8D783B02"    }  ]}

این تنظیم ۲۰ USDT روی بلاک‌چین اتریوم رو به آدرس 0x4e260bB2b25EC6F3A59B478fCDe5eD5B8D783B02 به‌عنوان پرداخت قبول می‌کنه.

نکته
هنگام کار با DePay همیشه مقدارها رو به‌صورت خوانا برای انسان ارسال کنید (نه به صورت BigNumber).

برای درک بیشتر نحوه عملکرد تنظیمات ویجت، به مستندات ویجت مراجعه کنید.

امضای پاسخ
برای ارتباط امن، DePay استفاده از RSA-PSS رو برای امضای پاسخ شما لازم می‌دونه. باید طول نمک رو ۶۴ تعیین کنید و از الگوریتم هش SHA256 استفاده کنید. بعد از امضا، مطمئن بشید که امضا رو به فرمت base64 و به‌صورت URL-safe کدگذاری کرده و از طریق هدر x-signature ارسال می‌کنید.

X-Signature: 0Lt-bOwigLB_tPzWev5Iwe1YeWFWQ1fTi31wolfisWXuSKfuj53MujGfxkDli_A3R4IgFpgfEF6KmU1tDqYn2bId2HiFG6MYf5v25bhLscJnwAlGyVYMVmnxYyuPYsHMTZvZx61LSxC52TavRw4LN5wq9ux4nw4B30rnqCAaYKAZcUgpKgUwsMRToY0D8AwwW2mkkFk5rJKdx0LAnhz0dpGx5b5lc1v7UbcdzvteU8PBzyXcT2hQ-lMo8dTcdFM6tr_xJRrlxEOzeAKB3b2EfOKS_H9AtzICXT-NGc-HvgWKI56NURAheJweKdAvV7AF5atWTjSLnTFAHFl4NkLFsg==

احتیاط
مطمئن بشید که پاسخ رو به‌صورت رشته‌ای امضا می‌کنید و رشته JSON هیچ خط شکنی (\n) یا فاصله اضافی نداشته باشه.

Node

const { Buffer } = require("node:buffer");import crypto from 'node:crypto';const privateKeyString = process.env.MY_PRIVATE_KEY;const privateKey = crypto.createPrivateKey(privateKeyString);const configuration = {  /// your dynamic configuration}const dataToSign = JSON.stringify(configuration);const signature = crypto.sign('sha256', Buffer.from(dataToSign), {  key: privateKey,  padding: crypto.constants.RSA_PKCS1_PSS_PADDING,  saltLength: 64,});const urlSafeBase64Signature = signature.toString('base64')  .replace('+', '-')  .replace('/', '_')  .replace(/=+$/, '');res.setHeader('x-signature', urlSafeBase64Signature);return JSON.stringify(configuration) // make sure to return JSON without line-breaks (\n) or unnessary whitespace

Ruby / Rails

private_key = OpenSSL::PKey::RSA.new(ENV['MY_PRIVATE_KEY'])signature = private_key.sign_pss("SHA256", response.to_json, salt_length: 64, mgf1_hash: "SHA256")headers['x-signature'] = Base64.urlsafe_encode64(signature)

Python

from cryptography.hazmat.primitives import hashes, serializationfrom cryptography.hazmat.primitives.asymmetric import paddingimport base64import jsonimport os# Load the private keyprivate_key_bytes = os.environ['MY_PRIVATE_KEY'].encode('utf-8')private_key = serialization.load_pem_private_key(private_key_bytes, password=None)# Sign the response dataresponse_data = json.dumps(response).encode('utf-8')signature = private_key.sign(    response_data,    padding.PSS(        mgf=padding.MGF1(hashes.SHA256()),        salt_length=64    ),    hashes.SHA256())# Set the signature in the headersheaders['x-signature'] = base64.urlsafe_b64encode(signature).decode('utf-8')

تعیین واحد پول
برای تعیین پرداخت‌های پذیرفته‌شده به یه ارز مثل USD، EUR و غیره، از ویژگی amount استفاده کنید. ادغام به‌طور خودکار مقادیر هر توکن پذیرفته‌شده مشخص‌شده رو محاسبه و اعمال می‌کنه.

{  "amount": {    "currency": "USD",    "fix": 100  },  "accept": [    {      "blockchain": "ethereum",      "token": "0xdac17f958d2ee523a2206206994597c13d831ec7",      "receiver": "0x4e260bB2b25EC6F3A59B478fCDe5eD5B8D783B02"    },    {      "blockchain": "ethereum",      "token": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",      "receiver": "0x4e260bB2b25EC6F3A59B478fCDe5eD5B8D783B02"    }  ]}

این تنظیم ۱۰۰ دلار آمریکا به ارزش USDT یا اتریوم (توکن اصلی اتریوم) رو به آدرس 0x4e260bB2b25EC6F3A59B478fCDe5eD5B8D783B02 به‌عنوان پرداخت قبول می‌کنه.

نکته
آدرس 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE نماینده توکن اصلی هر شبکه بلاک‌چین هست، مثلاً اتریوم در Ethereum، BNB در BSC، و Matic در Polygon و غیره.

ارسال اطلاعات (Passthrough Payload)
اگه پیکربندی پویا شما به داده‌هایی که در ابتدا به دکمه (در فرانت‌اند) داده شده وابسته باشه و این داده‌ها باید به بک‌اند شما منتقل بشن تا پیکربندی پویا تعیین بشه، payload رو هنگام راه‌اندازی به دکمه ارسال کنید.

<div  class="DePayButton"  label="Pay"  integration="1f517a0d-5bf3-4095-a096-c6b11d8e4d91"  blockchains='["ethereum","bsc"]'  payload='{"items":[{"id": 1, "amount": 2}, {"id": 2, "amount": 1}]}'></div>

با این کار، payload هنگام فراخوانی نقطه پایانی تنظیم‌شده شما شامل می‌شه. حالا بدنه درخواست که به نقطه پایان شما ارسال می‌شه شامل موارد زیر خواهد بود:

{  "items": [    {      "id": 1,      "amount": 2    },{      "id": 2,      "amount": 1    }  ]}

جریان کاربر/ریدایرکت پویا
برای موقعیت‌هایی که نیاز به ریدایرکت کاربران به URLهای پویا دارن — که می‌تونه برای هر رویداد پرداخت متفاوت باشه، مثل هدایت کاربران به صفحات تأیید مختلف — از پارامتر forward_to توی پاسخ پیکربندی پویا استفاده کنید

{    "forward_to": "https://example.com/depay/success/1212391238123"}

قطعیت پرداخت
DePay دو سطح تأیید مختلف برای اعتبارسنجی پرداخت‌ها داره که بر اساس ارزش تراکنش و ویژگی‌های بلاک‌چین تنظیم می‌شه. پرداخت‌های زیر ۱,۰۰۰ دلار بعد از یک تأیید بلاک به عنوان «تأییدشده» شناخته می‌شن. اما برای پرداخت‌های ۱,۰۰۰ دلار یا بیشتر، وضعیت «نهایی‌شده» داده می‌شه که بسته به بلاک‌چین استفاده‌شده، نیاز به تأیید‌های بیشتری داره


۳:ویجت پرداخت Web3

به‌صورت مستقل میزبان باشید و کل جریان پرداخت رو داخل اپ خودتون کنترل کنید.

نمونه‌های ادغام
مستقیم برید سراغ نمونه‌های ادغام برای فریم‌ورک‌ها و پلتفرم‌های رایج

  • Express

https://github.com/DePayFi/widgets-example-express-js

  • Next.js

https://github.com/DePayFi/widgets-example-next-js

نصب

پکیج
می‌تونید ویجت‌های DePay رو با استفاده از yarn یا npm نصب کنید و به‌عنوان بخشی از اپلیکیشن خودتون بیارید

  • Yarn
yarn add @depay/widgets
  • NPM
npm install @depay/widgets --save

حتماً وابستگی‌های همتای ویجت‌های DePay رو هم نصب کنید، اگه پروژه‌تون هنوز اون‌ها رو نصب نکرده.

  • Yarn
yarn add ethers react react-dom
  • NPM
npm install ethers react react-dom --save

CDN
اگه نمی‌خواید پکیج رو نصب کنید یا ویجت‌های DePay رو به‌عنوان بخشی از اپلیکیشن‌تون بیارید، می‌تونید DePay Widgets رو از طریق CDN بارگذاری کنید:

<script defer async src="https://integrate.depay.com/widgets/v12.js"></script>

ایجاد ادغام
به آدرس https://app.depay.com/dev/integrations برید و روی «New Integration» کلیک کنید.

حتماً گزینه «Payment Widget» رو برای ادغام انتخاب کنید.

برای ادغام یه نام بزارید تا بعداً راحت بتونید شناساییش کنید.

تنظیم قیمت
قیمتی رو که باید پرداخت بشه وارد کنید.

اگه نیاز به قیمت‌گذاری پویا دارین، ادامه بدید و بخونید که چطور تنظیمات پویا رو راه‌اندازی کنید.

اگه نیازی به این تنظیم ندارید، با غیرفعال کردن تنظیمات پویا ادامه بدید.

تعیین قیمت به ارز فیات
اگه قیمت رو به یه ارز خاص تنظیم کنید، نرخ‌های لحظه‌ای اعمال می‌شن تا مطمئن بشید مبلغی که از توکن‌های قبول‌شده دریافت می‌کنید با قیمت تنظیم‌شده ارز شما مطابقت داره.

تعیین قیمت به توکن
اگه قیمت رو به توکن‌ها تنظیم کنید، دقیقاً همون مقدار مشخص‌شده از هر توکن رو دریافت می‌کنید.

توکن‌ها/بلاک‌چین‌های پذیرفته‌شده
توکن‌هایی رو که می‌خواید به‌عنوان روش پرداخت قبول کنید انتخاب کنید. برای هر توکن انتخاب‌شده حتماً یه آدرس کیف پول برای دریافت ارائه بدید.

قرار دادن کد ادغام
حالا می‌تونید کد ادغام رو توی اپلیکیشن خودتون بذارید و ویجت پرداخت DePay رو باز کنید.

import DePayWidgets from "@depay/widgets"DePayWidgets.Payment({  integration: 'YOUR-INTEGRATION-ID'});

ریدایرکت بعد از پرداخت
آدرس URL‌ای رو وارد کنید که بعد از پرداخت موفق، کاربرها به اون هدایت بشن.

اگه نیاز به تنظیم ریدایرکت پویا دارید، ادامه بدید و بخونید که چطور تنظیمات پویا رو راه‌اندازی کنید.

تنظیم کال‌بک‌ها
یه نقطه پایان (endpoint) تنظیم کنید که بعد از هر پرداخت موفق فراخوانی بشه.

کال‌بک‌ها یک درخواست POST به URL مشخص‌شده ارسال می‌کنن.

حتماً یه URL با HTTPS ارائه بدید.

بدنه درخواست کال‌بک به این شکل خواهد بود:

{  "blockchain": "polygon",  "transaction": "0x053279fcb2f52fd66a9367416910c0bf88ae848dca769231098c4d9e240fcf56",  "sender": "0x317D875cA3B9f8d14f960486C0d1D1913be74e90",  "receiver": "0x08B277154218CCF3380CAE48d630DA13462E3950",  "token": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F",  "amount": "0.0985",  "payload": null,  "after_block": "46934392",  "commitment": "confirmed",  "confirmations": 1,  "created_at": "2023-08-30T11:37:30.157555Z",  "confirmed_at": "2023-08-30T11:37:35.492041Z"}

احتیاط
کال‌بک‌ها جریان پرداخت رو کنترل می‌کنن. مطمئن بشید که نقطه پایان کال‌بک شما با کد 200 پاسخ می‌ده، وگرنه ویجت کاربر رو آزاد نمی‌کنه. جریان پرداخت رو ببینید.

نکته
فقط پرداخت‌های موفق به کال‌بک تنظیم‌شده ارسال می‌شن.

نکته
درخواست‌های کال‌بک برای پاسخ‌های ناموفق (کد پاسخ غیر از 200) با تأخیر افزایشی دوباره امتحان می‌شن، بر اساس این فرمول:
(retry_count * 4) + 15 + (rand(30) * (retry_count + 1))
یعنی ۱۵، ۱۶، ۳۱، ۹۶، ۲۷۱ ثانیه به‌علاوه یه مقدار تصادفی زمان.

این کار تا ۲۵ بار و در حدود ۲۱ روز دوباره امتحان می‌شه.

ریدایرکت کاربر
اگه می‌خواهید بعد از دریافت پاسخ کال‌بک، کاربران رو به‌صورت پویا هدایت کنید، آدرس مورد نظر رو با استفاده از forward_to در پاسخ کال‌بک مشخص کنید.

{  "forward_to": "https://example.com/depay/success/1212391238123"}

تنظیم رویدادها
اگه می‌خواهید سیستم‌های شما در جریان رویدادهای مختلف در جریان پرداخت قرار بگیرن، یه آدرس endpoint رویداد برای ادغام‌تون روی https://app.depay.com تنظیم کنید.

بعد از تنظیم، درخواست‌های رویداد یک POST به URL مشخص‌شده ارسال می‌کنن.

حتماً یه URL با HTTPS ارائه بدید.

بدنه درخواست رویداد به شکل زیر خواهد بود:

{  "status": "attempt",  "blockchain": "polygon",  "transaction": "0x053279fcb2f52fd66a9367416910c0bf88ae848dca769231098c4d9e240fcf56",  "sender": "0x317D875cA3B9f8d14f960486C0d1D1913be74e90",  "receiver": "0x08B277154218CCF3380CAE48d630DA13462E3950",  "token": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F",  "amount": "0.0985",  "payload": null,  "after_block": "46934392",  "commitment": "confirmed",  "confirmations": 1,  "created_at": "2023-08-30T11:37:30.157555Z",  "confirmed_at": "2023-08-30T11:37:35.492041Z"}

وضعیت می‌تونه یکی از این حالت‌ها باشه: attempt (تلاش)، processing (در حال پردازش)، failed (ناموفق)، یا succeeded (موفق).

نکته
درخواست‌های رویداد برای پاسخ‌های ناموفق (کد پاسخ غیر از 200) با تأخیر افزایشی دوباره امتحان می‌شن، بر اساس فرمول:
(retry_count * 4) + 15 + (rand(30) * (retry_count + 1))
یعنی ۱۵، ۱۶، ۳۱، ۹۶، ۲۷۱ ثانیه به‌علاوه یه مقدار تصادفی زمان.

این کار تا ۲۵ بار و در حدود ۲۱ روز انجام می‌شه.

تأیید ارتباط
کلید عمومی‌ای که برای ادغام شما در app.depay.com ارائه شده رو کپی کنید، ذخیره کنید و ازش توی برنامه‌تون استفاده کنید تا مطمئن بشید که تمام ارتباطات از APIهای DePay به سیستم شما معتبره.

در تمام درخواست‌های ارسال‌شده به سیستم شما، APIهای DePay یه هدر x-signature اضافه می‌کنن.

از این هدر x-signature به‌همراه کلید عمومی ذخیره‌شده استفاده کنید تا درخواست رو تأیید کنید که معتبره.

DePay از RSA-PSS با طول نمک ۶۴ و SHA256 برای امضای بدنه درخواست‌ها استفاده می‌کنه. امضا به‌صورت base64 و به شکل URL-encoded از طریق هدر x-signature ارسال می‌شه.

از پکیج verify-js-signature DePay برای JavaScript و Node استفاده کنید:

  • JavaScript
import { verify } from '@depay/js-verify-signature'let verified = await verify({  signature: req.headers['x-signature'],  data: JSON.stringify(req.body),  publicKey,});if(!verified){ throw('Request was not authentic!') }
  • Ruby
public_key = OpenSSL::PKey::RSA.new(STORED_PUBLIC_KEY)signature_decoded = Base64.urlsafe_decode64(request.headers["X-Signature"])data = request.raw_postverified = public_key.verify_pss(  "SHA256",  signature_decoded,  data,  salt_length: :auto,  mgf1_hash: "SHA256")raise 'Request was not authentic' unless verified
  • Python
from cryptography.hazmat.primitives import hashes, serializationfrom cryptography.hazmat.primitives.asymmetric import paddingimport base64# Load the public keypublic_key = serialization.load_pem_public_key(PUBLIC_KEY.encode('utf-8'))# Decode the signature from the headerssignature_decoded = base64.urlsafe_b64decode(request.headers["X-Signature"])# Get the raw post data (make sure it's not parsed data!)data = request.body# Verify the signaturetry:    public_key.verify(        signature_decoded,        data,        padding.PSS(            mgf=padding.MGF1(hashes.SHA256()),            salt_length=padding.PSS.MAX_LENGTH        ),        hashes.SHA256()    )except InvalidSignature:    raise ValueError('Request was not authentic')

PHP

use phpseclib3\Crypt\RSA;use phpseclib3\Crypt\PublicKeyLoader;$signature = $request->get_header('x-signature');$signature = str_replace("_","/",  $signature);$signature = str_replace("-", "+",  $signature);$key = PublicKeyLoader::load($public_key)->withHash('sha256')->withPadding(RSA::SIGNATURE_PSS)->withMGFHash('sha256')->withSaltLength(64);if( !$key->verify($request->get_body(), base64_decode($signature)) ) {  throw new Exception("Request was not authentic");}

محدود کردن دامنه‌ها
ادغام‌ها فقط اجازه استفاده و قرار گرفتن روی وب‌سایت‌هایی رو دارن که در دامنه‌های مشخص‌شده میزبانی بشن.

اگه هیچ دامنه‌ای وارد نکنید، محدودیت دامنه غیرفعال می‌شه.

اما به محض اینکه حتی یک دامنه رو وارد کنید، محدودیت فعال می‌شه.

باید هر دامنه و زیردامنه‌ای که می‌خواید پشتیبانی بشه رو جداگانه وارد کنید.

مثلاً: example.com، www.example.com، pay.example.com.

پیکربندی پویا
برای ارسال تنظیمات پویا به ویجت، مثل تعیین قیمت‌های متغیر یا تنظیم ریدایرکت پویا بعد از پرداخت موفق، باید پیکربندی پویا رو برای ادغام مشخص‌شده فعال کنید.

بعد از فعال‌سازی، پیکربندی پویا که از طریق یک API از سیستم شما ارسال می‌شه، باید یه تنظیم معتبر برای ویجت برگردونه. این تنظیم حداقل باید جزئیات پرداخت‌های قابل قبول رو شامل بشه، مثل بلاک‌چین‌ها، توکن‌ها، مبلغ و گیرنده.

احتیاط
مطمئن بشید که تنظیمات ویجت رو از طریق API مشخص‌شده‌تون ارائه می‌دید. پارامتر "accept" رو مستقیماً از سمت فرانت‌اند به ویجت ارسال نکنید.

تنظیم نقطه پایان
اول باید یک URL با HTTPS مشخص کنید که ، هر بار که کسی قصد پرداخت داره، به اون درخواست ارسال کنه.

احتیاط
نقطه پایان باید تنظیمات پویا رو در کمتر از ۲ ثانیه پاسخ بده، وگرنه درخواست‌ها رد می‌شن و ویجت بارگذاری نمی‌شه.

ایجاد کلید خصوصی/عمومی
مثل روشی که API‌های DePay برای تأیید اعتبار درخواست‌ها از امضای رمزنگاری RSA-PSS استفاده می‌کنن، شما هم باید از همین روش برای تنظیمات پویا استفاده کنید.

برای شروع امضای پاسخ‌های تنظیمات پویا، اول یه کلید خصوصی ایجاد کنید.

مطمئن بشید که OpenSSL نصب شده باشه تا بتونید کلیدهای خصوصی رو تولید کنید.

نصب OpenSSL

بهتره از Homebrew استفاده کنید.

  • macOS
brew updatebrew install openssl
  • Debian/Ubuntu
sudo apt updatesudo apt install openssl

کلید خصوصی ایجاد کنید.

openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048

خطر
حتماً بالاترین استانداردهای امنیتی رو هنگام کار با کلیدهای خصوصی رعایت کنید. کلید خصوصی رو هرگز به اشتراک نذارید یا به‌صورت عمومی منتشر نکنید.

کلید عمومی بسازید.

openssl rsa -pubout -in private_key.pem -out public_key.pem

ذخیره کلید عمومی
حالا محتوای فایل public_key.pem (نه کلید خصوصی!) رو بردارید و اون رو در ادغام‌تون در https://app.depay.com ذخیره کنید.

فرمت کلید عمومی به این شکل هست:

-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4PlPK+oM4nQX5TcmnWAEUMtd5hL8irx1Fbmwtpg4P7aQA1Y7RJ7/JwEMKs4+kJcgSQqqBoil+YgP2WSGtDnpar4jIFIPDWY+eWBe3kGqqse+OxyuVMG/k4iMyQG7wB/9l4gY2udi6qciBiSDlNpocs7X+zPrnL1jaO9C85yaEBAe4qpRUXhyjZ32DfduDeCP7p2O+cNHXzNwppsWApnEL8LOX/UkSlSaduJL2pOEv3zcTupOo38fds7V3MmqaxJfMfH9mWMbvVPfEJ2eeEx6GKnXhyKyW3MH69iEFCrFgAEk/HKI2bAck4DOyh5wVD4bdks0a9cXRWHI747auCeZsQIDAQAB-----END PUBLIC KEY-----

ادغام پاسخ‌ها
بعد از تنظیم یک نقطه پایان و ثبت کلید عمومی در ادغام، می‌تونید نقطه پایانتون رو طوری تنظیم کنید که تنظیمات پویا رو برگردونه.

درخواست‌های ورودی
درخواست‌های ورودی شامل هدرهای زیر خواهند بود:

Accept: application/json,application/vnd.api+jsonAccept-Charset: utf-8Content-Type: application/json; charset=utf-8X-Signature: 0Lt-bOwigLB_tPzWev5Iwe1YeWFWQ1fTi31wolfisWXuSKfuj53MujGfxkDli_A3R4IgFpgfEF6KmU1tDqYn2bId2HiFG6MYf5v25bhLscJnwAlGyVYMVmnxYyuPYsHMTZvZx61LSxC52TavRw4LN5wq9ux4nw4B30rnqCAaYKAZcUgpKgUwsMRToY0D8AwwW2mkkFk5rJKdx0LAnhz0dpGx5b5lc1v7UbcdzvteU8PBzyXcT2hQ-lMo8dTcdFM6tr_xJRrlxEOzeAKB3b2EfOKS_H9AtzICXT-NGc-HvgWKI56NURAheJweKdAvV7AF5atWTjSLnTFAHFl4NkLFsg==

حتماً هدر x-signature ورودی رو بررسی کنید تا از اعتبار درخواست مطمئن بشید. نحوه تأیید ارتباط رو بررسی کنید.

پاسخ پایه
پاسخ‌ها باید به فرمت JSON باشن.

یه پاسخ پایه شامل تنظیمات اولیه ویجت هست که لیست توکن‌های پذیرفته‌شده برای پرداخت رو مشخص می‌کنه. در تنظیمات پایه، پرداخت‌ها به توکن تعیین می‌شن:

{  "accept": [    {      "blockchain": "ethereum",      "amount": 20,      "token": "0xdac17f958d2ee523a2206206994597c13d831ec7",      "receiver": "0x4e260bB2b25EC6F3A59B478fCDe5eD5B8D783B02"    }  ]}

این تنظیم ۲۰ USDT روی بلاک‌چین اتریوم رو به آدرس 0x4e260bB2b25EC6F3A59B478fCDe5eD5B8D783B02 به عنوان پرداخت قبول می‌کنه.

نکته
وقتی با DePay کار می‌کنید، همیشه مقادیر رو به شکل قابل‌خواندن برای انسان وارد کنید (نه به‌صورت BigNumbers).

برای درک بهتر نحوه کار تنظیمات ویجت، مستندات ویجت رو مطالعه کنید.

امضای پاسخ
برای ارتباط امن، DePay استفاده از RSA-PSS رو برای امضای پاسخ‌ها ضروری کرده، با طول نمک ۶۴ و استفاده از الگوریتم هش SHA256. بعد از امضا، مطمئن بشید که امضا رو به فرمت base64 و به‌صورت URL-safe کدگذاری کنید و از طریق هدر x-signature ارسال کنید.

X-Signature: 0Lt-bOwigLB_tPzWev5Iwe1YeWFWQ1fTi31wolfisWXuSKfuj53MujGfxkDli_A3R4IgFpgfEF6KmU1tDqYn2bId2HiFG6MYf5v25bhLscJnwAlGyVYMVmnxYyuPYsHMTZvZx61LSxC52TavRw4LN5wq9ux4nw4B30rnqCAaYKAZcUgpKgUwsMRToY0D8AwwW2mkkFk5rJKdx0LAnhz0dpGx5b5lc1v7UbcdzvteU8PBzyXcT2hQ-lMo8dTcdFM6tr_xJRrlxEOzeAKB3b2EfOKS_H9AtzICXT-NGc-HvgWKI56NURAheJweKdAvV7AF5atWTjSLnTFAHFl4NkLFsg==

احتیاط
مطمئن بشید که پاسخ رو به‌صورت رشته (string) امضا کنید و رشته JSON هیچ خط جدید (\n) یا فاصله اضافی نداشته باشه.

Node

const { Buffer } = require("node:buffer");import crypto from 'node:crypto';const privateKeyString = process.env.MY_PRIVATE_KEY;const privateKey = crypto.createPrivateKey(privateKeyString);const configuration = {  /// your dynamic configuration}const dataToSign = JSON.stringify(configuration);const signature = crypto.sign('sha256', Buffer.from(dataToSign), {  key: privateKey,  padding: crypto.constants.RSA_PKCS1_PSS_PADDING,  saltLength: 64,});const urlSafeBase64Signature = signature.toString('base64')  .replace('+', '-')  .replace('/', '_')  .replace(/=+$/, '');res.setHeader('x-signature', urlSafeBase64Signature);return JSON.stringify(configuration) // make sure to return JSON without line-breaks (\n) or unnessary whitespace

Ruby / Rails

private_key = OpenSSL::PKey::RSA.new(ENV['MY_PRIVATE_KEY'])signature = private_key.sign_pss("SHA256", response.to_json, salt_length: 64, mgf1_hash: "SHA256")headers['x-signature'] = Base64.urlsafe_encode64(signature)

Python

from cryptography.hazmat.primitives import hashes, serializationfrom cryptography.hazmat.primitives.asymmetric import paddingimport base64import jsonimport os# Load the private keyprivate_key_bytes = os.environ['MY_PRIVATE_KEY'].encode('utf-8')private_key = serialization.load_pem_private_key(private_key_bytes, password=None)# Sign the response dataresponse_data = json.dumps(response).encode('utf-8')signature = private_key.sign(    response_data,    padding.PSS(        mgf=padding.MGF1(hashes.SHA256()),        salt_length=64    ),    hashes.SHA256())# Set the signature in the headersheaders['x-signature'] = base64.urlsafe_b64encode(signature).decode('utf-8')

تعیین واحد پول
برای تعیین پرداخت‌های پذیرفته‌شده به ارزهای فیات مثل دلار (USD)، یورو (EUR) و غیره، از ویژگی amount استفاده کنید. ادغام به‌صورت خودکار مبلغ رو برای هر توکن پذیرفته‌شده محاسبه و اعمال می‌کنه.

{  "amount": {    "currency": "USD",    "fix": 100  },  "accept": [    {      "blockchain": "ethereum",      "token": "0xdac17f958d2ee523a2206206994597c13d831ec7",      "receiver": "0x4e260bB2b25EC6F3A59B478fCDe5eD5B8D783B02"    },    {      "blockchain": "ethereum",      "token": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",      "receiver": "0x4e260bB2b25EC6F3A59B478fCDe5eD5B8D783B02"    }  ]}

این تنظیم ۱۰۰ دلار آمریکا به ارزش USDT یا اتر (توکن اصلی اتریوم) رو به آدرس 0x4e260bB2b25EC6F3A59B478fCDe5eD5B8D783B02 قبول می‌کنه.

نکته
آدرس 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE نمایانگر توکن اصلی هر شبکه هست؛ مثلاً اتر در اتریوم، BNB در BSC، و Matic در پالیگان.

ارسال مستقیم اطلاعات
اگه تنظیمات پویای شما به داده‌هایی که ابتدا در ویجت (در فرانت‌اند) وارد شدن وابسته باشه و این داده‌ها نیاز دارن که به بک‌اند منتقل بشن برای تعیین تنظیمات پویا، اطلاعات رو هنگام راه‌اندازی ویجت بهش ارسال کنید.

DePayWidgets.Payment({  integration: 'YOUR-INTEGRATION-ID',  payload: {    items: [      { id: 1, amount: 2 },      { id: 2, amount: 1 }    ]  }})

با این کار، اطلاعات ارسال‌شده (payload) در زمان فراخوانی نقطه پایان تنظیم‌شده شما هم ارسال می‌شه. حالا بدنه درخواست که به سمت نقطه پایان شما می‌ره شامل این اطلاعات خواهد بود:

{  "items": [    {      "id": 1,      "amount": 2    },{      "id": 2,      "amount": 1    }  ]}

جریان پویا/ریدایرکت کاربر
برای موقعیت‌هایی که نیاز به هدایت کاربران به URLهای پویا هست — مثلاً فرستادن کاربران به صفحات تأیید مختلف بر اساس هر رویداد پرداخت — از پارامتر forward_to در پاسخ تنظیمات پویا استفاده کنید.

{    "forward_to": "https://example.com/depay/success/1212391238123"}

تایید نهایی
DePay از دو سطح تایید برای اعتبارسنجی پرداخت‌ها استفاده می‌کنه، که بسته به ارزش تراکنش و ویژگی‌های بلاک‌چین مربوطه تنظیم می‌شه. برای پرداخت‌های کمتر از ۱۰۰۰ دلار، بعد از تایید یک بلاک، وضعیت "تایید شده" بهشون اختصاص داده می‌شه. در مقابل، پرداخت‌های ۱۰۰۰ دلار و بالاتر وضعیت "نهایی شده" می‌گیرن که نیازمند تایید چندین بلاک، بسته به نوع بلاک‌چین مورداستفاده، هست.


۴:پرداخت‌های مینی اپ

پرداخت‌های DePay رو توی مینی اپ خودتون که روی World App ساخته شده ادغام کنید.

تنظیم مینی اپ
برای ادغام DePay توی مینی اپ خودتون، باید تنظیمات رو درست انجام بدید.

تمام مینی اپ‌هایی که از DePay استفاده می‌کنن باید آدرس قرارداد هوشمند DePay Router رو به‌عنوان "Contract Entrypoint" توی تنظیمات اپ شون قرار بدن.

مراحل انجام کار:

۱. به پورتال توسعه‌دهندگان World App برید.

۲. اپ خودتون رو انتخاب کنید و به Configuration > Advanced برید.

۳. مطمئن بشید که https://depay.com رو به‌عنوان یه "دامنه اضافی" اضافه کردید.

۴:بعد، باید آدرس توکن‌هایی که می‌خواید کاربران باهاشون تراکنش انجام بدن رو اضافه کنید. لیست کامل توکن‌های موجود روی World Chain رو می‌تونید اینجا پیدا کنید.

آدرس‌های 0x79A02482A880bCE3F13e09Da970dC34db4CD24d1 و 0x2cFc85d8E48F8EAB294be644d9E25C3030863003 برای اجازه دادن به USDCe و WDL هستن.

۵: آدرس 0xC9850b32475f4fdE5c972EA6f967982a3c435D10 رو زیر "Contract Entrypoints" اضافه کنید.

ادغام DePay
بعد از این مرحله می‌تونید DePay رو توی مینی اپ خودتون ادغام و استفاده کنید


پلاگین‌های پرداخت Web3

همه پلاگین‌های پرداخت Web3 که DePay ارائه می‌دهد رو ببینید.

۱: پرداخت‌های Web3 برای Shopify

پرداخت‌ها رو مستقیماً به کیف پولت دریافت کن.

هر توکنی رو با تبدیل لحظه‌ای قبول کن.

مثال
https://depay.com/shopify/demo

آموزش قدم به قدم

نصب
به https://apps.shopify.com/depay برید و روی "Add app" کلیک کنید.

مطمئن بشید که فروشگاهی رو که می‌خواید DePay بهش اضافه بشه، انتخاب کردید.

فرآیند نصب اپ رو در Shopify با کلیک دوباره روی "install app" ادامه بدید.

وصل کردن کیف پول
بعد از نصب اپ، صفحه "Onboarding" رو می‌بینید.

روی "Wallet Login" کلیک کنید و کیف پولی که می‌خواید برای دریافت پرداخت‌ها استفاده کنید رو وصل کنید.

انتخاب توکن‌ها
حالا انتخاب کنید که چه توکن‌هایی (روی کدوم بلاک‌چین‌ها) رو می‌خواید به‌عنوان روش پرداخت دریافت کنید.

اطلاعات مالک فروشگاه
حالا مشخص کنید چه کسی مالک یا گرداننده فروشگاهه.

اگر شرکتتون ثبت‌شده است، "Registered Company" رو انتخاب کنید.

اگر خودتون شخصاً مالک یا گرداننده فروشگاه هستید، "Individual" رو انتخاب کنید.

بعد روی "Continue" کلیک کنید.

تمام اطلاعات لازم رو وارد کنید.

در آخر مطمئن بشید که روی "Save & Continue" کلیک می‌کنید.

منتظر تأیید بمونید
حالا صبر کنید تا اطلاعاتتون تأیید بشه.

لطفاً صبور باشید، این پروسه کمی زمان می‌بره و به محض تأیید بهتون ایمیل می‌فرستیم.

ایمیل تأیید
بعد از اینکه اطلاعاتتون تأیید شد، فوراً یه ایمیل تأیید دریافت می‌کنید.

فعال‌سازی اپ DePay
توی ایمیل تأیید، یه لینک "Start Now" هست که می‌تونید باهاش DePay رو روی Shopify فعال کنید.

روی لینک کلیک کنید و حتماً روی "Activate DePay" بزنید.

حالا مشتری‌هاتون می‌تونن "DePay" رو به عنوان گزینه پرداخت توی مرحله‌ی پرداخت انتخاب کنن.

حالت تست پرداخت‌ها
می‌تونید "Test Mode" رو برای درگاه پرداخت DePay توی Shopify فعال کنید تا ببینید مشتری‌ها چطوری سفارش‌هاشون رو پرداخت می‌کنن و اینکه شما و تیم‌تون چطوری این سفارش‌ها رو مدیریت می‌کنید.

وقتی حالت تست فعاله، هیچ تراکنش واقعی انجام نمی‌شه. اما می‌تونید اتصال کیف پول و روند پیشنهاد پرداخت رو همچنان تست کنید.

۲:پرداخت‌های Web3 برای WooCommerce

پرداخت‌ها رو مستقیماً توی کیف پولتون دریافت کنید.

هر توکنی رو با تبدیل لحظه‌ای قبول کنید

مثال
http://web3woocommerce.xyz/

آموزش قدم به قدم

نصب
اول از همه، آخرین نسخه پلاگین رو دانلود کنید:

توی بخش مدیریت وردپرس، به قسمت "Plugins" برید.

روی "Add new" کلیک کنید.

بعدش "Upload Plugin" رو بزنید.

حالا روی "choose file" کلیک کنید و فایل زیپ پلاگین که قبلاً دانلود کردید رو آپلود کنید.

بعد از نصب حتماً روی "Activate" کلیک کنید تا پلاگین فعال بشه.

اتصال کیف پول
به بخش "DePay" توی پنل مدیریت وردپرس برید.

روی دکمه "Connect Wallet" کلیک کنید یا آدرس کیف پولتون رو دستی وارد کنید.

انتخاب توکن‌ها
حالا روی "Add Token" کلیک کنید و توکن‌هایی که روی بلاک‌چین‌های مختلف قبول می‌کنید رو اضافه کنید.

حتماً تنظیماتتون رو ذخیره کنید. روی "Save Settings" کلیک کنید.

حالا مشتری‌ها می‌تونن "DePay" رو به‌عنوان گزینه پرداخت توی مرحله‌ی تسویه‌حساب انتخاب کنن.

تغییر تسویه‌حساب
می‌تونید ظاهر روش پرداخت رو توی فرآیند تسویه‌حساب تغییر بدید؛ مثلاً نام روش پرداختی که نمایش داده می‌شه رو عوض کنید یا توضیحی درباره اون اضافه کنید که وقتی مشتری انتخابش می‌کنه، نمایش داده بشه.

واحد پولی
می‌تونید محصولات WooCommerce خودتون رو با توکن‌های ارز دیجیتال قیمت‌گذاری کنید.

نرخ تبدیل قیمت‌ها از صرافی‌های غیرمتمرکز که به سیستم متصل هستند گرفته می‌شه.

سوالات متداول


چرا بعضی توکن‌ها برای تبدیل پشتیبانی نمی‌شن؟
DePay فقط توکن‌هایی رو برای تبدیل قبول می‌کنه که شرایط لازم رو داشته باشن.

این یعنی ارزهای فیات نمی‌تونن به توکن‌های نامعتبر تبدیل بشن و مشتری‌ها نمی‌تونن توی تسویه‌حساب ازشون استفاده کنن.

اما اگه محصولاتتون رو با اون توکن (و نه فیات) قیمت‌گذاری کنید، مشتری‌ها می‌تونن با همون توکن پرداخت رو انجام بدن.

چرا بهتره تعداد کمی توکن برای هر شبکه انتخاب کنم؟
چون DePay خودش به‌صورت خودکار تبدیل رو انجام می‌ده، نیازی نیست که تعداد زیادی توکن رو انتخاب کنید.

روی توکن‌هایی که می‌خواید دریافت کنید تمرکز کنید و نگران توکن‌هایی که مشتری‌ها باهاشون پرداخت می‌کنن نباشید (چون DePay کار تبدیل رو خودش انجام می‌ده).

هر چقدر توکن‌های بیشتری انتخاب کنید، محاسبات بیشتری موقع تسویه‌حساب انجام می‌شه و این می‌تونه فرآیند رو کند کنه.

اگه تعداد توکن‌ها خیلی زیاد باشه، ممکنه به مشکلاتی مثل تاخیر و تایم‌اوت بخورید که باعث می‌شه نتونید تسویه‌حساب رو با DePay تکمیل کنید.


۳: افزونه پرداخت Web3 برای وردپرس

تمام افزونه‌های پرداخت Web3 برای وردپرس که توسط DePay ارائه می‌شه رو ببین و بررسی کن.

۱: پرداخت‌های Web3 در وردپرس

پرداخت‌های ارز دیجیتال به صورت همتا به همتا رو توی سایت وردپرس خودت قبول کن.

هر توکنی رو با تبدیل آنی قبول کن.

مثال:
https://web3wordpress.xyz/

آموزش قدم به قدم

نصب
وارد داشبورد مدیریت وردپرس خودت شو.

به بخش افزونه‌ها برو و روی "افزودن جدید" کلیک کن.

عبارت "depay" رو جستجو کن و روی "نصب" افزونه "Web3 Payments" کلیک کن.

بعد از نصب، حتماً روی "فعال‌سازی" کلیک کن تا افزونه فعال بشه.

اتصال کیف پول
توی داشبورد مدیریت وردپرس خودت از منوی کناری گزینه "پرداخت‌ها" رو انتخاب کن.

آدرس کیف پولی که می‌خوای پرداخت‌ها بهش واریز بشه رو وارد کن یا به‌سادگی روی "اتصال کیف پول" کلیک کن تا آدرس کیف پولت به‌صورت خودکار وارد بشه.

انتخاب توکن‌ها
حالا توکن‌هایی که می‌خوای به عنوان روش پرداخت قبول کنی (مثل استیبل‌کوین‌ها) رو انتخاب کن. حتماً یه توکن برای پرداخت روی هر بلاک‌چینی که می‌خوای پشتیبانی کنی (مثل اتریوم، بایننس اسمارت چین و غیره) انتخاب کن.

حتماً قبل از ادامه روی "ذخیره تغییرات" کلیک کن.

شخصی‌سازی دکمه پرداخت
می‌تونی دکمه پرداخت DePay رو به سلیقه خودت تغییر بدی. تو قسمت "پرداخت‌ها" در داشبورد وردپرس، می‌تونی CSS و متن دکمه رو عوض کنی.

یادت نره بعد از انجام تغییرات، حتماً روی "ذخیره تغییرات" در پایین صفحه کلیک کنی تا همه تغییرات ذخیره بشه.

شخصی‌سازی ویجت پرداخت
می‌تونی ویجت پرداختی که اهداکننده‌ها بعد از کلیک روی دکمه می‌بینند رو هم شخصی‌سازی کنی. می‌تونی با انتخاب رنگ‌ها، تم ویجت رو تغییر بدی یا با استایل دادن به کلاس‌های CSS ظاهر ویجت رو به دلخواه تنظیم کنی.

حتماً بعد از انجام تغییرات، روی دکمه "ذخیره تغییرات" در پایین صفحه کلیک کن تا همه تغییرات ثبت بشه.

قرار دادن دکمه پرداخت
حالا باید دکمه پرداخت رو برای اهداکننده‌ها و بازدیدکننده‌ها فعال کنی.

برای این کار، می‌تونی توی بخش "ظاهر" -> "ویرایشگر" در وردپرس، دکمه پرداخت رو اضافه کنی.

همچنین، می‌تونی توی هر پست یا صفحه‌ای با کلیک روی "+" توی ویرایشگر و انتخاب یک بلاک جدید (بلاک گوتنبرگ وردپرس) دکمه رو قرار بدی.

بعد از زدن "+"، کلمه "Payments" رو جستجو کن تا بلاک پرداخت پیدا بشه و اون رو در جای موردنظر کلیک یا بکش و رها کن.

یادت نره همه چیز رو ذخیره کنی تا دکمه منتشر بشه. بعدش حتماً روی صفحه واقعی وردپرس تستش کن که مطمئن بشی همه چیز درست کار می‌کنه.

دریافت پرداخت‌ها
حالا پرداخت‌ها مستقیم توی صفحه وردپرس به حسابت میاد و مستقیم توی کیف پول کریپتو شما ذخیره می‌شه.

اهداکننده‌ها می‌تونن با هر توکنی پرداخت کنن، چون به طور خودکار به توکن‌هایی که تنظیم کردی تبدیل می‌شه.

۲: دونیشن‌های Web3 وردپرس

با استفاده از وردپرس، می‌تونی دونیشن‌های کریپتو به صورت P2P رو مستقیم روی سایتت قبول کنی.

هر توکنی رو می‌تونی قبول کنی و به طور خودکار به توکنی که می‌خوای تبدیل می‌شه.

مثال
https://web3wordpress.xyz/

آموزش قدم به قدم

نصب
وارد داشبورد ادمین وردپرس بشید.
از قسمت "افزودن افزونه"، "depay" رو جستجو کنید و روی "نصب" افزونه "Web3 Donations" کلیک کنید.
بعد از اتمام نصب، حتماً روی "فعال‌سازی" کلیک کنید.

اتصال کیف پول
در داشبورد وردپرس، از منوی کناری به بخش "Donations" برید.
آدرس کیف پولی که می‌خواید پرداخت‌ها به اون واریز بشه رو وارد کنید یا به‌سادگی روی "Connect Wallet" کلیک کنید تا آدرس کیف پولتون به‌صورت خودکار وارد بشه.

انتخاب توکن‌ها
حالا توکن‌هایی که می‌خواید برای پرداخت قبول کنید (مثل استیبل‌کوین‌ها) رو انتخاب کنید. مطمئن بشید که برای هر بلاکچینی که می‌خواید پشتیبانی کنید (مثل اتریوم، بایننس اسمارت چین و غیره) یه توکن پرداختی انتخاب کنید.

یادتون نره که روی "Save Changes" کلیک کنید تا تغییرات ذخیره بشه.

شخصی‌سازی دکمه‌ی اهدایی
می‌تونید دکمه‌ی اهدایی DePay رو به سلیقه خودتون تنظیم کنید.

تو قسمت "Donations" در وردپرس، می‌تونید CSS و متن روی دکمه رو تغییر بدید.

در نهایت، حتماً بعد از هر تغییری، روی "Save Changes" در پایین صفحه کلیک کنید تا تغییرات ذخیره بشن.

شخصی‌سازی ویجت اهدایی
می‌تونید ویجت اهدایی که اهداکننده‌ها بعد از کلیک روی دکمه می‌بینن رو هم شخصی‌سازی کنید.

می‌تونید رنگ‌های تم رو با انتخاب‌گر رنگ تغییر بدید یا CSS کلاس‌های ویجت اهدایی رو تنظیم کنید.

در نهایت، حتماً با کلیک روی دکمه "Save Changes" در پایین صفحه، تمام تغییرات رو ذخیره کنید.

قرار دادن دکمه اهدایی
حالا باید دکمه اهدایی رو برای اهداکننده‌ها و بازدیدکننده‌ها در دسترس قرار بدید.

می‌تونید دکمه اهدایی رو توی بخش ویرایش ظاهر سایت یا قالب وردپرس، در مسیر "Appearance" -> "Editor" قرار بدید.

همچنین می‌تونید این دکمه رو توی هر پست یا صفحه اضافه کنید. کافیه توی ویرایشگر روی "+" کلیک کنید و یک بلاک اضافه کنید (بلاک گوتنبرگ وردپرس).

بعد از زدن "+"، گزینه "Donations" رو جستجو کنید تا بلاک اهدایی رو پیدا کنید.

سپس روی بلاک کلیک کنید یا اونو به جایی که می‌خواید بکشید.

همه چیز رو ذخیره کنید تا دکمه منتشر بشه.

در نهایت، دکمه رو روی صفحه وردپرس واقعی تست کنید تا مطمئن بشید همه چیز درست کار می‌کنه.

دریافت کمک‌های اهدایی
حالا کمک‌های اهدایی به‌صورت مستقیم روی صفحه وردپرس شما دریافت می‌شن و مستقیماً به کیف پول کریپتویی شما منتقل می‌شن.

اهداکننده‌ها می‌تونن با هر توکنی پرداخت کنن و این توکن‌ها به‌صورت خودکار به توکن‌هایی که تنظیم کردید تبدیل می‌شن.