# Рекуррентные платежи

Алгоритм взаимодействия с методами из раздела "Рекурренты" и подключения подписчиков к сервису.

1. В личном кабинете, в разделе "Рекурренты" необходимо создать мерчанта
2. На страничке мерчанта будет доступен его идентификатор. Далее в методах API он должен передаваться в обязательном порядке в поле `merchantId`
3. Вызывается метод создания ссылки для привязки платежного метода (create-subscriber-billing-link)
4. Полученную в ответе ссылку необходимо отправить пользователю
5. Пользователь переходит по ссылке и с помощью подключения своего кошелька (web3) привязывает к сервису свой адрес с определенной сетью и токеном
6. После успешного создания платежной связки на указанный `webhookUrl` придет информация о созданной связке

Затем платежную связку можно использовать двумя способами:

* Создать подписку (назначить периодическое списание) - списание фиксированной суммы в указанный период
* Вызывать метод свободного списания - по запросу списать указанную сумму с адреса пользователя

## Схема взаимодействия с API

### Подключение пользователя

{% @mermaid/diagram content="sequenceDiagram
Client ->> Merchant: Запрос платежа
Merchant ->> Apollopayment: Запрос создание платежной связки
Apollopayment ->> Merchant: Ссылка для создания платежной связки
Merchant ->> Client: Ссылка для создания платежной связки

```
Note over Client: Переходит по ссылке
Note over Client: Привязывает свой кошелек

Apollopayment -->> Merchant: Вебхук с данными о платежной связке

Note over Merchant: Сохранить ID платежной связки для дальнейшего взаимодействия" %}
```

### Создание подписки

Автоматическое списание раз в период

{% @mermaid/diagram content="sequenceDiagram
Client ->> Merchant: Выбирает подписку

```
Note over Merchant: Получить доступные платежные связки пользователя
Note over Merchant: Выбрать связку с подходящей монетой/сетью, которую ранее создал пользователь

Merchant ->> Apollopayment: Создание подписки
Apollopayment ->> Merchant: Данные подписки
Merchant ->> Client: Уведомление об успешном создании подписки

Note over Apollopayment: Попытка оплаты с кошелька пользователя

Apollopayment -->> Merchant: Вебхук об изменении статуса подписки
Merchant ->> Client: Уведомление об успешной оплате или об ошибке при оплате" %}
```

### Свободный платеж

{% @mermaid/diagram content="sequenceDiagram
Merchant ->> Apollopayment: Создание платежа
Apollopayment ->> Merchant: Тело платежа

```
Note over Apollopayment: Попытка оплаты с кошелька пользователя

Apollopayment -->> Merchant: Вебхук об изменении статуса платежа" %}
```
