Перейти к основному содержимому

Принимайте платежи UPI через WhatsApp | Документация для разработчиков

Принимайте платежи UPI через WhatsApp

Обновлено: 14 ноября 2025 г
Это НЕ рекомендуемая интеграция с UPI-интентами. Перейдите на динамический VPA . С динамическим VPA вы можете менять VPA в UPI-интентах без каких-либо изменений конфигурации с вашей стороны, что упростит интеграцию и текущее обслуживание.
Ваша компания может предоставить клиентам возможность оплачивать заказы через WhatsApp, используя все приложения UPI, установленные на их устройствах. Компании могут отправлять клиентам сообщения с подробными данными о заказе ( inorder_details ), а затем получать уведомления об обновлении статуса платежа через веб-хуки платежного шлюза.

Обзор

В настоящее время клиенты просматривают каталоги компаний, добавляют товары в корзину и отправляют заказы с помощью нашего набора решений для обмена сообщениями в сфере электронной коммерции, который включает в себя сообщения для отдельных товаров, сообщения для нескольких товаров и страницы с подробной информацией о товаре .
С помощью API WhatsApp Payments компании могут отправлять клиентам счета, чтобы те могли завершить свой заказ через все приложения UPI.

Как это работает

компания должна отправить потребителю сообщение order_details заголовок , тело , нижний колонтитул и действие . В действия компания указывает всю информацию, необходимую клиенту для завершения платежа.
Каждое order_details содержит уникальный идентификатор reference_id, предоставленный компанией, и этот уникальный номер используется на протяжении всего процесса для отслеживания заказа. Этот reference_id извлекается из ссылки UPI intent ( tr из платежного намерения UPI), сгенерированной для заказа компании платежным шлюзом.
После отправки сообщения компания ожидает обновления статуса платежа или транзакции непосредственно от платежного шлюза. Получив подтверждение оплаты заказа, компания должна передать это подтверждение потребителю посредством интерактивного сообщения о статусе заказа ( order_status ).
Уведомление пользователя о подтверждении оплаты важно, поскольку это сообщение обновляет информацию о заказе и отображает детали заказа для потребителя, отражая подтверждение заказа от продавца. Это показано на примере в последующих разделах.

Процесс покупки в приложении

В клиентском приложении WhatsApp процесс покупки состоит из следующих этапов:
Клиент отправляет заказ с выбранными товарами в компанию, или компания определяет товары, которые клиент проявил интерес к покупке.
После получения заказа/идентификации товара, если продавец принимает другие способы оплаты, помимо UPI, такие как кредитные карты и электронные кошельки, то продавец отправит пользователю сообщение с просьбой указать предпочтительный способ оплаты заказа.
Изображение
Когда потребители хотят оплатить заказ с помощью UPI, продавцам необходимо получить UPI-интент, обратившись к платежному шлюзу. Продавцу нужно использовать UPI-интент для формирования сообщений с подробной информацией о заказе и отправки их потребителю.
ИзображениеИзображение
Когда покупатель нажимает кнопку «Оплатить сейчас/Продолжить», ему предоставляется возможность выбрать приложение для оплаты через UPI — WhatsApp или любое другое приложение для платежей через UPI. Покупатели могут выбрать любой способ оплаты через UPI для оформления заказа.
ИзображениеИзображение
Покупатель оплачивает заказ, и способ оплаты сохраняется для дальнейшего использования и автоматически выбирается для следующей платежной транзакции. Также следует отметить, что на экране сведений о заказе статус заказа будет по-прежнему отображаться как «Заказ в ожидании», пока продавец не отправит интерактивное сообщение о статусе заказа.
ИзображениеИзображение
После завершения платежа компания получает уведомление от платежного шлюза, и продавцу необходимо отправить клиенту информацию о статусе заказа, сообщая о ходе его выполнения. Это обновит сообщения с призывами к действию (CTA) и описание статуса заказа на экране с подробной информацией о заказе.
ИзображениеИзображениеИзображение

Прежде чем начать

