B2B

Инструкция по подключению

Сервисы работы с самозанятыми позволяют выполнить онбординг исполнителей (самозанятых), помочь им зарегистрироваться в ФНС в качестве самозанятых (если это необходимо), проверить их налоговый статус и осуществить выплаты по банковским реквизитам счёта, номеру телефона через СБП или номеру карты самозанятого с получением чека или без.

Сервисы поддерживают следующие режимы работы:

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

До начала интеграции с сервисами работы с самозанятыми вам необходимо выполнить следующие действия:

  • Согласовать с менеджером Альфа-Банка индивидуальные тарифы на сервисы работы с самозанятыми и заключить с Альфа-Банком договор об осуществлении расчётов с самозанятыми;
  • Открыть расчетный или номинальный счёт в Альфа-Банке, который будет использоваться для осуществления выплат через сервисы;
  • Подключиться к Альфа Бизнес;
  • Выполнить шаги из чек-листа для партнёров.

Часть сервисов работы с самозанятыми требует использования электронной подписи. Для создания электронной подписи допускается использование RSA сертификата, выпущенного в Альфа-Банке, либо сертификата УКЭП, выпущенного в любом из аккредитованных УЦ. При использовании УКЭП уполномоченным лицом, обладающим правом подписи по доверенности, потребуется выпуск машиночитаемой доверенности (МЧД) на это лицо.

Онбординг исполнителей на сервис Альфа-Банка

Большинство методов для работы с самозанятыми требуют, чтобы исполнитель заключил соглашение с Альфа-Банком. Поэтому необходимо, чтобы компания обеспечила прохождение исполнителем процедуры онбординга, которая состоит из следующих действий:

  1. 1.
    Клиент формирует для исполнителя индивидуальную ссылку на страницу заключения соглашения (онбординга) при помощи метода Создание параметризируемой ссылки на страницу оформления соглашения с Альфа-Банком;
  2. 2.
    Клиент направляет исполнителя любым удобным способом на страницу онбординга по индивидуальной ссылке;
  3. 3.
    Исполнитель заключает соглашение с Альфа-Банком, подтверждая свои действия одноразовым SMS-кодом, после чего перенаправляется по обратной ссылке на ресурс клиента;
  4. 4.
    Клиент при помощи метода Добавление самозанятых в систему загружает данные, которые необходимы для передачи Альфа-Банку прав для взаимодействия с ФНС от лица исполнителя;
  5. 5.
    Альфа-Банк выполняет проверки и направляет исполнителю уведомление о необходимости передать права Альфа-Банку в приложении "Мой налог", если он этого ранее не сделал, или Альфа-Банк ставит исполнителя на учёт, если исполнитель не является самозанятым.

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

Страница онбординга достаточно простая и её можно встраивать в мобильные приложения через WebView.

Выплаты

В сервисах работы с самозанятыми реализованы несколько методов выплат, предназначенных для различных ситуаций. Доступность конкретного метода выплат определяется индивидуальными условиями, на которых осуществляется сотрудничество с Альфа-Банком.

Все методы выплат предполагают асинхронный режим взаимодействия:

  1. 1.
    Сначала необходимо вызвать метод отправки реестра выплат и получить идентификатор, по которому можно будет отслеживать статус обработки отправленного реестра;
  2. 2.
    После отправки реестра необходимо периодически вызывать метод получения статуса обработки реестра, передавая идентификатор, полученный при первом вызове. В ответ будет возвращен список с актуальным состоянием всех выплат из переданного реестра.
Выплата с одновременной регистрацией дохода самозанятого

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

В процессе такой выплаты, Альфа-Банк проверяет налоговый статус получателя и выполняет транзакцию на перевод денежных средств только, если все проверки прошли успешно и он является самозанятым. Если при выполнении транзакции, по каким либо причинам не удалось зарегистрировать доход и получить чек, выплата не проводится.

Следует учитывать, что данный тип выплат возможен только самозанятым, которые прошли процедуру онбординга на сервис Альфа-Банка и предоставили все необходимые полномочия Альфа-Банку в ФНС.

Выплата с проверкой статуса, но без регистрации дохода самозанятого

Такой тип выплат может потребоваться в следующих случаях:

  • обязательство по регистрации дохода в ФНС берет на себя сам клиент или оставляет его на самозанятом - получателе выплаты;
  • компания перечисляет самозанятому денежные средства под ранее зарегистрированный доход;
  • самозанятому возвращаются денежные средства, ранее зарезервированные под уплату налога на профессиональный доход (НПД) (при невозможности уплаты налога за самозанятого).

