3.1.1. Концептуальный обзор#
3.1.1.1. Об этом учебнике#
В этом руководстве рассматривается обработка платежей с помощью бэкенда продавца GNU Taler. Аудитория этого руководства — разработчики продавцов (например, интернет-магазинов), которые работают над интеграцией GNU Taler с фронтендом, ориентированным на клиентов, и бэк-офисом, ориентированным на персонал.
В этой главе объясняются некоторые базовые понятия. Во второй главе вы узнаете, как выполнять основные платежи.
Эта версия учебника содержит примеры для Python3. В ней используется библиотека requests для HTTP-запросов. Версии для других языков/сред также доступны.
Если вы хотите посмотреть на несколько простых работающих примеров, ознакомьтесь со следующими:
Продавец эссе, который продаёт отдельные главы книги.
Страница пожертвований, принимающая пожертвования на программные проекты и выдающая квитанции о пожертвованиях.
Плагин WooCommerce, который представляет собой комплексную интеграцию в веб-магазин, включая бизнес-процесс возврата денег.
3.1.1.2. Обзор архитектуры#
Программный стек Taler для продавца состоит из следующих основных компонентов:
Фронтенд, взаимодействующий с браузером клиента. Фронтенд позволяет клиенту создать корзину и оформить заказ. После оплаты он запускает соответствующую бизнес-логику для выполнения заказа. Этот компонент не входит в комплект поставки Taler, а предполагается, что он существует у продавца. В этом руководстве описано, как разработать фронтенд Taler.
Платежный бэкенд, специфичный для Taler, который облегчает фронтенду обработку финансовых транзакций с помощью Taler. В этом уроке вы будете использовать публичный бэкенд sandbox. Для производственного использования вы должны либо настроить свой собственный бэкенд, либо попросить другого человека сделать это за вас.
Следующее изображение иллюстрирует различные взаимодействия этих ключевых компонентов:
Бэкенд обеспечивает поддержку криптографических протоколов, хранит специфическую для Taler финансовую информацию и взаимодействует с обменником GNU Taler через Интернет. Фронтенд получает доступ к бэкенду через RESTful API. В результате фронтенду никогда не приходится напрямую общаться с обменником, а также не приходится иметь дело с конфиденциальными данными. В частности, ключи подписи продавца и информация о банковском счёте инкапсулируются в бэкенде Taler.
Некоторые функции бэкенда («публичный интерфейс») открыты для браузера клиента напрямую. В HTTP API все приватные конечные точки (для бэк-офиса) имеют префикс /private/. В данном руководстве рассматриваются конечные точки /private/. Публичный интерфейс используется непосредственно кошельком и не имеет значения для продавца (кроме того, что API должен быть открыт).
3.1.1.3. Публичный бэкенд sandbox и аутентификация#
Способ аутентификации фронтенда для бэкенда Taler зависит от конфигурации. См. Руководство оператора бэкенда продавца.
Публичный бэкенд sandbox https://backend.demo.taler.net/instances/sandbox/ использует ключ API в заголовке Authorization. Значение этого заголовка должно быть Bearer secret-token:sandbox для публичного бэкенда sandbox.
>>> import requests
>>> requests.get("https://backend.demo.taler.net/instances/sandbox/private/orders",
... headers={"Authorization": "Bearer secret-token:sandbox"})
<Response [200]>
Если возвращается код состояния HTTP, отличный от 200, значит, что-то пошло не так. Вам следует выяснить, в чем проблема, прежде чем продолжать работу над этим уроком.
Бэкенд sandbox https://backend.demo.taler.net/instances/sandbox/ использует KUDOS в качестве воображаемой валюты. Монеты, деноминированные в KUDOS, можно вывести с сайта https://bank.demo.taler.net/.
3.1.1.4. Экземпляры продавца#
Один сервер бэкенда продавца Taler может использоваться несколькими продавцами, которые являются отдельными хозяйствующими субъектами. Каждому из этих отдельных хозяйствующих субъектов присваивается экземпляр продавца, который идентифицируется буквенно-цифровым идентификатором экземпляра. Если идентификатор экземпляра не указан, предполагается идентификатор экземпляра admin.
На сайте https://backend.demo.taler.net/ настроены следующие экземпляры продавцов:
GNUnet(проект GNUnet), доступен по адресу https://backend.demo.taler.net/instances/gnunet/FSF(Фонд свободного программного обеспечения), доступен по адресу https://backend.demo.taler.net/instances/fsf/Tor(проект Tor), доступен по адресу https://backend.demo.taler.net/instances/tor/admin(Kudos Inc.), доступен по адресу https://backend.demo.taler.net/sandbox(для тестирования.), доступен по адресу https://backend.demo.taler.net/instances/sandbox/
Примечание
Это вымышленные продавцы, используемые для наших демонстраций, не связанные с соответствующими проектами и не утверждённые ими официально.
Все конечные точки для экземпляров предлагают один и тот же API. Таким образом, используемый экземпляр просто указывается в базовом URL-адресе бэкенда продавца.
3.1.1.5. Видеоурок#
На этой странице собрана вся документация к видеоуроку, знакомящему с API продавца Taler.
3.1.1.5.1. Видео#
3.1.1.5.2. Требования#
Требуется для этой серии уроков:
- Бэкенд продавца TalerДля удобства мы рекомендуем вам использовать https://backend.demo.taler.net/instances/sandbox/.
- Экземпляр кошелька TalerИнструкции по настройке доступны на сайте https://wallet.taler.net, хотя для данного урока они не требуются.
- Знание программного обеспечения для управления REST API или соответствующие навыки программированияВ этой серии видео мы будем использовать свободное программное обеспечение Insomnia, доступное для загрузки на сайте https://insomnia.rest.В качестве введения в этом видео будет показано, как экспортировать рабочий код из подготовленных запросов в Insomnia на Python (или любом другом поддерживаемом языке) и выполнять их, но в следующих уроках это больше не будет демонстрироваться.
3.1.1.5.3. Уведомление о демонстрационном бэкенде#
Для этого урока настоятельно рекомендуется использовать демонстрационный онлайн-сервис продавца Taler https://backend.demo.taler.net/instances/sandbox/.
Ключ доступа: sandbox.
3.1.1.5.4. Информация о секретном токене#
Секретный токен соответствует документу RFC 8959. Подробнее о нем можно узнать здесь: https://datatracker.ietf.org/doc/html/rfc8959. Помните, что это токен Bearer, и заголовок авторизации должен указывать его.
Ваш заголовок авторизации должен выглядеть следующим образом:Authorization: Bearer secret-token:<access key>
3.1.1.5.5. Другие учебники#
Для просмотра дополнительных руководств вы можете просмотреть этот сайт или зайти на https://docs.taler.net, чтобы получить самую свежую документацию по сервисам Taler.