Данный метод позволяет мини-приложению запустить процесс оплаты в интерфейсе родительского приложения.
Можно передать один или несколько счетов (
invoiceIds) либо уже сформированный multiPaymentId.Узнать, как создавать и публиковать счета, можно в статье «Работа со счетами».
Платформы
| B2B Web | B2C Web | B2C Cordova |
|---|---|---|
Параметры метода
Метод принимает один из двух вариантов параметров.
Оплата счетов
| Имя параметра | Тип параметра | Обязательный | Описание параметра |
|---|---|---|---|
| invoiceIds | Array<string> | да | Массив идентификаторов счетов для оплаты |
Оплата мультиплатежа
| Имя параметра | Тип параметра | Обязательный | Описание параметра |
|---|---|---|---|
| multiPaymentId | string | да | ID заранее сформированного мультиплатежа |
Возвращаемое значение
В случае успешного выполнения вы получите JSON-объект следующего типа:
Возвращаемый тип
Пример возвращаемого значения
typescripttype RequestPaymentData = { multiPaymentId: string // ID созданного (или переданного) мультиплатежа success: boolean // Результат оплаты }
Пример использования
typescript// pages/index.tsx import React, { useCallback } from 'react' import bridge from '@open-condo/bridge' import { Button } from '@open-condo/ui' async function registerInvoice (): Promise<string> { // Создайте и опубликуйте счет на вашем бэкенде, верните его ID const response = await fetch('/api/invoices', { method: 'POST' }) const { invoiceId } = await response.json() return invoiceId } export default function MiniappPage (): React.ReactNode { const handlePayment = useCallback(async () => { const invoiceId = await registerInvoice() bridge.send('CondoWebAppRequestPayment', { invoiceIds: [invoiceId] }).then(({ success, multiPaymentId }) => { if (success) { // Оплата прошла успешно — обновите статус заказа на вашем бэкенде console.log('Платеж выполнен, multiPaymentId:', multiPaymentId) } else { // Пользователь отменил оплату или произошла ошибка console.log('Оплата не завершена') } }).catch((error) => { console.error(error) }) }, []) return ( <Button type='primary' onClick={handlePayment}>Оплатить</Button> ) }