Skip to content

Установка

Как добавить CryptumPay Widget на ваш сайт.

Установка через CDN

Самый простой способ — загрузить виджет через CDN. Инструменты сборки и пакетные менеджеры не нужны.

Базовая установка

Добавьте этот тег <script> в HTML:

html
<script
  src="https://cdn.cryptumpay.com/2.3.2/widget.min.js"
  async
  integrity="sha384-jOAC1EYj7n6L3AUMR8dzHWi2B64sOghCmTyjCR2sqlZr4vw3YbabmSnHVyjnx8i6"
  crossorigin="anonymous"
></script>

Обязательные атрибуты

АтрибутОбязателенОписание
src✅ ДаURL CDN с номером версии
integrity✅ ДаSRI-хеш для проверки безопасности
crossorigin✅ ДаДолжен быть "anonymous" для CORS
async⚠️ РекомендуетсяАсинхронная загрузка виджета

ВНИМАНИЕ: БЕЗОПАСНОСТЬ

Атрибут integrity обязателен. Он предотвращает загрузку подменённого кода.

Всегда копируйте полный тег <script> с docs.cryptumpay.com — не вводите URL и хеши вручную.

Управление версиями

Где найти актуальную версию

Текущая версия виджета и хеш целостности всегда доступны в начале этой страницы в разделе Базовая установка.

Страница обновляется с каждым релизом — всегда обращайтесь к ней за актуальной версией и правильным хешем.

Манифест также доступен программно:

https://cdn.cryptumpay.com/{version}/manifest.json

Пример: https://cdn.cryptumpay.com/2.3.2/manifest.json

Обновление версии

При обновлении до новой версии:

  1. Возьмите новый тег <script> с этой страницы
  2. Обновите src и integrity вместе
  3. Протестируйте на staging-окружении
  4. Задеплойте в продакшен

ХЕШ ЦЕЛОСТНОСТИ МЕНЯЕТСЯ

Хеш целостности меняется с каждой версией. Оба атрибута нужно обновлять вместе.

Режимы загрузки

Асинхронная загрузка (рекомендуется)

Загружает виджет без блокировки рендеринга страницы:

html
<script
  src="https://cdn.cryptumpay.com/2.3.2/widget.min.js"
  async
  integrity="sha384-jOAC1EYj7n6L3AUMR8dzHWi2B64sOghCmTyjCR2sqlZr4vw3YbabmSnHVyjnx8i6"
  crossorigin="anonymous"
></script>

<script>
// Ждём загрузки виджета
document.addEventListener('CryptumPay:ready', (event) => {
  const button = new event.detail.Button('payment-button');
});
</script>

Преимущества:

  • ✅ Быстрая первоначальная загрузка страницы
  • ✅ Не блокирует парсинг HTML
  • ✅ Лучшие показатели Core Web Vitals
  • ✅ Рекомендуется для продакшена

Особенности:

  • ⚠️ Необходимо использовать событие CryptumPay:ready
  • ⚠️ Инициализация кнопки откладывается

Лучшая практика

Всегда ждите события CryptumPay:ready перед созданием экземпляров кнопки — это гарантирует полную загрузку виджета.

Синхронная загрузка

Загружает виджет немедленно:

html
<script
  src="https://cdn.cryptumpay.com/2.3.2/widget.min.js"
  integrity="sha384-jOAC1EYj7n6L3AUMR8dzHWi2B64sOghCmTyjCR2sqlZr4vw3YbabmSnHVyjnx8i6"
  crossorigin="anonymous"
></script>

<script>
// Виджет доступен немедленно
const button = new CryptumPay.Button('payment-button');
</script>

Преимущества:

  • ✅ Немедленная доступность
  • ✅ Более простой код
  • ✅ Удобно для тестирования

Особенности:

  • ⚠️ Блокирует рендеринг страницы
  • ⚠️ Медленнее первоначальная загрузка
  • ⚠️ Не рекомендуется для продакшена

Сравнение

ПараметрAsyncSync
Скорость загрузки✅ Быстрая⚠️ Медленнее
Простота кода⚠️ Нужно событие✅ Прямой доступ
Продакшен✅ Рекомендуется⚠️ Не рекомендуется
Влияние на SEO✅ Лучше⚠️ Хуже

Размещение в HTML

Рекомендуемая структура

Разместите скрипт в <head> с async:

html
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Мой магазин</title>
  
  <!-- CryptumPay Widget -->
  <script
    src="https://cdn.cryptumpay.com/2.3.2/widget.min.js"
    async
    integrity="sha384-jOAC1EYj7n6L3AUMR8dzHWi2B64sOghCmTyjCR2sqlZr4vw3YbabmSnHVyjnx8i6"
    crossorigin="anonymous"
  ></script>
</head>
<body>
  <!-- Ваш контент -->
  <div id="payment-button"></div>
  
  <!-- Инициализация после DOM ready -->
  <script>
  document.addEventListener('CryptumPay:ready', (event) => {
    const button = new event.detail.Button('payment-button');
  });
  </script>
</body>
</html>

Альтернатива: перед </body>

Можно разместить перед закрывающим тегом </body>:

html
<body>
  <!-- Ваш контент -->
  <div id="payment-button"></div>

  <script>
  document.addEventListener('CryptumPay:ready', (event) => {
    const button = new event.detail.Button('payment-button');
  });
  </script>
  
  <!-- Загрузка виджета -->
  <script
    src="https://cdn.cryptumpay.com/2.3.2/widget.min.js"
    async
    integrity="sha384-jOAC1EYj7n6L3AUMR8dzHWi2B64sOghCmTyjCR2sqlZr4vw3YbabmSnHVyjnx8i6"
    crossorigin="anonymous"
  ></script>
</body>

Проверка установки

Проверьте загрузку

Откройте консоль браузера и убедитесь, что виджет загружен:

javascript
console.log(typeof CryptumPay); // Должно вывести "object"
console.log(CryptumPay.Button);  // Должно вывести функцию

Ошибка проверки целостности

Если проверка целостности не прошла, вы увидите ошибку:

Failed to find a valid digest in the 'integrity' attribute

Решение:

  1. Возьмите правильный тег <script> из документации
  2. Скопируйте оба атрибута: src и integrity
  3. Убедитесь в отсутствии опечаток и изменений

Следующие шаги

Распространяется под лицензией MIT.