# Процессинг платежей API

![](/files/BOLiQu0pAfxOuPkLDy2S)

### **Создать заявку**

Используйте метод **public/exchanger/order/create**

| Название                | Описание                                                                                                                                                                   | Тип      |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| routeId                 | id направления                                                                                                                                                             | ObjectID |
| partner                 | код партнера                                                                                                                                                               | STRING   |
| amount                  | сумма                                                                                                                                                                      | FLOAT    |
| fromValues\[0]\[key]    | ключ поля                                                                                                                                                                  | ObjectID |
| fromValues\[0]\[value]  | значение для поля                                                                                                                                                          | STRING   |
| toValues\[0]\[key]      | ключ поля                                                                                                                                                                  | STRING   |
| toValues\[0]\[value]    | значение для поля                                                                                                                                                          | STRING   |
| routeValues\[0]\[key]   | ключ поля                                                                                                                                                                  | ObjectID |
| routeValues\[0]\[value] | значение для поля                                                                                                                                                          | STRING   |
| lang                    | язык (рус, англ)                                                                                                                                                           | STRING   |
| agreement               | cоглашение                                                                                                                                                                 | BOOLEAN  |
| hideOutData             | cкрыть реквизиты                                                                                                                                                           | BOOLEAN  |
| clientCallbackUrl       | обратный вызов, когда приложение будет завершено, клиент увидит кнопку для возврата на сайт, и клиент будет перенаправлен на этот url ?status=success или на ?status=error | STRING   |
| ipnUrl                  | URL-адрес уведомления о мгновенном платеже (будет вызыван, присмене статуса ордера)                                                                                        | STRING   |
| ipnSecret               | строка для создания безопасного хеша в ipn url                                                                                                                             | STRING   |

Документацию к системе авторизации вы можете найти в личном кабинете. Подробнее о работе с методы и дополнительные данные можно найти на

### **IPN (Уведомление об изменении статуса платежного запроса)**

Чтобы получать уведомление об изменении статуса заявки при её создании, вам необходимо отправить дополнительные параметры:

* `clientCallbackUrl` - обратный вызов, когда приложение будет завершено, клиент увидит кнопку для возврата на сайт, и клиент будет перенаправлен на этот url
* `hideOutData` - скрыть данные получателя
* `ipnUrl` - Ссылка HTTP / HTTPS для уведомления вашего сервера.
* `ipnSecret` - Случайная строка для создания подписи запроса (для поддержания целостности запроса)

1. Запрос будет отправлен методом POST
2. IPN будет отправлено один раз
3. Доставка IPN не гарантируется (если сервер не ответил на запрос, он не будет отправлен повторно)

**Пример IPN**

* POST
* \['Content-Type'] = 'application/x-www-form-urlencoded'<br>
* `orderUID` :Number() - заявка uid
* `orderId` :String(ObjectId) -заявка id
* `newStatus` :String() - заявка текущего статуса
* `inAmount` :String(number) - order in sum
* `outAmount` :String(number) - order out sum
* `xml_from` :String() - заявка uid
* `xml_to` :String() - заявка uid
* `timestamp` :Number() - unix время и ipn уведомления
* `toValues` :Array(\[{key,name,value}]) - реквизиты заявки

### **Список статусов**

* `new` - новая заявка
* `waitPayment` - ожидаем платеж от пользователя
* `errorPayment` - ошибка пользовательского платежа (ошибка отправки продавца)
* `inProgress` - в процессе (ожидается обработка админом или оплата заявки)
* `inProgressPayout` - в очереди на оплату (платеж принят успешно) (если настроен автоматический платеж в валюте, он будет инициализирован)
* `errorPayout` - ошибка платежа (ошибка произошла при оплате)
* `hold` - заявка заморожена (проблемы с приложением)
* `done` - заявка успешно выплачена
* `returned` -заявка была оплачена, но не все условия обмена и способы возврата отправителя были выполнены
* `deleted` - заявка удалена (отменена)

### **Верефикация контрольной суммы запроса (IPN)**

*sha256(orderId:newStatus:inAmount:outAmount:xml\_from:xml\_to:timestamp:ipnSecret)*

```
        
const stringForHash = orderId+":"+newStatus+":"+inAmount+":"+outAmount+":"+xml_from+":"+xml_to+":"+timestamp+":"+ipnSecret;
// example string for hash 5d8e6002b80b7b4cd75a6424:inProgress:2:317.42:ETH:WMZ:1571328406072:SECRET123

const hash = crypto.createHash('sha256').update(stringForHash).digest('hex')
// example hash af3acf947e6f0e0f2c267e300b8582e504dba12d1f2d058652b7414163c09f48
        
      
```

### **Контроль платежей**

1. Если вы хотите контролировать статус запросов, авторизуйтесь и все заявки будут отражены в вашем личном кабинете;
2. Вы можете сохранить UID запроса и секрет и вручную перейти к запросу, указав эти данные в адресной строке

### **Оплата**

1. Вы можете использовать / payment / для отображения страницы оплаты\
   \
   `// schema`\
   `protocol://domain/user-lang/payment/order-uid/order-secret`\
   `// example result`\
   `https://www.domain.com/en/payment/1409/dGqwF2M2eBPaSN1G5ljMS1cb`
2. Также вы можете просто отбразить ссылку на бирже так, как ее видят все клиенты по той же схеме, что и в первом варианте, кроме /payment/ следует заменить на /order/
3. В методе есть параметры, которые позволяют отображать платежные данные или форму оплаты на вашем сайте, которую вы можете использовать. ВАЖНО: если используется метод с предоплатой, вам необходимо обновить статус заказа с waitPayment до inProgress после оплаты.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://manual.boxexchanger.net/dlya-razrabotchikov/processing-platezhei-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
