SetRetail10 ◾️ Сервис оплаты WB Кошелёк (Вайлдберриз Банк)

Публичное пространство

SetRetail10 ◾️ Сервис оплаты WB Кошелёк (Вайлдберриз Банк)

https://crystals.atlassian.net/browse/SRTZ-4489

https://crystals.atlassian.net/browse/CR-14748

10.4.25.0

Описание

Плагин «WB Кошелёк» реализует интеграцию с платёжной системой Вайлдберриз Банк и предоставляет возможность оплаты на кассах SetRetail10 (POS, SetTouch, SCO) с помощью мобильного приложения Wildberries. Поддерживаются два способа оплаты:

  • Оффлайн оплата (по QR-коду): покупатель предъявляет QR-код из приложения для сканирования кассой.

  • Онлайн оплата (по номеру телефона): покупатель вводит номер телефона, к которому привязан профиль WB.

Доступны следующие операции:

  • Продажа с передачей состава чека.

  • Возврат (полный и частичный) с передачей состава чека.

  • Отмена неоплаченного заказа при выходе из оплаты.

  • Аннулирование чеков оплаты и возврата.

Ценность

  • Для ритейлеров: расширение перечня способов оплаты, повышение лояльности клиентов, увеличение среднего чека.

  • Для покупателей: удобство оплаты через мобильное приложение, быстрый и безопасный процесс.

  • Для финансовых служб: автоматизация передачи состава чека, поддержка возвратов и аннулирования.

Примеры работы

Полная оплата по QR-коду (POS-касса)

  1. Кассир добавляет товары в чек, переходит в режим оплаты и выбирает Оплата WB кошельком.

172.29.19.11_01_04_2026-10_34_18.png
  1. Выбирает способ оплаты По QR-коду.

172.29.19.11_01_04_2026-10_34_37.png
  1. Касса отображает сообщение: “Отсканируйте QR-код с телефона покупателя”.

172.29.19.11_01_04_2026-10_35_57.png
  1. Покупатель в приложении Wildberries выбирает оплату по QR-коду, предъявляет QR для сканирования.

  2. Касса регистрирует оплату, получает подтверждение и завершает транзакцию.

Полная оплата по номеру телефона (SetTouch)

  1. Кассир добавляет товары в чек → выбирает Оплата WB кошельком.

image-20260403-084708.png
  1. Кассир подтверждает сумму оплаты.

image-20260403-085037.png
  1. Выбирает способ оплаты По номеру телефона.

image-20260403-090213.png
  1. На кассе отображается форма для ввода номера телефона.

  2. Кассир вводит номер, к которому привязан профиль WB покупателя.

image-20260403-090435.png
  1. Касса отправляет запрос в сервис, получает ссылку для подтверждения в приложении.

  2. Касса генерирует QR-код на основе полученной ссылки и выводит его на экран или печатает его на кассовом слипе;

  3. Покупатель подтверждает платёж в приложении или по QR-коду.

  4. Касса получает подтверждение и завершает транзакцию.

SetSCO v3

  1. Покупатель добавляет товары в чек, переходит к оплате и нажимает кнопку Еще способы →.

image-20260403-092237.png
  1. Выбирает WB кошелёк.

image-20260403-092419.png
  1. Выбирает способ оплаты По QR-коду.

image-20260403-092615.png
  1. Касса отображает сообщение: “Отсканируйте QR-код из приложения WB”.

image_2026-04-01_17-21-12 (4)-20260401-142137.png
  1. Покупатель в приложении Wildberries выбирает оплату по QR-коду → сканирует QR-код из приложения.

  2. Касса регистрирует оплату, получает подтверждение и завершает транзакцию.

 

В случае, если покупатель выбирает По номеру телефона - отображается форма для ввода номера телефона.

Покупатель вводит номер, к которому привязан профиль WB покупателя → нажимает Подтвердить.

image-20260403-082729.png

Касса отображает сообщение “Отсканируйте QR код для продолжения оплаты.” Покупатель подтверждает платеж в приложении.

image-20260403-082619.png

Ограничения

  1. Возврат возможен только по ранее завершённым оплатам WB Кошелёк. Сумма возврата не может превышать сумму исходной оплаты.

  2. При оплате по QR-коду покупатель может отказаться от сканирования и выбрать другой способ оплаты.

  3. При оплате по номеру телефона покупатель может отклонить платёж в приложении.

  4. Произвольный возврат не поддерживается.

  5. Частичная оплата и возврат поддерживаются только на POS и SetTouch.

