Интеграция для онлайн-магазинов (без SDK)
Совет
Мы создали этот способ для тех, кто хочет использовать API для создания и использования прямой ссылки на платежную форму Яндекс Пэй.
Но лучше использовать API Яндекс Пэй вместе с нашими готовыми библиотеками умных бейджей, виджетов и кнопок оплаты (SDK), чтобы не потерять преимущества сервиса.
План интеграции
-
Подайте заявку в личном кабинете и дождитесь письма об активации тестовой среды.
-
Обратитесь к методу /orders, чтобы создать ссылку на платежную форму Яндекс Пэй, укажите параметры метода, например:
Параметр Описание cart
Свойства корзины товаров, включая код и наименование товаров availablePaymentMethods
Доступные клиенту методы оплаты -
URL формы оплаты возвращается в поле
paymentUrl
ответа на запрос /orders. Перенаправьте пользователя на этот URL для оплаты заказа.Примеры кода
httpieNodeПример получения ссылки на оплату с помощью HTTPie:
http POST https://sandbox.pay.yandex.ru/api/merchant/v1/orders \ Authorization:"API-Key a5f49c84-0baa-41e1-814f-6f99746a6987" \ cart:='{}' \ orderId=Order-$RANDOM \ currencyCode=RUB \ availablePaymentMethods:='["CARD", "SPLIT"]' \ redirectUrls:='{"onError": "https://merchant.example/error.html", "onSuccess": "https://merchant.example/success.html"}' \ cart:='{ "total": {"amount": "10"}, "items": [{"productId": "p1", "title": "Яндекс.Станция Мини", "quantity": {"count": 1}, "total": "10"}]}'
Пример кода на бэкенде магазина на Node.js:
const https = require("https"); function createOrder(orderId) { const ORDER_CREATE_URL = "https://sandbox.pay.yandex.ru/api/merchant/v1/orders"; // Для sandbox-окружения в качестве ключа авторизации используется идентификатор продавца. // Для production-окружения API Key необходимо получить в личном кабинете продавца. const API_KEY = "a5f49c84-0baa-41e1-814f-6f99746a6987"; const orderData = { // Уникальный ID заказа в системе продавца (обязательный параметр) orderId: orderId, // Информация о корзине покупателя cart: { // Состав корзины items: [ { productId: "3", total: "15980.00", title: "Яндекс.Станция Мини с часами, красный гранат", quantity: { count: "2", }, }, ], // Итоговая сумма заказа total: { amount: "15480.00", }, }, // Код валюты заказа (ISO 4217) currencyCode: "RUB", // Merchant ID необходимо получить в личном кабинете продавца после регистрации. merchantId: "a5f49c84-0baa-41e1-814f-6f99746a6987", // Ссылки на сайт продавца, по которым будет перенаправлен пользователь после оплаты redirectUrls: { onSuccess: "https://your-site.ru/page/success", onError: "https://your-site.ru/page/error", }, // Доступные методы оплаты. // Варианты: // - ["SPLIT"] — на форме доступна оплата только через Сплит // - ["CARD"] — на форме будет доступна оплата только банковской картой // - ["SPLIT", "CARD"] — на форме будет представлен выбор способа оплаты: карта или Сплит. availablePaymentMethods: ["CARD", "SPLIT"], // Время жизни заказа (в секундах) ttl: 1800, }; const data = JSON.stringify(orderData); const requestOptions = { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Api-Key ${API_KEY}`, }, }; const req = https.request(ORDER_CREATE_URL, requestOptions, (res) => { let response = []; res.on("data", (chunk) => { response.push(chunk); }); res.on("end", () => { response = JSON.parse(Buffer.concat(response).toString()); // На сторону фронтенда необходимо отправить paymentUrl console.log(response.data.paymentUrl); }); }); req.on("error", (err) => { console.log("Error: ", err.message); }); req.write(data); req.end(); } createOrder("your-order-id");
-
Получите подтверждение оплаты заказа при помощи /webhook или опросом метода /orders.
-
Переключите среду с тестовой на боевую. Вы готовы принимать оплату!
-
Протестируйте работу сервиса.
-
Не забудьте про фискализацию.
Способы и механики оплаты
О доступных способах и механиках оплаты читайте в специальном разделе.