Принимайте платежи UPI через WhatsApp (рекомендуется) | Документация для разработчиков
Принимайте платежи UPI через WhatsApp (рекомендуется)
Обновлено: 11 марта 2026 г
Для компаний, работающих с платежными шлюзами Billdesk или Zaakpay, рекомендуется использовать более глубокую интеграцию с этими платежными шлюзами. См. Руководство по интеграции с платежными шлюзами.
Для компаний, работающих с платежными шлюзами Razorpay, PayU или Cashfree, используйте более быстрый путь интеграции. См. раздел «Расширенные платежные ссылки».
Это рекомендуемая интеграция с UPI Intent. Используете старый метод настройки платежей? Ознакомьтесь с предыдущей документацией и запланируйте переход на динамический VPA.
Ваша компания может предоставить клиентам возможность оплачивать заказы через WhatsApp, используя все приложения UPI, установленные на их устройствах. Компании могут отправлять клиентам сообщения с подробными данными заказа (
order_details ), а затем получать уведомления об обновлении статуса платежа через веб-хуки платежного шлюза.Обзор
В настоящее время клиенты просматривают каталоги компаний, добавляют товары в корзину и отправляют заказы с помощью нашего набора решений для обмена сообщениями в сфере электронной коммерции, который включает в себя сообщения для отдельных товаров, сообщения для нескольких товаров и страницы с подробной информацией о товаре .
С помощью API WhatsApp Payments компании могут отправлять клиентам счета, чтобы те могли завершить свой заказ через все приложения UPI.
Как это работает
компания должна отправить потребителю сообщение
order_details заголовок , тело , нижний колонтитул и действие . В действия компания указывает всю информацию, необходимую клиенту для завершения платежа.Сообщение order_details содержит следующие поля, на которые стоит обратить внимание:
upi_intent_link — Поля, которые будут предоставлены вашим платежным шлюзом и укажут, куда будет отправлен платеж.reference_id — Этот идентификатор используется для отслеживания жизненного цикла заказа. Статусы платежей публикуются по этому ID. Это может быть идентификатор заказа или идентификатор транзакции, используемый для создания UPI-интента в платежном шлюзе.
После отправки сообщения компания ожидает обновления статуса платежа или транзакции непосредственно от платежного шлюза. Получив подтверждение оплаты заказа, компания должна передать это подтверждение потребителю через интерактивное сообщение
order_status Информирование пользователей о подтверждении оплаты имеет важное значение, поскольку это сообщение обновляет информацию о заказе и отображает детали заказа для потребителя, отражая подтверждение заказа от продавца. Это показано на примере в последующих разделах.
Процесс покупки в приложении
В клиентском приложении WhatsApp процесс покупки состоит из следующих этапов:
Клиент отправляет в компанию заказ с выбранными товарами, или компания определяет товары, которые клиент проявил интерес к покупке.
После получения заказа/идентификации товара, если продавец принимает другие способы оплаты, помимо UPI, такие как кредитные карты и электронные кошельки, он отправит пользователю сообщение с просьбой указать предпочтительный способ оплаты заказа.

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


Когда покупатель нажимает кнопку «Оплатить сейчас/Продолжить», ему предоставляется возможность выбрать приложение для оплаты через UPI — WhatsApp или любое другое приложение для платежей через UPI. Покупатели могут выбрать любой способ оплаты через UPI для оформления заказа.


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


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



Этапы интеграции
Описанные ниже шаги предполагают, что компания собирается отправить клиенту сообщение с подробной информацией о заказе.
На следующей диаграмме показана типичная последовательность интеграции API WA Payments: 