Настройка

На сервере

1. На сервере SetRetail/SetCentrum перейдите в раздел Интеграция → Внешние процессинги → кликните .

image-20260402-121911.png
  1. Введите wb в поле поиска → кликните Платежные системы → введите wb в правом поле поиска → установите флажок  WB Кошелёк → кликните СОХРАНИТЬ

image-20260402-122351.png
  1. Кликните по процессингу WB Кошелёк.

image-20260402-123331.png
  1. Введите необходимые настройки на вкладке ОБЩИЕ.

 Параметр

Описание 

 Параметр

Описание 

Адрес подключения *

Адрес подключения к процессингу.

Пример: https://api.wbpay.ru

Код страны (ISO 3166-1) *

Код страны сервера, откуда поступает запрос, в формате ISO 3166-1

Код региона (ISO 3166-2) *

Код региона сервера, откуда поступает запрос, в формате ISO 3166-2

Код валюты *

Код валюты совершения операции. Для оплаты в рублях - 643

Ключ авторизации для оффлайн оплаты (Bearer) *

Токен авторизации для оффлайн оплаты из письма

Ключ авторизации для онлайн оплаты (Bearer) *

Токен авторизации для онлайн оплаты из письма

Таймаут соединения (сек., по умолчанию: 3)

Время соединения с сервисом при попытке оплаты.

Таймаут ожидания ответа (сек., по умолчанию: 10)

Время ожидания ответа от сервиса после инициализации оплаты.

Количество попыток для запроса (по умолчанию: 5)

Количество попыток запроса.

Оффлайн оплата (по QR-коду)

Включает возможность оплаты через сканирование QR-кода.

По умолчанию включена.

Онлайн оплата (по номеру телефона)

Включает возможность оплаты путём ввода номера телефона;

По умолчанию выключена.

Если включены оба варианта («Оффлайн оплата» и «Онлайн оплата»), на кассе появляются кнопки для выбора нужного способа оплаты.

Создавать идентификатор транзакции из данных чека

https://crystals.atlassian.net/browse/SRTZ-4578

https://crystals.atlassian.net/browse/CR-15412

10.4.26.0

Включает возможность использования и передачи сформированное по маске значение invoice_id в теле запросов.

Флажок установлен (настройка включена):

  1. Производится регистрация оффлайн оплаты (по QR-коду) POST /api/v1/orders/offline/register;

  2. Производится онлайн-оплата (по номеру телефона) POST /api/v1/orders/online/register-by-phone;

  3. Производится регистрация возврата POST /api/v1/refunds/register.

  4. Формируется значение invoice_id по маске XXXX_YY_ZZZ_FFFFFF, где:

    • XXXX – код локации в формате СЭТ (Номер магазина);

    • YY – номер кассы;

    • ZZZ – номер чека;

    • FFFFFF – время продажи/возврата в формате ЧЧММСС.

    • Все компоненты формата заполняются ведущими нулями до требуемой длины. Пример сформированного значения: 0092_12_015_140847.

 

Флажок снят (настройка включена):

  • В поле invoice_id передается значение сформированное из UID чека + порядковый номер транзакции / timestamp.

 

image-20260422-154823.png

 

  1. На вкладке ОПЛАТА WB КОШЕЛЬКОМ установите дополнительные флажки настроек, если требуется → кликните СОХРАНИТЬ.

 Параметр

Описание 

 Параметр

Описание 

требует пропорциональный возврат

При возврате позиций чека, оплаченного смешанной оплатой, типы оплат будут пропорционально распределены между возвращаемыми позициями.

частичный возврат чека запрещен

Разрешен только возврат чека полностью

возврат по чеку доступен всегда

Функциональность не поддерживается в данной версии плагина.

допускать запрет других типов оплат

Функциональность не поддерживается в данной версии плагина.

использовать одну оплату для разделенных чеков

Функциональность не поддерживается в данной версии плагина.

признак автоматического применения оплаты для физ.лиц (оплата будет скрыта)

Функциональность не поддерживается в данной версии плагина.

признак автоматического применения оплаты для физ.лиц (оплата будет скрыта)

Функциональность не поддерживается в данной версии плагина.

разрешить использовать оплату для выдачи наличных

Функциональность не поддерживается в данной версии плагина.

