Інтеграція криптоплатежів у Shopify
Shopify допускає кастомні платіжні методи через два механізми: Shopify Payments (тільки для сертифікованих провайдерів) і Offsite Payment Gateways — редирект на зовнішню сторінку оплати. Для криптоплатежів доступний другий шлях, або готові додатки з Shopify App Store.
Шлях 1: Готовий додаток (2–4 години)
Якщо вимоги стандартні — швидше використовувати існуючі рішення:
- Coinbase Commerce — офіційний додаток, підтримка ETH, BTC, USDC, DOGE, LTC, BCH. Безплатно, 1% комісія. Добре задокументована інтеграція.
- NOWPayments — 300+ монет, автоконвертація в stablecoin, власний 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 → Сторінка вибору крипти
→ Генерація адреси депозиту → Очікування 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-код з адресою депозиту і сумою в крипті
- 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 (якщо потрібна публікація).







