Содержание
Представьте, как было бы здорово, если бы можно было оплачивать что угодно нажатием всего одной кнопки, без возни с переписыванием номера карты или кошелька.
Именно такую кнопку мы обавили в Telegram в этом обновлении: теперь вы можете как покупать любой товар или услугу в один клик, так и продавать что угодно при помощи ботов. Вот, как это выглядит:
При первой покупке вам потребуется указать данные своей карты (да, один раз повозиться с этим всё же придётся) и адрес для доставки. Если ваш аккаунт защищён с помощью двухэтапной авторизации, то вы сможете сохранить всю эту информацию для будущих покупок. Ну и, само собой, вы можете оплатить товар с помощью Apple Pay или Android Pay.
Кто же будет обрабатывать платежи? Ответ прост: любой банк или сервис, который захочет. В частности, в России обработкой платежей будут заниматься Яндекс.Деньги и QIWI, а в Узбекистане — Payme.
Если к системе решат подключиться другие сервисы, мы напишем об этом на специальном канале @BotNewsRu.
Во всей этой системе Telegram выступает в роли посредника между пользователем, разработчиком бота и платёжной системой, которую этот бот использует. Все платёжные данные, которые вы вводите, отправляются напрямую в платёжную систему. Дальше, если система увидела ваш платёж и ;даёт добро, ваши контактные данные (адрес для доставки) отправляется боту, чтобы он ;мог завершить оформление заказа.
У такой системы есть как преимущества, так и недостатки.
Из плюсов: ваши данные будут находиться в безопасности, поскольку Telegram не хранит и не обрабатывает их.
Из минусов: Telegram не сможет обрабатывать жалобы и возвраты средств. Все эти проблемы вам придётся решать самостоятельно: с владельцем бота, платёжной системой или вашим банком.
Однако, Telegram будет контролировать ситуацию в целом и будет блокировать ботов, которые занимаются мошенничеством, вымогательством или прочими нехорошими вещами.
Что делать, если я…
- …обычный пользователь: просто ждите, пока разработчики ботов напишут что-нибудь интересное. А пока можете поиграть с демо-ботом, который продаёт несуществующие вещи: @ShopBot.
- …разработчик ботов: как обычно, читайте документацию и делайте ботов.
- …платёжный сервис: подключайтесь к нашему API.
Удачного шоппинга!
Появление у Telegram собственной бот-платформы вызвало бурный рост в сфере программирования чат-ботов, однако никому не интересно заниматься такой разработкой на благотворительной основе. В версии 4.0 появились платежи в Телеграмм — теперь платить в мессенджере так же легко, как в ближайшем супермаркете. Разберемся, чего ждать с появлением Payment API.
История развития Payment-платформы
В 2015 году в Сан-Франциско состоялась конференция для стартапов TechCrunch Disrupt, на которой Дуров анонсировал появление Payment API. Этот интерфейс предназначается для автоматизации приема разработчиками чат-ботов и игр денежных средств от пользователей. Оплата может происходить как непосредственно создателю робота за пользование его продуктом, так и перечисляться на внешние ресурсы в рамках реализации функционала того или иного сервиса.
В подтверждение развития этих планов, 03.10.16 главный робот Botfather вносит изменения в условия для пользователей встроенной API-платформы. Правила гласят, что в будущем в Telegram будет введена платформа монетизации ботов и других HTML-сервисов, для реализации финансовой отдачи от работы. Также в этом сообщении подчеркивается, что до тех пор создатели бот-приложений не должны встраивать в свои продукты рекламу или пытаться получить оплату от клиентов.
26 апреля 2017 года подписчики Павла Дурова могли наблюдать в его Instagram-аккаунте небольшой ролик о грядущих обновлениях. На видео был продемонстрирован черновик анонса для нового релиза, где подробно описана система платежей в Телеграмм. Вкратце, в тексте сообщалось, что Payment API предназначено для приема денежных средств от подписчиков, и мессенджер не будет брать никаких комиссий. Также было озвучено приглашение подключаться для всех желающих платежных систем. Самые внимательные соотечественники порадовались, что Дуров еще не окончательно забыл родной язык — на его MacBook можно заметить русскую клавиатуру.
18 мая 2017 года вышло крупное обновление для смартфонов: начиная с версии 4.0 в Telegram официально работает платежный API.
Платежи в Телеграмм — основные особенности
Алгоритм платежных операций таков:
- Создатель робота подключает необходимые API-ключи, основываясь на документации Payment API. Также необходимо выбрать провайдера для обработки транзакций из числа подключенных к системе, основываясь на величине комиссий или иных предпочтениях.
- После всех необходимых настроек для владельцев чат-роботов и их покупателей становится доступна кнопка Pay.
- Подписчик бот-сервиса, совершая платеж, указывает свои платежные данные и адрес доставки (при необходимости). Эти данные будут привязаны к аккаунту плательщика, если в настройках включена двухэтапная авторизация. Также доступны мобильные платежи Android и Apple.
- Денежные операции проходят напрямую между двумя сторонами, клиентом и провайдером. Телеграмм не взимает комиссий и не принимает участия в обработке транзакций, а лишь предоставляет Payment-платформу. Данные карт не будут доступны третьим лицам.
- Как следствие — обработки претензий со стороны Telegram не будет. Решение любых конфликтов остается на совести разработчика, процессинговых служб и банков. Тем не менее, команда Павла Дурова обеспечит надежную и качественную модерацию. Сервисы, заслужившие доверие клиентов, получат особую отметку, а недобросовестные проекты — будут блокироваться.
- После успешной оплаты заказчику доступен отчет о совершенной операции со всеми данными о заказе: название товара или услуги, стоимость, краткие платежные сведения и данные о доставке.
На начальном этапе основная предлагаемая процессинговая система — это Stipe, но можно предположить, что в будущем выбор увеличится. Уже сейчас в России подключился сервис Яндекс.Деньги, позже добавится и Qiwi. Выплаты доступны для разработчиков из Индии через Razorpay, в Нигерии, Кении, Гане, Южной Африке, Уганде — через Flutterwave, и в более чем 190 других стран через Paymentwall. Но возможно, некоторым бот-разработчикам придется ждать подключения локальных провайдеров, или проводить платежи из-за рубежа. Еще одна потенциальная сложность связана с законодательной базой для коммерческой деятельности. Будучи физическим лицом, создатель бота не может монетизировать свои труды. Необходимо создание юридического лица, и связанные с этим затраты тоже нужно учитывать.
Разумеется, и продавцы, и покупатели захотят протестировать новый функционал, прежде чем тратить реальные деньги и усилия на разработку. Для этого существует демо-робот Shop Bot, в котором можно пройти по всем шагам от оформления заказа до получения квитанции об оплате. Попробовать потратить небольшую реальную сумму можно с помощью бота Telegram Donate Bot, пожертвовав на развитие проекта от 1 доллара и более.
Альтернативные способы монетизации ботов
Поскольку первоначально у программистов не было прямого способа получать доход от своих разработок, были созданы альтернативные пути монетизации. Существуют российские и зарубежные рекламные сети, которые предлагают владельцам ботов рассылать рекламные сообщения с биржи объявлений. Пример такой рекламной площадки — BotRevenue.com. По предлагаемой схеме подписчики будут получать рекламу вместе с ответом от робота. Таким образом, рекламодатели могут размещать свои посты в самых популярных проектах, а разработчики — получать прибыль. Сервис работает по модели «cost per click».
Однако такие действия, по сути, нарушают политику мессенджера, и нет гарантий, что ваше детище не будет заблокировано командой Telegram. Кроме того, с выходом платформы для отправки и получения платежей непосредственно в Телеграмм, потребность в подобных ухищрениях отпадает.
Прочие нововведения — Instant View и Telescope
В упомянутом релизе были добавлены еще некоторые важные новинки в мессенджере:
- Во-первых, логическое развитие получила опция просмотра внешних ресурсов Instant View. Клиенты давно оценили удобство открытия ссылок непосредственно в Telegram, но количество источников, подключенных к Instant View, было ограничено. Теперь появилась возможность подключить к этой опции любой сайт. Подробнее о технологии мгновенного просмотра читайте в блоге Telegram-store.
- Во-вторых, разработан сервис Telescope. Он доступен по адресу telesco.pe. В названии прослеживается аналогия с сервисом для публикации статей — Telegra.ph. Телескоп предназначен для владельцев публичных каналов в Телеграмм, и в целом напоминает популярный формат Stories. Как работать с Telescope — разбираемся в отдельном посте.
- Наконец, поклонники мессенджера ждали появления видео-сообщений. Возникает резонный вопрос: в чем отличие визуальных сообщений от обычных видеозаписей, которые и раньше любой пользователь мог прикрепить к диалогу? Суть этой разработки заключается в обеспечении большего удобства и скорости для мгновенной отправки видеороликов, по аналогии с функцией voice message.
Команда разработчиков постоянно трудится над улучшением Telegram, внедряя все необходимые и уже ставшие привычными технологии. И отдельное внимание уделяется инновациям, которых еще нет ни у кого — чтобы создать действительно лучший в мире мессенджер!
Вернуться к спискуПокупки, 2 июня6 244
В России заработала возможность платить за товары и услуги прямо в мессенджере Telegram. Проверили, как это работает.
Оплату запустил сервис «Яндекс.Касса». Суть в том, что магазин, у которого есть свой бот в Telegram, может настроить приём платежей через мессенджер. Так как новая возможность оплаты в России появилась только сегодня, 2 июня 2017 года, магазинов, уже применяющих её, пока нет. Но для тестирования системы «Яндекс.Деньги» запустили своего бота @testymppbot, через который можно платить за сотовый.
Как это работает?
При подключении к боту он просит нажать кнопку «старт» и команду «пополнение баланса мобильного», указать номер телефона и сумму платежа, которая должна быть не менее 60 рублей. Команда «help» в тестовой версии не работает, но в реальности магазины смогут настроить эту кнопку и дать инструкцию для покупателей.
Нажав кнопку «Pay», пользователь попадает на страницу оплаты, где ему нужна указать данные своей карты. Всё стандартно – номер, срок действия и CVC-код с обратной стороны карты.
Когда всё готово, можно нажимать кнопку оплата. И вот тут всплывает предупреждение, что платежи будут отправлены непосредственно разработчику бота «Пополнение мобильного». Сам Telegram не может предоставить никаких гарантий, поэтому действовать нужно на свой страх и риск. В случае возникновения проблем обращаться стоит к разработчику или к вашему банку. Другими словами – мессенджер не будет помогать решать проблемы и вопросы с возвратом средств.
Уповая на порядочность разработчика данного бота – «Яндекс.Денег», мы рискнули-таки совершить платёж. Для его подтверждения банк, с карты которого переводились деньги, прислал sms-код.
Пришлось заплатить комиссию – 3 рубля. Её сняли «Яндекс.Деньги» за пополнение сотовых неавторизованным пользователем. Но, как прокомментировали в пресс-службе, при оплате через «Яндекс.Кассу» покупатель ничего платить не будет – так как по договору с ними магазины возьмут комиссию на себя.
Деньги на счёт поступили сразу – в течение минуты.
Если речь идёт не об оплате услуги, а о покупке товара, то платёжный бот магазина также предложит клиенту указать адрес доставки.
Личные впечатления
Сообщение «совершайте платёж на свой страх и риск», признаюсь, немного пугает. Хоть это всего лишь формальность, но если бы я получила его при оплате в магазине, постоянным клиентом которого не являюсь, то я бы отказалась от покупки. А так всё устроено удобно, платить с помощью бота легко, хотя на сайте магазинов, с моей точки зрения, всё устроено не сложнее. Так, что это похоже на дань моде.
Прошлым летом Telegram выпустил новый API с поддержкой платежей. С тех пор мессенджер стал еще и каналом продаж, который позволяет компаниям не только общаться с клиентом, но и принимать оплату за свои товары и услуги прямо в диалоговом окне. Яндекс.Касса первой среди российских платежных сервисов поддержала эту функцию. Принимать платежи в Telegram через Кассу сразу стали индивидуальные предприниматели и небольшие организации: флористы, магазины чая и кофе, тренеры, организаторы обучающих курсов, благотворительные фонды и многие другие (тут можно почитать отзывы и примеры). Но для более крупных компаний с потоком заказов был один стоппер.
Дело в том, что до недавних пор у Telegram-продаж была одна особенность, не учитывающая чисто российскую специфику электронной торговли, — обязательную отправку онлайн-чеков (требование 54-ФЗ, известного как закон об онлайн-кассах). У Яндекс.Кассы сразу появился специальный протокол, который поддерживал работу с новым кассовым оборудованием и автоматизировал передачу чеков. Но в Telegram такая автоматизация технически не поддерживалась, и продавцы должны были настраивать передачу чеков сами (считайте, плясать с бубном). И вот недавно мессенджер пошел навстречу российскому рынку электронной коммерции и реализовал с Яндекс.Кассой совместный проект, дополнив свой протокол важным элементом — появилось специальное поле для дополнительной информации платежному провайдеру. Теперь продавать через Telegram стало удобно с точки зрения не только клиентского сервиса, но и автоматизации передачи онлайн-чеков (то есть соблюдения 54-ФЗ). Под катом расскажу, что нужно сделать, чтобы запустить продажи в Telegram, принимая платежи через Яндекс.Кассу.
Если вам еще не приходилось ничего покупать через мессенджер, сценарий продаж может быть неочевиден. В одних случаях продажа начинается на сайте, а завершается в Telegram. В других же все обслуживание клиента идет через Telegram-бота. Вот как это будет выглядеть пошагово:
- Покупатель кладет в корзину товар на сайте магазина, а на этапе оплаты выбирает платеж через Telegram (вариант второй — когда товар или услугу клиент изначально выбирает с помощью Telegram-бота; именно такой сценарий рассмотрим на рисунке ниже).
- Бот магазина выставляет покупателю счет.
- Telegram обменивается информацией о выставленном счете с платежным ботом Яндекс.Кассы.
- Плательщик вводит платежную информацию не покидая приложения Telegram.
- Бот Я.Кассы проводит платеж и сообщает об успешном платеже в бэкэнд магазина и в Telegram.
- Telegram уведомляет плательщика и бота магазина.
Стоит ли говорить, что скорость выполнения пп. 1-2 зависит от клиента (выбор товара, ввод платежной информации), а процессы из пп. 3-6 происходят почти мгновенно?
Пример использования платежного бота в сервисе русского языка «Ты справишься!» (@UchenyjBot)
Размер среднего чека при оплате в Telegram
Средний чек при оплате в мессенджере через Яндекс.Кассу составляет 700 рублей — сопоставимый со средним чеком при платеже на сайте. Абсолютный показатель у каждого бизнеса свой. К примеру, средний чек в музыкальной школе, которая принимает оплату через Кассу в Telegram, — 4000 рублей. Подписка на сервис консультаций по русскому языку, процесс оплаты которого показан выше, стоит 149 рублей.
Когда Telegram только выпустил API c поддержкой платежей, казалось, что этот канал продаж будет востребован среди средних и крупных мерчантов, которым под силу написать своего бота, учитывающего все сценарии общения магазина с пользователем. Но на самом деле продавать в Telegram большой ритейл не пошел, зато пришли небольшие сервисные компании и маленькие магазины.
Чтобы настроить продажи в Telegram через Яндекс.Кассу, нужно сделать три главных вещи:
- Зарегистрируйтесь в Яндекс.Кассе: подпишите договор и получите идентификатор магазина (shopId).
- Создайте Telegram-бота, который будет общаться с клиентами. Все боты создаются через @Botfather, но их поведение можно программировать самостоятельно или через конструкторы. Готовый бот нужно активировать через чат с @BotFather.
- Подключить своего бота к платежному боту Яндекс.Кассы. Для этого во вкладке «Payments» («Платежи») в меню вашего бота при диалоге с BotFather выберите Яндекс.Кассу в качестве платежного провайдера. Затем начните диалог с новым ботом через /start, укажите shopId из личного кабинета Яндекс.Кассы (он назначается при подключении мерчанта, у каждого он свой) и реализуйте метод sendinvoice из платёжного API Telegram. Как только бот будет настроен, прием оплаты включится автоматически.
В ответ на запрос ваш бот будет отправлять клиенту счет на оплату. В счете должны быть стоимость, название, описание товара, параметр payload и параметр provider_token — это тот самый токен, который выдал @BotFather.
Если нужно получить от покупателя адрес доставки, реализуйте метод Shipping Query. Когда пользователь укажет адрес, на этот запрос нужно ответить методом answerShippingQuery и передать через него способы доставки, а также их цены.
Итак, готово почти все, кроме отправки чека.
В чем суть закона об онлайн-кассах
В июле 2017 года вступил в силу закон 54-ФЗ, суть которого в необходимости онлайн-отчета перед налоговой за каждую продажу через интернет. То есть любой работающий с физическими лицами интернет-магазин обязан использовать кассовую технику нового поколения, которая сможет отправлять электронные чеки в налоговую инспекцию после каждого платежа (такую кассовую технику (ККТ) можно купить или арендовать). Чеки передаются в налоговую и покупателю по интернету через оператора фискальных данных — ОФД (поэтому касса должна быть всегда онлайн). В чеке должны быть название товара, цена, количество, ставка НДС, данные о продавце и о самой кассе.
До недавнего времени мерчантам нужно было следить за продажами через бот и проводить фискализацию самостоятельно. Что это означало на практике? Все то же, как если бы продажи шли через офлайн: бот передавал продавцу уведомление о продаже, продавец вручную вбивал в свою кассу все проданные товары и передавал чек по тем контактам, которые покупатель оставил перед оплатой.
За рамками Telegram Яндекс.Касса как сервис уже умела автоматически передавать данные об онлайн-платежах на 70 с лишним моделей ККМ всех популярных поставщиков. Но в платежном боте Кассы такой функции не было из-за ограничений на размер данных, которые наш бот мог получить от бота мерчанта. Все наладилось в феврале, когда Telegram доработал свой протокол для платежных ботов: появилось поле для дополнительной информации к платежному провайдеру — Provider data, и мы реализовали эту возможность у себя. Именно это поле требуется для передачи данных о составе чека. Я.Касса умеет разбирать это поле, поэтому мерчанту остается только правильно настроить своего бота, дополнив его данными о составе чека.
Ниже — код запроса без прикрепленного чека, то есть как было до февраля:
{ "chat_id":147426403, "title": "Test", "description": "Test", "payload":{}, "provider_token":"390540012:LIVE:1514", "currency": "RUB", "start_parameter":"mybot", "prices":[{"label":"Ля-Ля","amount": 6100}] }
Если добавить информацию о составе чека для дальнейшей обработки и фискализации, то запрос к Telegram на отправку счета с дополнительной информацией для платежного бота Яндекс.Кассы будет выглядеть так (внимание на поле Receipt – это и есть данные состава чека):
{ "chat_id":147426403, "title": "Test", "description": "Test", "payload":{}, "provider_token":"390540012:LIVE:1514", "currency": "RUB", "start_parameter":"mybot", "prices":[{"label":"Ля-Ля","amount": 6100}], "provider_data":{ "receipt":{ "email":"example@example.com", "items":[ { "description": "Товар A", "quantity": "1.00", "amount": { "value": "100.00", "currency": "RUB" }, "vat_code": 1 } ] } } }
Из обязательных данных в запросе:
- need_phone_number или need_email — они говорят Telegram, что после клика по счету нужно запросить номер телефона (need_phone_number) и/или email (need_email);
- send_email_to_provider (если вы запрашивали у покупателя email) или send_phone_number_to_provider (если запрашивали номер телефона) — указывают на необходимость отправки введенных значений платежному провайдеру;
- provider_data с объектом receipt — в составе чека должен быть перечень товарных позиций или услуг, их количество и цены. Все как в обычном чеке.
Чтобы после оплаты в Telegram Я.Касса автоматически «сигналила» вашему кассовому аппарату, что покупателю надо отправить чек (сам чек отправляет ОФД, обслуживающий вашу кассу), нужно сделать следующее:
- В личном кабинете Я.Кассы указать настройки своего кассового аппарата, совместимого с Яндекс.Кассой (сейчас Касса поддерживает несколько десятков разновидностей ККТ — например, Атол и Атол Онлайн, Orange Data, УМКА, СтарРус, Эвотор, Дримкас, Искра, Штрих-М, Счетмаш, Инкотекс и другие).
- Если у вас еще нет Telegram-бота, создайте его и подключите к боту Яндекс.Кассы по этой инструкции.
Если у вас есть опыт создания платежного бота или остались вопросы о том, как настроить оплату — добро пожаловать в комментарии.
Зачем нужна оплата?
В жизни каждого разработчика телеграм ботов наступает момент, когда необходимо реализовать оплату в вашем боте. И тут у вас есть два пути. Первый — зарегистрировать ИНН, ИП/Юридическое лицо и подключить официальную оплату от телеграма или просто использовать сторонний сервис по типу Free-Kassa, QIWI и т.д. Думаю выбор очевиден, в этой статье я буду использовать QIWI, потому что так хочу. Для начала давайте подумаем как бот будет проверять что пришло, от кого и какая сумма. Капитан очевидность подсказывает мне, что необходимо будет получить всю историю переводов на аккаунт, который мы будем использовать в качестве нашего счета для приема платежей. Давайте это сделаем:
import requests import json QIWI_TOKEN = '' QIWI_ACCOUNT = '' s = requests.Session() s.headers['authorization'] = 'Bearer ' + QIWI_TOKEN parameters = {'rows': '50'} h = s.get('https://edge.qiwi.com/payment-history/v1/persons/'+ QIWI_ACCOUNT +'/payments', params = parameters) req = json.loads(h.text)
В константу QIWI_TOKEN мы записываем api ключ для работы с QIWI, получить его можно тут. А в QIWI_ACCOUNT мы записываем номер телефона вашего главного счета. Если вы все сделали правильно, ошибок не будет. Данные находятся в словаре req, включающем в себя списки с данными. А точнее (не читать)переменную req включающую словарь data, в котором находится список из нумерованных словарей включающих в себя списки. Тут мы должны получить номер телефона, комментарий(позже поймете зачем) и сумму транзакции. Для того, чтобы продолжить писать код, вы должны будете уметь использовать базы данных, если вы не ничего не умеете или даже не знаете, что это такое — вот вам ссылка на статью, в которой достаточно понятно описана работа с Sqlite3. Теперь давайте продумаем алгоритм, который будет использован в нашем боте.
- Генерируем рандомное число от 100000 до 999999.
- Временно заносим данные в таблицу (id пользователя, номер телефона, сумма, сгенерированное ранее рандомное число)
- Проверяем комментарий, аккаунт и сумму в словаре req.
- Если сумма, телефон и комментарий сошлись — засчитываем оплату.
- Добавляем свой функционал после оплаты…
Сейчас вы наверное задумались, а зачем нужно проверять этот комментарий и генерировать рандомное число? А все гениальное — просто. Дело в том, что если мы просто проверим сумму и телефон, то бот сможет найти ранее отправленную транзакцию и засчитать её. Проще говоря, это сделано для безопасности и минимизации багов. Продолжим писать код: Создаем таблицу:
import sqlite3 c.execute("CREATE TABLE IF NOT EXISTS payment_query(user_id INTEGER, phone TEXT, sum INTEGER, code INTEGER)")
Заносим данные в таблицу, как только пользователь захочет что-то оплатить в вашем боте.
from random import randint # создаем иссуственные данные, которые хотим проверить phone = '+79999999999' sum = 100 random_code = randint(100000, 999999) c.execute(f"INSERT INTO payment_query VALUES({message.from_user.id}, {phone}, {sum}, {random_code})") conn.commit()
Далее необходимо сделать какую-то проверку оплаты, в моем случае — это будет инлайн клавиатура:Вот пример из моего недавнего бота Как только пользователь нажмет на кнопку оплаты, бот получит историю переводов с QIWI. Теперь нам нужно сделать самое главное — проверку оплаты.
result = c.execute(f"SELECT * FROM payment_query WHERE user_id = {call.message.chat.id}").fetchone() # достаем данные из таблицы # не рекомендую так делать, но это просто для теста (простите) phone = result[1] random_code = result[3] sum = result[2] # проходимся циклом по словарю for i in range(len(req['data'])): if req['data'][i]['account'] == phone: if req['data'][i]['comment'] == random_code: if req['data'][i]['sum']['amount'] == sum: c.execute(f"DELETE FROM payment_query WHERE user_id = {call.message.chat.id}") # удаляем временные данные из таблицы # код, который сработает, если оплата прошла успешно
Вот и все, надеюсь я помог вам решить очередную проблему! Заказчики, вы где? Пишите мне в телеграм: , жду всех!Используемые источники:
- https://tlgrm.ru/blog/payments.html
- https://ru.telegram-store.com/blog/platezhi-v-telegramm/
- https://www.sravni.ru/text/2017/6/2/test-drajv-kak-rabotaet-oplata-v-telegram/
- https://habr.com/post/351766/
- https://habr.com/ru/post/470023/