Для приема платежей UPI через WhatsApp продавцам необходимо настроить свой VPA в WhatsApp Business Manager, используя опцию прямых способов оплаты.
Каждая конфигурация должна иметь уникальное имя, код категоризации продавца (MCC), код назначения и идентификаторы VPA, как показано ниже. У компании может быть несколько конфигураций оплаты, но для каждого заказа продавец должен указать конкретную конфигурацию, которая будет использоваться для оплаты. См. payment_configuration в order_details .
Имя для каждого типа платежа должно быть уникальным. Имя будет использоваться для ссылки на конкретные конфигурации для каждого типа платежа. Если WA не сможет найти имя конфигурации платежа, пользователь не сможет совершить платеж после получения order_details . mcc обозначает код категоризации продавца для товаров в заказе. upi_pc обозначает цель транзакции. Ниже приведены примеры кода:
Код Заголовок
00
По умолчанию
01
ПОЛУ
02
АМС
03
Путешествовать
04
Гостеприимство
05
Больница
06
Телекоммуникации
07
Страхование
08
Образование
09
Дарение подарков
10
Другие
Если продавец/партнер не уверен в коде MCC и коде назначения, он может обратиться в платежный шлюз за этой информацией, поскольку платежный шлюз устанавливает эти значения в зависимости от типа бизнеса при формировании VPA-сообщений для бизнеса.

Управление способами оплаты (бета-версия)

Функция самостоятельной настройки платежей позволяет добавить несколько вариантов оплаты в ваш профиль WhatsApp Manager. Каждый вариант оплаты будет иметь свой собственный UPI-идентификатор (VPA), MCC и код назначения (для физических товаров), чтобы продавцы могли принимать платежи для разных категорий с разных UPI-аккаунтов. После настройки продавец может отправлять пользователям сообщения с подробным описанием

Предварительные требования

Функция «Управление способами оплаты» находится в стадии бета-тестирования, поэтому, пожалуйста, свяжитесь с командой Business Engineering, чтобы предоставить продавцам/партнерам доступ к этой странице в портале WhatsApp Business Manager.
, используя страницу «Настройки оплаты» и раздел «Индия» в WhatsApp Business Manager .
После привязки настроек оплаты необходимо интегрировать систему с указанными ниже API платежей. Это позволит отправлять order_details с настройками оплаты для получения платежей.
Примечание: Перед выполнением операции отмены привязки убедитесь, что с настройками платежа, которые вы пытаетесь удалить, не отправляются новые сообщения о заказах с запросом на оплату от потребителя.

Этапы интеграции

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

Шаг 1: Получение UPI-намерения от платежного шлюза

После того, как потребитель выразил заинтересованность в покупке товара с использованием метода оплаты UPI, продавцу необходимо связаться с платежным шлюзом для создания UPI-интента. Ниже приведен пример ссылки на UPI-интент:
upi://pay?pa=cfsukoona@yesbank&pn=Sukoon&tr=87737
6394& am=10.00&cu=INR&mode=00&member=00&mc=5399&tn=87
7376394
Продавцу необходимо проанализировать tr из указанного выше URI и использовать его в качестве идентификатора ссылки в интерактивном сообщении order_details