код оплаты для передачи в систему событий

ru.crystals.plugins.payment.wbwallet

возвращать дополнительными способами вместо плагина

При оформлении возврата чека, оплаченного WB кошельком, денежные средства могут быть возращены только выбранными типами оплат из списка. Возврат на WB кошелек недоступен.

Дополнительные способы возврата, доступные всегда

Если включена "возвращать дополнительными способами вместо плагина", то этот список используется вместо плагина. Выбранные типы оплат должны быть разрешены в настройках шаблона кассы.

Список типов оплат, всегда используемых для выполнения возврата в дополнение к WB Кошельку.

Способы возврата, дополнительно доступные по решению плагина

Если включена "возвращать дополнительными способами вместо плагина", то этот список не применяется. Выбранные типы оплат должны быть разрешены в настройках шаблона кассы.

Список типов оплат, используемых для выполнения возврата при невозможности завершить возврат плагинным типом оплаты.

Функциональность не поддерживается в данной версии плагина.

image-20260402-092500.png
  1. Перейдите в Кассовый модуль → Шаблоны касс → кликните требуемый шаблон.

image-20260402-084053.png
  1. Перейдите на вкладку ПРОЦЕСС ТОРГОВЛИ → НАСТРОЙКИ → в секции Типы оплат установите флажок  Оплата WB кошельком → кликните СОХРАНИТЬ. Перезагрузите кассовый модуль для применения настроек.

image-20260402-083920.png

 

На кассе

  1. В корень папки /home/tc/crystal_cash загрузите файл wbwallet.settings с локальными настройками в формате JSON.

Идентификатор оффлайн терминала

Идентификатор офлайн терминала из письма

Приватный ключ для оффлайн оплаты

Приватный ключ офлайн терминала из письма (содержимое .pem)

Идентификатор онлайн терминала

Идентификатор онлайн терминала из письма

Приватный ключ для онлайн оплаты

Приватный ключ онлайн терминала из письма (содержимое .pem)

Пример:

{ "offlineTerminalId": "идентификатор терминала для оплаты по QR", "offlinePrivateKey": "приватный ключ для оплаты по QR", "onlineTerminalId": "идентификатор терминала для оплаты по номеру телефона", "onlinePrivateKey": "приватный ключ для оплаты по номеру телефона" }
  1. Установите права на файл командой sudo chmod -R 666 /home/tc/storage/crystal-cash/wbwallet.settings.

  2. Перезагрузите кассу командой cash reboot.

 

Экспорт в ERP

Экспорт в ERP-системы осуществляется в соответствии с интеграционной документацией:

Экспорт чека продажи

<purchase ...> 

  • <payments>

    • ru.crystals.plugins.payment.wbwallet - оплата WB Кошелёк

      • cash.transaction.id - идентификатор транзакции (invoice_id из параметров запроса на регистрацию оплаты)

      • cash.transaction.date - дата транзакции

      • payment.amount - сумма оплаты

      • wb.payment.type - способ оплаты:

        • QR - по QR-коду

        • PHONE - по номеру телефона

      • operation.id - идентификатор операции (order_id из ответа на запрос регистрации оплаты)

      • terminal.id - идентификатор терминала (terminal_id из параметров запроса на регистрацию оплаты)

  • </payments>

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <purchases count="1"> <purchase tabNumber="99999" userName="Иванов Иван Иванович" operationType="true" cashOperation="INCOME" operDay="2026-04-02+03:00" shop="779" cash="2" shift="154" number="1" saletime="2026-04-02T22:42:22.736+03:00" begintime="2026-04-02T22:31:54.477+03:00" amount="1134.45" discountAmount="0.00" inn="1234567890" fiscalDocNum="318;1"> <plugin-property key="PROMO_PRINT_DISABLED" value="true"/> <plugin-property key="FISCAL_DOC_ID" value="318"/> <plugin-property key="FN_DOC_NUM_IN_SHIFT" value="2"/> <plugin-property key="CASHIER_NAME" value="Иванов Иван Иванович"/> <plugin-property key="UID_PURCHASE" value="f25c7801-587b-4910-a800-461f9cf45fd1"/> <plugin-property key="KPP" value="987654321"/> <plugin-property key="CASH_TIME_ZONE" value="+03:00"/> <positions> <position order="1" departNumber="583" goodsCode="0000220" barCode="4216420000220" count="1.000" cost="1134.45" nds="20.0" ndsSum="189.08" discountValue="0.00" costWithDiscount="1134.45" amount="1134.45" dateCommit="2026-04-02T22:31:54.539+03:00" insertType="2"> <plugin-property key="lineNumberAfterRegistration" value="1"/> <plugin-property key="countryName" value="Россия"/> <plugin-property key="salesTax" value="0"/> <plugin-property key="ffdTag2108"/> <plugin-property key="minimalPrice" value="-1"/> </position> </positions> <payments> <payment order="0" typeClass="ru.crystals.plugins.payment.wbwallet" amount="1134.45" description="Оплата WB кошельком"> <plugin-property key="cash.transaction.id" value="f25c7801-587b-4910-a800-461f9cf45fd1_1775158936272"/> <plugin-property key="cash.transaction.date" value="1775158936"/> <plugin-property key="payment.amount" value="113445"/> <plugin-property key="wb.payment.type" value="PHONE"/> <plugin-property key="operation.id" value="83ffa74f532c43209b0fb31f01b1abca_1775158937"/> <plugin-property key="terminal.id" value="sandbox_f7b612bea1794dd2896c8ae7859a5271_3"/> </payment> </payments> </purchase> </purchases>

