Merchant Web Services - холдирование

Веб-сервисы Яндекс.Кассы для магазинов по управлению заказами (Merchant Web Services или MWS) предоставляют интерфейс для защищенного взаимодействия автоматизированной информационной системы магазина и Яндекс.Кассы через интернет.

С помощью MWS магазин может совершать возвраты, подтверждать и отменять отложенные платежи, а также повторять платежи банковской картой (если плательщик на это согласился). Конкретному магазину могут быть доступны не все запросы. Это зависит от особенности реализации данного протокола и от условий договора с Яндекс.Кассой.

Процедура обмена сертификатами

Официальная страница: Обмен сертификатами

Необходимо создать ключевую пару со следующими параметрами:

  • Тип криптографии: RSA
  • Размер ключа: 2048 бит
  • Хэш-функция: SHA-1
  1. Создание приватного ключа

    Создаем на своей стороне приватный ключ. Это секретная информация. Файл с приватным ключем зашифрован и защищен паролем.

    openssl genrsa -des3 -out private.key 2048
    
  2. Создание запроса на сертификат

    Используя приватный ключ, создаем «запрос на сертификат», содержащий в себе открытую часть приватного ключа.

    openssl req -new -key private.key -out request.csr
    
    Параметр Значение
    Country Name (2 letter code) RU
    C (State) Russia
    L (Locality) Пустое значение
    O (Organization Name) Полное наименование юридического лица, записанное латинскими буквами
    OU (Organizational Unit Name) Пустое значение
    CN (Common Name) /business/userName, где userName это имя пользователя, выданное при подключении Контрагента к Оператору
    E (email) Адрес электронной почты ответственного за подключение технического специалиста или менеджера со стороны Контрагента

    Далее, необходимо получить текстовое представление запроса на сертификат.

    openssl req -in request.csr -noout -text
    
    Certificate Request:
        Data:
            Version: 0 (0x0)
            Subject: C=RU, ST=Russia, O=OOO Example, CN=/business/example/emailAddress=predpriyatie@example.com
            Subject Public Key Info:
                Public Key Algorithm: rsaEncryption
                RSA Public Key: (2048 bit)
                    Modulus (2048 bit):
                        00:c6:5a:c0:c4:6f:0d:e7:47:bc:10:52:b9:fe:81:
                        28:22:a9:9e:43:f6:d0:a5:15:d1:c8:38:a8:a1:ea:
                        7b:f9:62:c4:cd:54:18:ac:8d:8f:c4:9b:30:b0:64:
                        04:61:94:9a:b6:d1:35:83:a3:ff:c4:77:5b:4d:ef:
                        ac:cd:24:b1:da:55:71:74:17:b9:02:12:d0:66:b4:
                        ef:13:11:d8:33:b0:39:cd:97:2d:16:ac:ef:ac:8d:
                        cb:d8:82:f0:9d:9e:2a:e2:4e:a6:20:6d:e5:b6:2c:
                        35:36:f6:d7:84:db:01:7b:34:dc:67:3a:2c:03:c2:
                        99:72:92:d5:56:2b:f1:5f:d1:73:b5:c6:f9:45:cd:
                        08:c0:47:cb:9a:e6:b7:dd:fd:c5:5d:f3:df:e4:e9:
                        d6:1e:40:3d:07:66:94:90:8e:a6:02:0e:4e:74:5e:
                        4e:77:cf:2a:23:83:53:20:ff:d5:4e:68:de:0c:25:
                        0c:be:d7:71:6d:82:49:6f:24:6d:73:8c:04:6e:ba:
                        de:b2:28:87:34:b8:fc:c9:48:2f:0b:d1:e6:19:74:
                        a1:72:7c:38:16:5c:8f:ab:46:b7:73:41:ec:4e:10:
                        9c:7b:84:e0:91:2e:93:26:79:b4:cd:2e:81:33:36:
                        6d:d3:0b:b8:62:f6:52:a0:47:e8:7b:ff:d9:cd:f4:
                        58:eb
                    Exponent: 65537 (0x10001)
            Attributes:
                a0:00
        Signature Algorithm: sha1WithRSAEncryption
            70:4e:15:0a:49:cf:40:97:10:55:50:a0:22:a1:0c:01:d7:15:
            9b:a1:a6:f1:6b:8f:a2:fb:5c:03:b3:39:78:50:26:10:77:3d:
            79:7e:b4:70:62:8e:82:1c:7d:69:2d:ad:a6:ee:32:40:ab:1b:
            62:c3:a6:bc:e6:94:f3:1c:b6:08:d6:dd:94:64:b7:84:08:dc:
            41:2b:27:1e:fe:7d:0c:e0:97:3f:6e:9f:86:91:6d:50:e6:77:
            95:64:51:95:20:4e:1d:1c:fe:99:a6:21:fa:36:fd:a1:ba:a0:
            89:06:27:42:86:0f:7d:75:c0:69:2f:72:6e:3f:2b:d9:b3:fb:
            0e:82:e6:7e:03:c6:b9:0a:a1:ee:3e:0c:19:b1:40:28:06:5d:
            96:34:91:2c:0a:94:d5:24:2c:f2:b1:d7:09:01:2d:2a:70:2b:
            50:57:4e:03:77:40:4d:2f:aa:1d:8b:9e:86:5d:94:89:d4:0d:
            70:88:78:3f:1d:1f:f8:c6:f7:f9:13:c3:08:1c:34:21:e2:ac:
            e7:58:ed:c9:25:b2:b1:a0:00:82:02:a2:cb:72:b0:f9:f1:b0:
            b9:96:f3:8e:90:66:14:70:2d:3f:e8:37:51:58:41:e8:87:3f:
            c1:a9:04:3d:84:26:44:b8:5d:07:af:79:99:d6:14:c8:70:6c:
            a3:34:b1:79
    

    Далее, необходимо выделить электронную подпись запроса на сертификат, блок текста, следующий за строкой “Signature Algorithm: sha1WithRSAEncryption”.

    70:4e:15:0a:49:cf:40:97:10:55:50:a0:22:a1:0c:01:d7:15:
    9b:a1:a6:f1:6b:8f:a2:fb:5c:03:b3:39:78:50:26:10:77:3d:
    79:7e:b4:70:62:8e:82:1c:7d:69:2d:ad:a6:ee:32:40:ab:1b:
    62:c3:a6:bc:e6:94:f3:1c:b6:08:d6:dd:94:64:b7:84:08:dc:
    41:2b:27:1e:fe:7d:0c:e0:97:3f:6e:9f:86:91:6d:50:e6:77:
    95:64:51:95:20:4e:1d:1c:fe:99:a6:21:fa:36:fd:a1:ba:a0:
    89:06:27:42:86:0f:7d:75:c0:69:2f:72:6e:3f:2b:d9:b3:fb:
    0e:82:e6:7e:03:c6:b9:0a:a1:ee:3e:0c:19:b1:40:28:06:5d:
    96:34:91:2c:0a:94:d5:24:2c:f2:b1:d7:09:01:2d:2a:70:2b:
    50:57:4e:03:77:40:4d:2f:aa:1d:8b:9e:86:5d:94:89:d4:0d:
    70:88:78:3f:1d:1f:f8:c6:f7:f9:13:c3:08:1c:34:21:e2:ac:
    e7:58:ed:c9:25:b2:b1:a0:00:82:02:a2:cb:72:b0:f9:f1:b0:
    b9:96:f3:8e:90:66:14:70:2d:3f:e8:37:51:58:41:e8:87:3f:
    c1:a9:04:3d:84:26:44:b8:5d:07:af:79:99:d6:14:c8:70:6c:
    a3:34:b1:79
    

    Выделенный блок текста следует вставить в поле «Электронная подпись запроса на сертификат» заявки на сертификат (см. Форма заявки на сертификат)

  3. Отправка запроса на сертификат в Яндекс.Кассу

    Небходимо отправить:

    • Файл, содержащий запрос на сертификат (в примере файл request.csr), посредством электронной почты ответственному за подключение менеджеру со стороны Оператора;
    • Заявку на сертификат по форме ответственному за подключение менеджеру со стороны Оператора.
  4. Установка сертификата

    В ответ на заявку менеджер со стороны Яндекса отправит вам файл с сертификатом. Срок действия сертификата 1 год. Необходимо склеить пару сертификат и приватный ключ. В процессе склеивания необходимо указать пароль

    openssl pkcs12 -export -in 39101.cer -inkey private.key -out example.p12
    

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

Отложенные платежи

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

Возврат

Чтобы включить возможность возврата платежей необходимо включить настройку “Включить возврат” и, при необходимости, выбрать статус, который будет выставляться заказам после возврата.