Шаг 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 ( например, - ) для обеспечения reference_id .
тип
объект
Необходимый.
Тип товаров, оплачиваемых в этом заказе. В настоящее время поддерживаются варианты цифровых товаров и физических товаров.
бенефициары
множество
Требуется для отгружаемых физических товаров.
Список получателей данного заказа. Получатель — это предполагаемый получатель физических товаров, указанных в заказе. Список содержит следующие поля:
Информация о получателях не отображается пользователям, но необходима по юридическим причинам и в целях соблюдения нормативных требований.
строка имени
Обязательно. Имя физического лица или организации, получающей физический товар. Не более 200 символов.
строка адрес_строка1
Обязательно. Адрес доставки (номер дома/башни, название улицы и т. д.). Не более 100 символов.
строка адрес_строка2
Необязательно. Адрес доставки (ориентир, район и т. д.). Не должен превышать 100 символов.
городская струна
Обязательно. Название города.
строка состояния
Обязательно. Название штата.
кантри струна
Обязательно. Должно быть «Индия».
строка почтового индекса
Обязательно. 6-значный почтовый индекс адреса доставки.
payment_type
Необходимый.
Должно быть «upi».
payment_configuration
Необходимый.
Название предварительно настроенной конфигурации оплаты, используемой для данного заказа, не должно превышать 60 символов.
валюта
Необходимый.
Валюта для этого заказа. В настоящее время поддерживается только валюта INR .
Общая сумма
объект
Необходимый.
Объект total_amount содержит следующие поля:
смещение целое число
Обязательно. должна составлять 100 индийских рупий .
значение целое число
Обязательно. Положительное целое число, представляющее значение суммы, умноженное на смещение. Например, 12,34 рупии имеют значение 1234.
Значение total_amount.value должно быть равно order.subtotal.value + order.tax.value + order.shipping.value - order.discount.value .
заказ
объект
Необходимый.
Объект заказа
Объект Описание
статус
нить
Необходимый.
order_details находится в состоянии ожидания только допустимое значение .
В сообщении order_status статус может быть следующим: pending , captured или failed .
тип
нить
Необязательный.
Поддерживается только значение quick_pay . При передаче этого поля кнопка «Просмотреть и оплатить» скрывается, и в окне с подробной информацией о заказе отображается только кнопка «Оплатить сейчас».
предметы
объект
Необходимый.
Объект со списком товаров для данного заказа, содержащий следующие поля:
retailer_id string
Необязательно. Идентификатор товара в заказе из вашего каталога.
строка имени
Обязательно. Название товара, которое будет отображаться пользователю. Не может превышать 60 символов.
объект изображения
Необязательно. Пользовательское изображение для элемента, отображаемого пользователю. См. объект изображения элемента для получения дополнительной информации.
Использование этого поля изображения ограничит массив товаров максимум 10 элементами, и его нельзя использовать с retailer_id или catalog_id .
суммы со значением и смещением — см. поле «Итоговая сумма» выше.
Обязательно. Цена за единицу товара.
sale_amount amount object
Необязательно. Цена со скидкой за единицу товара. Она должна быть меньше первоначальной суммы. Если поле указано, оно используется для расчета промежуточной суммы.
количество целое число
Обязательно. Количество товаров в этом заказе; это поле не может быть десятичным числом, должно быть целым числом.
строка country_of_origin
Необязательный параметр, если catalog_id отсутствует. Страна происхождения продукта.
importer_name string
Необязательно, если catalog_id отсутствует. Название компании-импортера.
importer_adress string
Необязательный параметр , если catalog_id отсутствует. Адрес компании-импортера.
промежуточная сумма
объект
Необходимый.
Значение должно быть равно order.amount.value , умноженному на order.amount.quantity .
Для пояснения полей «смещение» и «значение» обратитесь к поля «общая сумма»
Следующие поля являются частью «Промежуточный итог» :
смещение целое число
Обязательно. Сумма должна составлять 100 индийских рупий.
значение целое число
Обязательно. Положительное целое число, представляющее значение суммы, умноженное на смещение. Например, 12,34 рупии имеют значение 1234.
налог
объект
Необходимый.
Налоговая информация по данному заказу содержит следующие поля:
смещение целое число
Обязательно. Сумма должна составлять 100 индийских рупий.
значение целое число
Обязательно. Положительное целое число, представляющее значение суммы, умноженное на смещение. Например, 12,34 рупии имеют значение 1234.
строка описания
Необязательно. Максимальное количество символов — 60.
перевозки
объект
Необязательный.
Стоимость доставки заказа. Объект содержит следующие поля:
смещение целое число
Обязательно. Сумма должна составлять 100 индийских рупий.
значение целое число
Обязательно. Положительное целое число, представляющее значение суммы, умноженное на смещение. Например, 12,34 рупии имеют значение 1234.
строка описания
Необязательно. Максимальное количество символов — 60.
скидка
объект
Необязательный.
Скидка на заказ. Объект содержит следующие поля:
смещение целое число
Обязательно. Сумма должна составлять 100 индийских рупий.
значение целое число
Обязательно. Положительное целое число, представляющее значение суммы, умноженное на смещение. Например, 12,34 рупии имеют значение 1234.
строка описания
Необязательно. Максимальное количество символов — 60.
discount_program_name string
Необязательный текст. Используется для обозначения заказов с бонусами. Если заказ является заказом с бонусами, продавец должен указать эту информацию. Максимальное количество символов — 60.
catalog_id
объект
Необязательный.
Уникальный идентификатор каталога Facebook, используемого компанией.
срок действия
объект
Необязательный.
Срок действия данного заказа. Бизнес-процесс должен определить следующие поля внутри этого объекта:
с меткой времени – UTC-метка времени в секундах, когда должен истечь срок действия ордера. Минимальный порог – 300 секунд.
Описание – Текстовое пояснение к сроку действия. Максимальное количество символов – 120.
Объект изображения элемента
Объект Описание
строка ссылки
Обязательно. Ссылка на изображение, которое будет показано пользователю. Должен быть файлом image/jpeg или image/png и иметь 8-битную кодировку, формат RGB или RGBA. Соответствует тем же требованиям, что и изображение в медиафайлах.
В итоге интерактивный объект для интеграции на основе каталога должен выглядеть примерно так:
Для интеграции, не основанной на каталоге, то есть когда catalog-id отсутствует, пример полезной нагрузки выглядит следующим образом:

