Интеграция криптоплатежей в Shopify
Shopify допускает кастомные платёжные методы через два механизма: Shopify Payments (только для сертифицированных провайдеров) и Offsite Payment Gateways — редирект на внешнюю страницу оплаты. Для криптоплатежей доступен второй путь, либо готовые приложения из Shopify App Store.
Путь 1: Готовое приложение (2–4 часа)
Если требования стандартные — быстрее использовать существующие решения:
- Coinbase Commerce — официальное приложение, поддержка ETH, BTC, USDC, DOGE, LTC, BCH. Бесплатное, 1% комиссия. Хорошо документированная интеграция.
- NOWPayments — 300+ монет, автоконвертация в стейблкоины, собственный Shopify плагин.
- BitPay — enterprise-ориентированный, B2B сценарии, USDC settlement.
Установка через Shopify App Store, в настройках магазина добавляем как альтернативный метод оплаты. Без кода.
Путь 2: Кастомный Offsite Gateway
Когда нужен полный контроль над процессом — строим собственный gateway через Shopify's Payment App API.
Регистрация Payment App: создаём Shopify Partner App с типом payment_app, указываем redirect URL и callback URL:
// После редиректа с checkout Shopify отправит сюда данные
// POST /shopify/payment-initiate
{
"id": "gid://shopify/PaymentSession/...",
"payment": {
"amount": "99.99",
"currency": "USD",
"proposed_at": "2024-01-15T10:30:00Z"
},
"merchant_id": "...",
"cancel_url": "https://...",
"redirect_url": "https://..."
}
Флоу оплаты:
Shopify Checkout → Наш Payment App → Страница выбора крипты
→ Генерация deposit адреса → Ожидание on-chain
→ Подтверждение → Resolve/Reject сессии через Shopify API
Resolve payment session после подтверждения on-chain:
const RESOLVE_MUTATION = `
mutation paymentSessionResolve($id: ID!) {
paymentSessionResolve(id: $id) {
paymentSession {
id
state { ... on PaymentSessionStateResolved { code } }
}
userErrors { field message }
}
}
`;
async function resolvePaymentSession(sessionId: string, shopDomain: string) {
const response = await fetch(
`https://${shopDomain}/payments_apps/api/2024-01/graphql.json`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Shopify-Access-Token": process.env.SHOPIFY_ACCESS_TOKEN!,
},
body: JSON.stringify({
query: RESOLVE_MUTATION,
variables: { id: sessionId },
}),
}
);
return response.json();
}
При отмене или истечении времени — вызываем paymentSessionReject.
Страница кастомного чекаута
Shopify требует, чтобы payment app возвращал пользователя на redirect_url после успешной оплаты. Наша страница:
- Показывает QR-код с deposit адресом и суммой в крипте
- Polling или WebSocket для real-time статуса
- Countdown таймер (стандарт — 15–30 минут)
- После подтверждения — resolve session + редирект
Сумма в крипте: рассчитываем по текущему курсу с буфером +1–2% на slippage и короткое время конвертации. Фиксируем курс на TTL сессии.
Тестирование
Shopify предоставляет sandbox-среду для payment apps. Тестовые платежи без реальных транзакций — через специальные тестовые сессии в Partner Dashboard.
Для реальных on-chain тестов: Sepolia (ETH testnet) с тестовыми токенами, BSC testnet (chainId 97) с testnet BNB.
Ориентиры по срокам
Подключение готового Coinbase Commerce или NOWPayments: 4–8 часов (регистрация аккаунта + установка + тест). Кастомный Payment App с собственным UI и логикой подтверждений: 2–3 дня разработки плюс время на review в Shopify App Store (если нужна публикация).







