Інтеграція платіжних шлюзів Shopify Payments

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Інтеграція платіжних шлюзів Shopify Payments
Проста
~2-3 робочих дні
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1246
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1170
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    873
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1092
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    830
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    849

Інтеграція платіжних шлюзів Shopify Payments

Shopify надає три рівні інтеграції платіжних систем: вбудований Shopify Payments (Stripe під капотом), сторонні провайдери через Shopify Payment Provider API, та ручний редирект через external_payment_gateway. Вибір залежить від юрисдикції та вимог провайдера.

Shopify Payments

Shopify Payments доступний в США, Великобританії, ЄС, Австралії та низці інших країн. Для бізнесу з СНГ недоступний. Якщо магазин у підтримуваній країні — це найпростіший варіант: включається в настройках, не вимагає коду.

Сторонні провайдери

Для провайдерів, яких немає в офіційному списку Shopify, є два шляхи.

Hosted payment (редирект) — покупець редиректиться на сторінку провайдера. Реалізується через Payment App API (потребує Shopify Partner аккаунту та затвердження):

POST /admin/api/2024-04/payment_sessions.json
{
  "payment_session": {
    "gid": "gid://shopify/PaymentSession/...",
    "payment_method": { "data": { ... } },
    "amount": "150.00",
    "currency": "USD",
    "test": false
  }
}

Через скрипт у темі — простіший, але неофіційний спосіб: додати кастомний payment метод через checkout.liquid (доступно тільки на Shopify Plus). Для звичайного плану Shopify — недоступно.

Інтеграція через Shopify Payment App API

Повноцінний провайдер реєструється як Shopify App з типом payment:

# shopify.app.toml
[payment_gateway_integration]
  merchant_label = "MyPay"
  supports_oversell_protection = false
  supports_3ds = true
  confirmation_callback_url = "https://app.example.com/shopify/confirm"
  payment_session_url = "https://app.example.com/shopify/payment"
  refund_session_url = "https://app.example.com/shopify/refund"
  void_session_url = "https://app.example.com/shopify/void"

Endpoint створення платежу:

// POST /shopify/payment
app.post('/shopify/payment', async (req, res) => {
    const { id, gid, amount, currency, customer_locale, payment_method } = req.body;

    const payment = await myPayClient.createPayment({
        amount: parseFloat(amount),
        currency,
        reference: id,
        redirect_url: `https://app.example.com/shopify/return?session=${id}`,
    });

    res.json({
        payment_method: { data: { payment_method } },
        redirect_url: payment.checkout_url,
        status: 'redirecting',
    });
});

Після оплати — callback на confirmation_callback_url, де статус підтверджується назад у Shopify:

app.post('/shopify/confirm', async (req, res) => {
    const session = await getSession(req.body.id);
    const paymentStatus = await myPayClient.getStatus(session.payment_id);

    res.json({
        status: paymentStatus === 'paid' ? 'success' : 'failure',
    });
});

Shopify Plus: checkout.liquid

На Shopify Plus доступний checkout.liquid — тема checkout. Можна додати кастомний payment option через JavaScript. Це нарушає стандартний flow і ускладнює оновлення теми, але іноді єдиний варіант для специфічних провайдерів.

Повернення

Повернення у Shopify автоматично викликають refund_session_url провайдера. Обробник повинен ініціювати повернення у платіжній системі і повернути статус:

app.post('/shopify/refund', async (req, res) => {
    const { id, payment_id, amount, currency } = req.body;
    await myPayClient.refund(payment_id, { amount: parseFloat(amount), currency });
    res.json({ status: 'success' });
});

Обмеження

Shopify стягує додаткову комісію (0,5–2%) при використанні стороннього провайдера замість Shopify Payments. На Shopify Plus комісія знижена. Це потрібно враховувати при виборі провайдера для магазинів у підтримуваних країнах.