Шаг 3: Добавьте общие параметры сообщения

После завершения создания интерактивного объекта добавьте остальные параметры, формирующие сообщение: recipient_type , to и type . Не забудьте установить тип как interactive .

Шаг 4: Выполните POST-запрос к конечной точке Messages

Отправьте POST-запрос на /[PHONE_NUMBER_ID]/messages, используя JSON- объект. Если ваше сообщение будет отправлено успешно, вы получите следующий ответ:
Со всеми возможными ошибками и инструкциями по их обработке можно ознакомиться в разделе WhatsApp Cloud API, Коды ошибок .

Шаг 5: Покупатель оплачивает заказ

Потребители могут оплатить покупку с помощью платежной системы WhatsApp или любого приложения, поддерживающего UPI и установленного на устройстве.

Шаг 6: Получайте уведомления об обновлении статуса транзакции от платежного шлюза

Компании получают обновления счета-фактуры через веб-хуки платежного шлюза при изменении статуса транзакции, инициированной пользователем. Уникальный идентификатор tr (reference-id, переданный в order_details ) может использоваться для сопоставления транзакции со счетом-фактурой потребителя или интерактивным сообщением с подробной информацией о заказе.
Для получения точной информации о платежных сигналах обратитесь к документации вашего поставщика услуг. Если вы не получаете веб-хуки от вашего поставщика услуг, обратитесь к нему, чтобы включить их.

Шаг 7: Обновить статус заказа

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

Шаг 8: Сверка платежей

Предприятиям следует использовать свои банковские выписки для сверки платежей, используя reference_id, указанный в order_details .

Предпочитаемый продавцом способ оплаты UPI

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

Обновления в данных заказа и полезной нагрузке

Список поддерживаемых приложений:

Приложение UPI Идентификатор приложения, который будет передан в полезной нагрузке «Детали заказа»
Google Pay
gpay
PhonePe
телефон
PayTm
Paytm
Amazon Pay
Amazon Pay
КРЕД
кредит
Мобиквик
мобиквик

Контрольный список для интегрированных торговых площадок

Убедитесь, что order_status отправляется потребителю, информируя его об обновлениях заказа после получения обновлений транзакции по заказу.
Убедитесь, что продавец проверен, а контакт WABA отмечен галочкой «проверено».
Убедитесь, что WABA сопоставлен с соответствующим уровнем отправки сообщений, инициированных продавцом (1000, 10000 и 10000 сообщений в день)
Продавец должен указать контактную информацию службы поддержки клиентов на экране профиля на случай, если покупатель захочет сообщить о каких-либо проблемах.