Шаг 1: Получение UPI-намерения от платежного шлюза
После того, как потребитель выразил заинтересованность в покупке товара с использованием метода оплаты UPI, продавцу необходимо обратиться к платежному шлюзу для создания UPI-интента. Ниже приведен пример ссылки на UPI-интент:
upi://pay?pa=abc@psp&pn=ABC&tr=877376394&
am=10.00&cu=INR&mode=00&purpose=00&mc=5399&tn=87
7376394
Продавец/партнер может отправить весь UPI-интент в том виде, в котором он содержится в
upi_intent_link . Эти варианты будут подробно рассмотрены ниже.Шаг 2: Соберите интерактивный объект
Для отправки
order_details предприятиям необходимо собрать интерактивный объект типа order_details , состоящий из следующих компонентов:| Объект | Описание |
|---|---|
типобъект |
Необходимый.
Должно быть «order_details». |
заголовокобъект |
Необязательный.
Содержимое заголовка отображается поверх сообщения. Если заголовок не указан, API использует изображение первого доступного продукта в качестве заголовка |
телообъект |
Необходимый.
Объект, содержащий тело сообщения. Объект содержит следующее поле:
текстовая строкатело сообщения. Содержимое сообщения. Поддерживаются эмодзи и разметка Markdown. Максимальная длина — 1024 символа. |
нижний колонтитулобъект |
Необязательный.
Объект, содержащий нижнюю часть сообщения. Объект содержит следующие поля:
текстовая строканижний колонтитул . Содержимое нижнего колонтитула. Поддерживаются эмодзи, разметка Markdown и ссылки. Максимальная длина — 60 символов. |
действиеобъект |
Необходимый.
Объект действия, который пользователь должен выполнить после прочтения сообщения. Этот объект действия содержит следующие поля:
строка
имениобъект
параметров |
Объект параметров
| Объект | Описание |
|---|---|
reference_idнить |
Необходимый.
Уникальный идентификатор заказа или счета-фактуры, предоставленный компанией. Он чувствителен к регистру, не может быть пустой строкой и может содержать только английские буквы, цифры, подчеркивания, дефисы или точки, а также не должен превышать 35 символов.
Идентификатор ссылки (reference_id) должен быть уникальным для каждого сообщения order_details для данного заказа. Если необходимо отправить несколько сообщений order_details для одного и того же заказа, рекомендуется включить в reference_id порядковый номер (например, «BM345A-12») для обеспечения уникальности reference_id. |
типобъект |
Необходимый.
Тип товаров, оплачиваемых в этом заказе. В настоящее время поддерживаются варианты цифровых товаров и физических товаров. |
бенефициарымножество |
Требуется для отгружаемых физических товаров.
Список получателей данного заказа. Получатель — это предполагаемый получатель физических товаров, указанных в заказе. Список содержит следующие поля:
Информация о получателях не отображается пользователям, но необходима по юридическим причинам и в целях соблюдения нормативных требований. строка
именистрока
адрес_строка1строка
адрес_строка2городская струнастрока
состояниякантри струнастрока
почтового индекса |
валюта |
Необходимый.
Валюта для этого заказа. В настоящее время поддерживается только валюта INR . |
Общая суммаобъект |
Необходимый.
Объект
total_amount содержит следующие поля:смещение целое число100 индийских рупий .
значение целое числоЗначение total_amount.value должно быть равно order.subtotal.value + order.tax.value + order.shipping.value - order.discount.value . |
настройки оплатыобъект |
Необходимый.
Дополнительную информацию см. в объекте «Настройки платежей» |
заказобъект |
Необходимый.
см. объект заказа . |
Объект «Настройки платежей»
Вы можете передавать UPI-интент как есть или анализировать параметры UPI-интента и передавать их в JSON-структуре. Мы поддерживаем оба формата, поэтому ниже представлены два варианта объектов настроек платежей:
Объект настроек платежей для ссылки на намерение UPI
| Объект | Описание |
|---|---|
типнить |
Необходимый.
Необходимо установить значение "upi_intent_link". |
upi_intent_linkобъект |
Необходимый.
Объект, описывающий информацию о платежном счете:
строка
ссылки& »: pa, pn, mc, purpose и tr.
Пример: upi://pay?pa=merchant_vpa&pn=Merchant_Name&mc=merchant_category_code&purpose=purpose_code&tr=pg_generated_id |
Объект заказа
| Объект | Описание |
|---|---|
статуснить |
Необходимый.
order_details находится в состоянии ожидания только допустимое значение .В сообщении order_status статус может быть следующим: pending , captured или failed . |
типнить |
Необязательный.
Поддерживается только значение quick_pay . При передаче этого поля кнопка «Просмотреть и оплатить» скрывается, и в окне с подробной информацией о заказе отображается только кнопка «Оплатить сейчас». |
предметыобъект |
Необходимый.
Объект со списком товаров для данного заказа, содержащий следующие поля:
retailer_id stringстрока
имениобъект
изображенияИспользование этого поля изображения ограничит массив товаров максимум 10 элементами, и его нельзя использовать с retailer_id или catalog_id .суммы со значением и смещением — см. поле «Итоговая сумма» выше.sale_amount amount objectколичество целое числострока
country_of_origincatalog_id отсутствует. Страна происхождения продукта.
importer_name stringcatalog_id отсутствует. Название компании-импортера.
importer_adress stringcatalog_id отсутствует. Адрес компании-импортера. |
промежуточная суммаобъект |
Необходимый.
Значение должно быть равно сумме
order.amount.value * order.amount.quantity Для пояснения полей offset и value см. total_amount.Следующие поля являются частью
«Промежуточный итог» :смещение целое число100 индийских рупий.
значение целое число |
налогобъект |
Необходимый.
Налоговая информация по данному заказу содержит следующие поля:
смещение целое число100 индийских рупий.
значение целое числострока
описания |
перевозкиобъект |
Необязательный.
Стоимость доставки заказа. Объект содержит следующие поля:
смещение целое число100 индийских рупий.
значение целое числострока
описания |
скидкаобъект |
Необязательный.
Скидка на заказ. Объект содержит следующие поля:
смещение целое число100 индийских рупий.
значение целое числострока
описанияdiscount_program_name string |
catalog_idобъект |
Необязательный.
Уникальный идентификатор каталога Facebook, используемого компанией.
Если вы не укажете это поле, вам необходимо указать следующие поля в объекте items: country_of_origin , importer_name и importer_address. |
срок действияобъект |
Необязательный.
Срок действия данного заказа. Бизнес-процесс должен определить следующие поля внутри этого объекта:
с меткой времени – UTC-метка времени в секундах, когда должен истечь срок действия ордера. Минимальный порог – 300 секунд.Описание – Текстовое пояснение к сроку действия. Максимальное количество символов – 120. |
Объект изображения элемента
| Объект | Описание |
|---|---|
|
строка ссылки |
Обязательно. Ссылка на изображение, которое будет показано пользователю. Должен быть файлом image/jpeg или image/png и иметь 8-битную кодировку, формат RGB или RGBA. Соответствует тем же требованиям, что и изображение в медиафайлах. |
В итоге интерактивный объект должен выглядеть примерно так для интеграции на основе каталога с использованием UPI-интента продавца:
Шаг 3: Добавьте общие параметры сообщения
После завершения создания интерактивного объекта добавьте остальные параметры, формирующие сообщение:
recipient_type , to и type . Не забудьте установить тип как interactive .Шаг 4: Выполните POST-запрос к конечной точке Messages
Отправьте POST-запрос на
/[PHONE_NUMBER_ID]/messages, используя JSON- объект. Если ваше сообщение будет отправлено успешно, вы получите следующий ответ:Ошибки
Условия использования платежной системы WhatsApp находятся на рассмотрении
Если вы видите следующую ошибку, примите условия использования WhatsApp Payments, используя ссылку, указанную в сообщении об ошибке, прежде чем повторять попытку.
Со всеми остальными ошибками, которые могут быть возвращены, и рекомендациями по их обработке см. WhatsApp Cloud API, Коды ошибок .
Шаг 5: Покупатель оплачивает заказ
Потребители могут оплатить покупку с помощью платежной системы WhatsApp или любого приложения, поддерживающего UPI и установленного на устройстве.
Шаг 6: Получайте уведомления об обновлении статуса транзакции от платежного шлюза
Компании получают обновления счета-фактуры через веб-хуки платежного шлюза при изменении статуса транзакции, инициированной пользователем. Уникальный идентификатор reference-id, передаваемый в
order_details , может использоваться для сопоставления транзакции со счетом-фактурой потребителя или интерактивным сообщением с подробной информацией о заказе.Для получения точной информации о платежных сигналах обратитесь к нашему руководству по интеграции с PG. Cashfree и CCAvenue.
Шаг 7: Обновить статус заказа
Получив сигналы о транзакции от платежного шлюза через веб-хук, компания должна обновить статус заказа, чтобы пользователь был в курсе. В настоящее время мы поддерживаем следующие значения статуса заказа:

