Интеграция платёжных шлюзов Shopify Payments

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Интеграция платёжных шлюзов Shopify Payments
Простая
~2-3 рабочих дня
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Интеграция платёжных шлюзов 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 аккаунт и approval):

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 комиссия снижена. Это нужно учитывать при выборе провайдера для магазинов в поддерживаемых странах.