Принимайте платежи 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 символов. |
действиеобъект |
Необходимый.
Объект действия, который пользователь должен выполнить после прочтения сообщения. Этот объект действия содержит следующие поля:
строка Обязательно . Должно быть «review_and_pay».
имениобъект См. объект «Параметры» для получения дополнительной информации.параметров |
Объект параметров
| Объект | Описание |
|---|---|
reference_idнить |
Необходимый.
Уникальный идентификатор заказа или счета-фактуры, предоставленный компанией. Он чувствителен к регистру, не может быть пустой строкой и может содержать только английские буквы, цифры, подчеркивания, дефисы или точки, а также не должен превышать 35 символов.
Идентификатор ссылки (reference_id) должен быть уникальным для каждого сообщения order_details для данного заказа. Если необходимо отправить несколько сообщений order_details для одного и того же заказа, рекомендуется включить в reference_id порядковый номер (например, «BM345A-12») для обеспечения уникальности reference_id. |
типобъект |
Необходимый.
Тип товаров, оплачиваемых в этом заказе. В настоящее время поддерживаются варианты цифровых товаров и физических товаров. |
бенефициарымножество |
Требуется для отгружаемых физических товаров.
Список получателей данного заказа. Получатель — это предполагаемый получатель физических товаров, указанных в заказе. Список содержит следующие поля:
Информация о получателях не отображается пользователям, но необходима по юридическим причинам и в целях соблюдения нормативных требований. строка Обязательно. Имя физического лица или организации, получающей физический товар. Не более 200 символов.
именистрока Обязательно. Адрес доставки (номер дома/башни, название улицы и т. д.). Не более 100 символов.
адрес_строка1строка Необязательно. Адрес доставки (ориентир, район и т. д.). Не должен превышать 100 символов.
адрес_строка2городская струнастрока Обязательно. Название штата.
состояниякантри струнастрока Обязательно. 6-значный почтовый индекс адреса доставки.почтового индекса |
валюта |
Необходимый.
Валюта для этого заказа. В настоящее время поддерживается только валюта 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объект |
Необходимый.
Объект, описывающий информацию о платежном счете:
строка Обязательно. Интент UPI, сгенерированный платежным шлюзом. Интент UPI поддерживает только следующие атрибуты, разделенные символом « ссылки& »: 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строка Обязательно. Название товара, которое будет отображаться пользователю. Не может превышать 60 символов.
имениобъект Необязательно. Пользовательское изображение для элемента, отображаемого пользователю. См. объект изображения элемента для получения дополнительной информации.
изображенияИспользование этого поля изображения ограничит массив товаров максимум 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 индийских рупий.
значение целое числострока Необязательно. Максимальное количество символов — 60.описания |
перевозкиобъект |
Необязательный.
Стоимость доставки заказа. Объект содержит следующие поля:
смещение целое число100 индийских рупий.
значение целое числострока Необязательно. Максимальное количество символов — 60.описания |
скидкаобъект |
Необязательный.
Скидка на заказ. Объект содержит следующие поля:
смещение целое число100 индийских рупий.
значение целое числострока Необязательно. Максимальное количество символов — 60.
описания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 сообщений в день)
Продавец должен указать контактную информацию службы поддержки клиентов на экране профиля на случай, если потребитель захочет сообщить о каких-либо проблемах.
Комментарии отсутствуют
Комментарии отсутствуют