Принимайте платежи 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 stringcatalog_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 .{"messaging_product":
Шаг 4: Выполните POST-запрос к конечной точке Messages
Отправьте POST-запрос на
/[PHONE_NUMBER_ID]/messages, используя JSON- объект. Если ваше сообщение будет отправлено успешно, вы получите следующий ответ:{"messaging_product":
Ошибки
Условия использования платежной системы WhatsApp находятся на рассмотрении
Если вы видите следующую ошибку, примите условия использования WhatsApp Payments, используя ссылку, указанную в сообщении об ошибке, прежде чем повторять попытку.
{"ошибка":
Со всеми остальными ошибками, которые могут быть возвращены, и рекомендациями по их обработке см. WhatsApp Cloud API, Коды ошибок .
Шаг 5: Покупатель оплачивает заказ
Потребители могут оплатить покупку с помощью платежной системы WhatsApp или любого приложения, поддерживающего UPI и установленного на устройстве.
Шаг 6: Получайте уведомления об обновлении статуса транзакции от платежного шлюза
Компании получают обновления счета-фактуры через веб-хуки платежного шлюза при изменении статуса транзакции, инициированной пользователем. Уникальный идентификатор reference-id, передаваемый в
order_details , может использоваться для сопоставления транзакции со счетом-фактурой потребителя или интерактивным сообщением с подробной информацией о заказе.Для получения точной информации о платежных сигналах обратитесь к нашему руководству по интеграции с PG. Cashfree и CCAvenue.
Шаг 7: Обновить статус заказа
Получив сигналы о транзакции от платежного шлюза через веб-хук, компания должна обновить статус заказа, чтобы пользователь был в курсе. В настоящее время мы поддерживаем следующие значения статуса заказа:

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