Экспорт чека возврата

<purchase ...> 

  • <payments>

    • ru.crystals.plugins.payment.wbwallet - оплата WB Кошелёк

      • cash.transaction.id - идентификатор транзакции (invoice_idиз параметров запроса на регистрацию возврата)

      • cash.transaction.date - дата транзакции

      • refund.amount - сумма возврата

      • wb.payment.type - способ оплаты:

        • QR - по QR-коду

        • PHONE - по номеру телефона

      • refund.id - идентификатор операции (refund_id из ответа на запрос регистрации возврата)

      • terminal.id - идентификатор терминала

  • </payments>

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <purchases count="1"> <purchase tabNumber="99999" userName="Иванов Иван Иванович" operationType="false" cashOperation="INCOME" operDay="2026-04-02+03:00" shop="779" cash="2" shift="154" number="7" saletime="2026-04-03T16:48:15.520+03:00" begintime="2026-04-03T16:48:02.426+03:00" amount="40.00" discountAmount="0.00" inn="1234567890" fiscalDocNum="322;7"> <plugin-property key="PROMO_PRINT_DISABLED" value="true"/> <plugin-property key="FISCAL_DOC_ID" value="322"/> <plugin-property key="FN_DOC_NUM_IN_SHIFT" value="6"/> <plugin-property key="CASHIER_NAME" value="Иванов Иван Иванович"/> <plugin-property key="UID_PURCHASE" value="91cd217f-9b0a-4dfd-90ef-c15e1278331c"/> <plugin-property key="KPP" value="987654321"/> <plugin-property key="CASH_TIME_ZONE" value="+03:00"/> <positions> <position order="1" departNumber="11" goodsCode="2400004" barCode="2400004" count="2.000" cost="20.00" nds="20.0" ndsSum="6.67" discountValue="0.00" costWithDiscount="20.00" amount="40.00" dateCommit="2026-04-03T16:48:02.443+03:00" insertType="2"> <plugin-property key="lineNumberAfterRegistration" value="1"/> <plugin-property key="returnReason" value="1"/> <plugin-property key="salesTax" value="0"/> <plugin-property key="ffdTag2108"/> <plugin-property key="minimalPrice" value="-1"/> </position> </positions> <payments> <payment order="0" typeClass="ru.crystals.plugins.payment.wbwallet" amount="40.00" description="Оплата WB кошельком"> <plugin-property key="transaction.id" value="91cd217f-9b0a-4dfd-90ef-c15e1278331c_1775224091430"/> <plugin-property key="transaction.date" value="1775224091"/> <plugin-property key="wb.payment.type" value="PHONE"/> <plugin-property key="refund.amount" value="4000"/> <plugin-property key="terminal.id" value="sandbox_f7b612bea1794dd2896c8ae7859a5271_3"/> <plugin-property key="refund.id" value="0a318c5d85864f648109445a6dc2a1b6_1775224091"/> </payment> </payments> <original-purchase operDay="2026-04-02+03:00" shop="779" cash="2" shift="154" number="6" saletime="2026-04-03T16:47:34.914+03:00"/> </purchase> </purchases>

Статьи по теме