Для осуществления такого типа выплат проведение онбординга получателя на сервис Альфа-Банка не является обязательным.

Простая выплата

Простая выплата может потребоваться в следующих случаях:

  • осуществляется возврат денежных средств лицу, потерявшему статус самозанятого.

Для осуществления таких выплат проведение онбординга не требуется.

Регистрация дохода без выплаты

Сервис нужен в следующих случаях:

  • потребитель сервиса реализует собственную логику выплат в пользу самозанятых, разделяя этапы перечисления выплаты и регистрации дохода;
  • требуется повторно зарегистрировать ошибочно аннулированный чек.
Использование криптографии и электронной подписи в сервисах работы с самозанятыми

Информация, отправляемая через сервисы работы с самозанятыми, защищена на нескольких уровнях:

  • на транспортном уровне соединение защищается при помощи TLS-сертификата, выпускаемого для клиента;
  • аутентификация и авторизация обеспечивается при помощи токена доступа, который выпускается по "Authorization Code Flow";
  • сервисы, принимающие на вход электронные документы (например, в запросах на перевод или запросе на добавление исполнителей), требуют использования усиленной электронной подписи (RSA или ГОСТ).
Подписание по алгоритму RSA

Для подписания может использоваться сертификат, выпущенный в Альфа-Бизнес, или сертификат, выпущенный при помощи сервиса Alfa API согласно разделу "Электронная подпись".

Сертификат подписания должен соответствовать токену доступа, иначе электронная подпись не будет считаться действительной.

Подписываться должен весь блок данных до массива digestSignatures.

Перед подписанием необходимо провести каноникализацию JSON-данных используя правила rfc8785.

Пример формирования RSA подписи:

    @Override
    public RsaSignResponse sign(RsaSignRequest request) throws Exception {

        Security.addProvider(new BouncyCastleProvider());
        BouncyCastleProvider provider = (BouncyCastleProvider) Security.getProvider("BC");
        PrivateKey key = (PrivateKey) keyStore.getKey(KEYSTORE_ALIAS, KEYSTORE_PWD.toCharArray());
        X509Certificate cert = (X509Certificate) keyStore
                .getCertificate(KEYSTORE_ALIAS);

        CMSTypedData msg = new CMSProcessableByteArray(request.getDataToSign().getBytes());
        CMSSignedDataGenerator signedDataGen = new CMSSignedDataGenerator();
        X509CertificateHolder signCert = new X509CertificateHolder(
                cert.getEncoded());
        ContentSigner signer = new JcaContentSignerBuilder("sha256WithRSAEncryption").setProvider(provider)
                .build(key);

        signedDataGen.addSignerInfoGenerator(new JcaSignerInfoGeneratorBuilder(
                new JcaDigestCalculatorProviderBuilder().setProvider(provider)
                        .build()
        ).setDirectSignature(true).build(signer, signCert));

        // add the signing cert to the signature
        JcaCertStore certs = new JcaCertStore(Collections.singletonList(cert));
        signedDataGen.addCertificates(certs);
        CMSSignedData signedData = signedDataGen.generate(msg, true);
        byte[] signatureBytes = signedData.getEncoded("DER");

        MessageDigest messageDigest = MessageDigest.getInstance("SHA-512");
        byte[] hashedString = messageDigest.digest(request.getDataToSign().getBytes());

        return new RsaSignResponse()
                .setDataToSignBase64(new String(Base64.getEncoder().encode(request.getDataToSign().getBytes(StandardCharsets.UTF_8))))
                .setAttachedSignature(new String(Base64.getEncoder().encode(signatureBytes)))
                .setPublicCertificate(new String(Base64.getEncoder().encode(cert.getEncoded())))
                .setMessageDigest(new String(Base64.getEncoder().encode(hashedString)));
    }
Подписание по алгоритму ГОСТ с использованием сертификата УКЭП

Для подписания может использоваться сертификат УКЭП, выпущенный любым аккредитованным УЦ. Если сертификат принадлежит лицу, обладающим правом подписи по уставу компании главе компании, то он самодостаточен. Если сертификат выпущен для уполномоченного лица, обладающего правом подписи по доверенности, то помимо сертификата потребуется выпустить машиночитаемую доверенность (МЧД).

Сертификат подписания должен соответствовать токену доступа, иначе электронная подпись не будет считаться действительной.

Подписываться должен весь блок данных до массива digestSignatures.

Идентификатор МЧД должен быть помещён в поле poaNumber.

Перед подписанием необходимо провести каноникализацию JSON-данных используя правила rfc8785.