| Ценить | Описание |
|---|---|
в ожидании |
Пользователь еще не оплатил заказ успешно |
обработка |
Оплата пользователем авторизована, продавец/партнер выполняет заказ, оказывает услугу и т. д. |
частично отгружено |
Часть товаров из заказа уже отправлена продавцом |
отправленный |
Все товары в заказе были отправлены продавцом |
завершенный |
Заказ выполнен, и от пользователя или партнера/продавца дальнейших действий не требуется |
отменено |
Партнер/продавец хочет отменить order_details для заказа/счета. Обновление статуса не удастся, если по этому сообщению order_details успешный или ожидающий |
Как правило, компании обновляют
статус заказа, используя либо уведомления об изменении статуса платежа в WhatsApp, либо собственные внутренние процессы. Для обновления статуса заказа партнер отправляет пользователю сообщение с указанием статуса заказа В следующей таблице описаны возвращаемые значения:
| Ценить | Описание |
|---|---|
reference_id |
Идентификатор, предоставленный партнером в сообщении order_details |
статус |
Новый статус |
описание |
Дополнительный текст для передачи информации о статусе заказа в поле «Детали заказа» . Может быть полезен при отправке уведомления об отмене. Максимальное количество символов — 120. |
Продавец всегда должен отображать это сообщение о статусе заказа покупателю после получения обновлений по транзакции. Поскольку сообщение с подробной информацией о заказе и отображение экрана с подробной информацией о заказе связаны с обновлениями статуса заказа.
Вопросы безопасности
Предприятиям следует соблюдать местные требования безопасности и регулирования в Индии. Им не следует полагаться исключительно на статус транзакции, указанный в веб-хуке, и необходимо использовать API для поиска платежей, чтобы получать статусы непосредственно из WhatsApp. Предприятия должны всегда проверять и подтверждать данные в ответах API или веб-хуках для защиты от SSRF-атак.
Контрольный список для интегрированных торговых площадок
Убедитесь, что
order_status , информирующее его об обновлениях заказа после получения обновлений транзакции по заказу.Убедитесь, что продавец проверен, а контакт WABA отмечен галочкой «проверено».
Убедитесь, что WABA сопоставлен с соответствующим уровнем отправки сообщений, инициированных продавцом (1000, 10000 и 10000 сообщений в день)
Продавец должен указать контактную информацию службы поддержки клиентов на экране профиля на случай, если потребитель захочет сообщить о каких-либо проблемах.