Операции в криптовалюте
Вариант интеграции XP
Систeма MerchantPay позволяет вам проводить операции оплаты и выплаты в криптовалюте. Этот способ оплаты поддерживает работу со следующими криптовалютами:
| Название криптовалюты | Код криптовалюты | Стандарт криптовалюты |
|---|---|---|
| Название криптовалюты | Код криптовалюты | Стандарт криптовалюты |
| Ethereum | ETH | |
| Tether | USDT | ERC20 Передавайте в запросах как пустую строку (""). |
| Tether | USDT | TRC20 |
| Tether | USDT | BEP20 |
| Binance USD | BUSD | BEP20 |
| Binance USD | BUSD | ERC20 Передавайте в запросах как пустую строку (""). |
| Bitcoin | BTC | |
| Dai | DAI | ERC20 Передавайте в запросах как пустую строку (""). |
| Dai | DAI | BEP20 |
| Dash | DASH | |
| Dogecoin | DOGE | |
| HUSD | HUSD | ERC20 Передавайте в запросах как пустую строку (""). |
| Litecoin | LTC | |
| TrueUSD | TUSD | ERC20 Передавайте в запросах как пустую строку (""). |
| USD Coin | USDC | ERC20 Передавайте в запросах как пустую строку (""). |
| USD Coin | USDC | BEP20 |
| XRP | XRP | |
| Huobi Token | HT | TRC20 |
| HUSD | HUSD | TRC20 |
| Ethereum | ETH | TRC20 |
| Ethereum | ETH | BEP20 |
| TRON | TRX | |
| BNB | BNB | |
| Cardano | ADA | BEP20 |
| CasinoCoin | CSC | Ripple |
| Dexsport | DESU | BEP20 |
| Axie Infinity | AXS | TRC20 |
| Axie Infinity | AXS | ERC20 Передавайте в запросах как пустую строку (""). |
| Bitcoin BEP2 | BTCB | BEP20 |
Оплата
Процесс проведения платежа в криптовалюте содержит следующие этапы:
- Покупатель инициирует проведение оплаты в выбранной криптовалюте.
- Торговец выполняет запрос на формирование виджета, на создание токена платежа в случае его использования или запрос на проведение оплаты с параметрами, указанными ниже.
-
- В случае интеграции с виджетом, виджет MerchantPay покажет покупателю инструкцию о проведении оплаты c QR-кодом.
- В случае API запроса торговец самостоятельно формирует страницу с инструкцией о проведении оплаты, используя значения параметров, полученных в ответе на запрос.
- Покупатель проводит платеж согласно полученной инструкции.
- MerchantPay получает информацию о платеже. Покупатель видит результат проведения платежа в виджете. Торговцу приходит автоматическое уведомление о статусе платежа, если в запросе на формирование виджета и в запросе на проведение оплаты был передан параметр
notification_url.
Info
В автоматических уведомлениях сумма транзакции указывается как сумма платежа, умноженная на 100 000 000 и округленная согласно правилам математического округления.
Info
QR код действителен только в течении 30 минут.
Запрос
Параметры для инициализации виджета или создания токена
Отправьте запрос на формирование виджета или создание токена платежа, где укажите следующие дополнительные параметры:
| |||||||||||||||||||||||
Параметры API запроса
Для приема платежа проведите транзакцию оплаты со следующими дополнительными параметрами:
|
|||||||||||||||
Ответ
В случае интеграции с виджетом, покупатель получает инструкцию о проведении оплаты c QR-кодом в виджете MerchantPay.
В случае API интеграции, ответ на запрос оплаты будет дополнительно содержать секцию crypto_currency со следующими параметрами:
|
|||||||||||||||||||||||
Используйте значения параметров при построении формы для отображения соответствующей информации покупателям.
Выплата средств
Процесс проведения выплаты в криптовалюте содержит следующие этапы:
- Покупатель инициирует проведение выплаты в выбранной криптовалюте.
- Торговец выполняет запрос на выплату средств с параметрами, указанными ниже.
- Система проверяет баланс и проводит выплату.
- Торговцу приходит автоматическое уведомление о статусе платежа, если в запросе на проведение выплаты был передан параметр
notification_url.
Info
В автоматических уведомлениях сумма транзакции указывается как сумма выплаты, умноженная на 100 000 000 и округленная согласно правилам математического округления.
Запрос
Отправьте запрос выплаты средств со следующими данными:
|
|||||||||||||||||
Ответ
Ответ на запрос оплаты будет дополнительно содержать секцию crypto_currency с указанием параметров способа оплаты.
Вариант интеграции OP
Этот вариант интеграции позволяет вам проводить операции оплаты и выплаты средств в криптовалюте. Этот способ поддерживает работу со следующими криптовалютами:
| Название валюты | Код валюты в запросе |
| TRON | TRX |
| Tether | USDT |
| Litecoin | LTC |
| Bitcoin Cash | BCH |
| USDD | USDD |
| USD Coin | USDC |
| Bitcoin | BTC |
| Binance USD | BUSD |
| BNB | BNB |
Операция оплаты
Процесс проведения операции оплаты
Процесс проведения оплаты содержит следующие этапы:
- Вы инициируете запрос доступных валют и сетей, чтобы уточнить, в какой валюте и через какую сеть можно провести оплату, если эти параметры неизвестны. Иначе, перейдите к шагу 3.
- Система MerchantPay предоставит список возможных валют и сетей.
- Вы отправляете запрос на оплату с выбранной валютой и сетью.
- В ответе на запрос система присылает ссылку, на которую необходимо перенаправить клиента для проведения оплаты. Транзакция имеет статус
pendingдо момента оплаты. - Когда клиент проводит оплату, с вашего авансового баланса происходит списание средств.
- Вам приходит автоматическое уведомление о статусе платежа, если в запросе на проведение оплаты был передан параметр
notification_url.
Запрос доступных валют и сетей
Запрос
Чтобы узнать, в какой валюте и через какую сеть можно провести оплату, отправьте запрос доступных валют и сетей.
Ответ
Ответ на запрос будет содержать массив данных валют и сетей для проведения оплаты.
Доступны для проведения платежа те валюты и сети, которые в параметре allowDeposit имеют значение true.
Пример успешного ответа на запрос доступных валют и сетей
{
"code": "S.0000",
"status": "Successful",
"friendly_message": "Successfully processed",
"gateway_id": 1234,
"provider_info": [
{
"currency": "TRX",
"alias": "Tron",
"allowDeposit": true,
"allowWithdrawal": true,
"priceUSD": "0.05908000",
"networks": [
{
"name": "tron",
"alias": "Tron (TRC20)",
"allowDeposit": true,
"allowWithdrawal": true,
"withdrawalFee": "1",
"withdrawalMin": 0,
"confirmations": 10,
"underMaintenance": false,
"isDefault": false,
"contract": null,
"addressRegex": "^T[1-9A-HJ-NP-Za-km-z]{35}$",
"tagRegex": ""
}
]
},
{
"currency": "USDT",
"alias": "Tether USD",
"allowDeposit": true,
"allowWithdrawal": true,
"priceUSD": "0.99820324",
"networks": [
{
"name": "solana",
"alias": "Solana",
"allowDeposit": true,
"allowWithdrawal": true,
"withdrawalFee": "0.8",
"withdrawalMin": 0,
"confirmations": 4,
"underMaintenance": false,
"isDefault": false,
"contract": "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe9BenwNYB",
"addressRegex": "^[0-9a-zA-Z]{37,44}$",
"tagRegex": ""
},
{
"name": "ethereum",
"alias": "Ethereum (ERC20)",
"allowDeposit": true,
"allowWithdrawal": true,
"withdrawalFee": "3.2",
"withdrawalMin": 0,
"confirmations": 12,
"underMaintenance": false,
"isDefault": false,
"contract": "0xdac17f958d2ee523a2206206994597c13d841ec7",
"addressRegex": "^(0x)[0-9A-Fa-f]{40}$",
"tagRegex": ""
}
]
}
]
}
Оплата
Запрос
Отправьте запрос оплаты со следующими дополнительными данными:
|
|||||||||||||||||
Пример запроса оплаты
{
"request":{
"amount":16400000,
"currency":"LTC",
"description":"description",
"test": true,
"tracking_id":"your_unique_number",
"language":"en",
"notification_url":"https://merchant.ltd/notification",
"return_url":"https://merchant.ltd/return",
"method": {
"type": "crypto_currency",
"lifetime": "43200",
"token_standard": "litecoin",
"balance_id": "2ceaad5d-751a-4bff-b951-787c341e33ad"
}
}
}
Ответ
Ответ на запрос оплаты будет дополнительно содержать секцию crypto_currency с указанием платежного метода и его параметров, а также секцию form со ссылкой для перехода к странице завершения платежа.
Направьте клиента на URL, переданный как значение параметра form.action.
Пример успешного ответа
{
"transaction": {
"uid": "436cea91-1155-498c-8620-17e4866588b9",
"type": "payment",
"status": "pending",
"amount": 16400000,
"currency": "LTC",
"description": "description",
"created_at": "2022-11-09T12:38:51Z",
"updated_at": "2022-11-09T12:38:52Z",
"method_type": "crypto_currency",
"receipt_url": "https://backoffice.universepay.eu/customer/transactions/436cea91-1155-498c-8620-17e4866589b9/53250553c58d4cf926eb1aa3fa9120f10b492df11a70a6c32f91dbac68619a71?language=ru",
"payment": {
"status": "pending",
"gateway_id": 1234,
"ref_id": "2ceaad5d-751a-4bff-b951-787c341e33ad",
"message": "Transaction was initialized."
},
"crypto_currency": {
"type": "crypto_currency",
"balance_id": "2ceaad5d-751a-4bff-b951-787c341e33ad",
"token_standard": "litecoin",
"lifetime": 43200
},
"customer": {
"ip": "127.0.0.1"
},
"message": "Transaction was initialized.",
"tracking_id": "test crypto_currency",
"test": true,
"language": "ru",
"billing_address": {
"ip": "127.0.0.1"
},
"additional_data": {
"payment_method": {
"type": "alternative"
}
},
"form": {
"action": "https://ocp.op.io/merchant/checkout/3f8dd21b-e7e8-4834-8abb-c5209c050d69",
"method": "GET",
"fields": []
}
}
}
Выплата средств
Процесс проведения операции выплаты
Процесс выплаты средств содержит следующие этапы:
-
При необходимости вы инициируете следующие запросы:
- запрос доступных валют и сетей, чтобы узнать доступные для выплат валюты, сети и комиссию за выплату средств;
- запрос авансового баланса, чтобы узнать, достаточно ли средств для покрытия комиссии за выплату;
- запрос адресов, с которых может быть произведена выплата.
-
Система предоставляет ответы на запросы шага 1.
- Вы отправляете запрос выплаты средств с выбранного адреса.
- Система высылает ответ с данными и статусом транзакции.
Info
Комиссия за выплату токенов списывается с вашего авансового баланса. Если на авансовом балансе недостаточно средств на покрытие коммиссии, выплата может быть отклонена.
Запрос доступных валют и сетей
Запрос
Чтобы узнать, в какой валюте и через какую сеть можно провести выплату, отправьте запрос доступных валют и сетей.
Ответ
Ответ на запрос будет содержать массив данных валют и сетей для проведения выплаты, а также комиссию за эту операцию.
Доступны для проведения платежа те валюты и сети, которые в параметре allowWithdrawal имеют значение true. Комиссия за проведение выплаты указана для каждой сети как значение параметра withdrawalFee в денежных единицах криптовалюты.
Пример успешного ответа на запрос доступных валют и сетей
{
"code": "S.0000",
"status": "Successful",
"friendly_message": "Successfully processed",
"gateway_id": 1234,
"provider_info": [
{
"currency": "TRX",
"alias": "Tron",
"allowDeposit": true,
"allowWithdrawal": true,
"priceUSD": "0.05908000",
"networks": [
{
"name": "tron",
"alias": "Tron (TRC20)",
"allowDeposit": true,
"allowWithdrawal": true,
"withdrawalFee": "1",
"withdrawalMin": 0,
"confirmations": 10,
"underMaintenance": false,
"isDefault": false,
"contract": null,
"addressRegex": "^T[1-9A-HJ-NP-Za-km-z]{35}$",
"tagRegex": ""
}
]
},
{
"currency": "USDT",
"alias": "Tether USD",
"allowDeposit": true,
"allowWithdrawal": true,
"priceUSD": "0.99820324",
"networks": [
{
"name": "solana",
"alias": "Solana",
"allowDeposit": true,
"allowWithdrawal": true,
"withdrawalFee": "0.8",
"withdrawalMin": 0,
"confirmations": 4,
"underMaintenance": false,
"isDefault": false,
"contract": "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB",
"addressRegex": "^[0-9a-zA-Z]{37,44}$",
"tagRegex": ""
},
{
"name": "ethereum",
"alias": "Ethereum (ERC20)",
"allowDeposit": true,
"allowWithdrawal": true,
"withdrawalFee": "3.2",
"withdrawalMin": 0,
"confirmations": 12,
"underMaintenance": false,
"isDefault": false,
"contract": "0xdac17f958d2ee523a2506206994597c13d931ec7",
"addressRegex": "^(0x)[0-9A-Fa-f]{40}$",
"tagRegex": ""
}
]
}
]
}
Запрос авансового баланса
Запрос
Чтобы узнать, достаточно ли средств для покрытия комиссии за выплату, отправьте запрос баланса, где в качестве значения параметра account укажите идентификатор вашего авансового баланса.
Ответ
Ответ на запрос содержит сумму авансового баланса как значение параметра provider_info.response.balance.
Info
Сумма баланса указана в денежных единицах криптовалюты.
Пример успешного ответа
{
"code": "S.0000",
"status": "Successful",
"friendly_message": "Successfully processed",
"gateway_id": 1234,
"account": "2ceaad5d-751a-4bff-b951-787c341e33ad",
"amount": "3.400780144",
"currency": "USD",
"provider_info": {
"success": true,
"response": {
"advancedBalanceId": "2ceaad5d-751a-4bff-b951-787c341e33ad",
"currency": "USD",
"blocked": false,
"blockReason": null,
"balance": "3.400780144",
"availableCurrenciesForDeposit": [
"USDT",
"USDC",
"USDD"
]
}
}
}
Запрос адресов для проведения выплаты
Запрос
Чтобы узнать балансы и идентификаторы адресов, с которых можно провести выплату, отправьте GET запрос на https://apm.universepay.eu/beyag/on_chain_pay/addresses/{advanced_balance_id}, где {advanced_balance_id} - это идентификатор вашего авансового баланса.
Пример запроса
curl --location --request GET 'https://apm.universepay.eu/beyag/on_chain_pay/addresses/2ceaad5d-751a-4bff-b951-787c341e33ad'
--header 'Content-Type: application/json'
--header 'Accept: application/json'
--header 'Authorization: Basic MTYwOmQxMDc1MjhlYjE3MzFlNWY5MTk2MWE3NDEyYTUyZWYyOWVm1WVhODc5ODZiZTk3YmM3NzI2NWU0NjEzNzM5YzE='
Ответ
Ответ на запрос содержит массив данных тех адресов, с которых возможны выплаты.
Пример ответа
{
"success": true,
"response": [
{
"id": "2d28222b-1d69-4dda-a590-1102efa590d7",
"advancedBalanceId": "2ceaad5d-751a-4bff-b951-787c341e33ad",
"currency": "LTC",
"network": "litecoin",
"address": "LTJdrbZ9wLS8MXkRCDZgSXZihpbgLWXfpo",
"tag": "",
"balance": "0"
},
{
"id": "48f77919-c43f-4961-ab09-c3641d794eda",
"advancedBalanceId": "2ceaad5d-751a-4bff-b951-787c341e33ad",
"currency": "LTC",
"network": "litecoin",
"address": "LWMbqYuL49adXrHFHVuvgGuKWenuPxvHUX",
"tag": "",
"balance": "0"
},
{
"id": "6b7b937f-e798-4003-a97e-eda28503ca9c",
"advancedBalanceId": "2ceaad5d-751a-4bff-b951-787c341e33ad",
"currency": "USDT",
"network": "tron",
"address": "TYyA96pmdiwcR75gqRLfpRPtipYPLz3qDh",
"tag": "",
"balance": "0"
},
{
"id": "2470df4b-1eb4-4058-bf06-f10d1d995cef",
"advancedBalanceId": "2ceaad5d-751a-4bff-b951-787c341e33ad",
"currency": "USDT",
"network": "tron",
"address": "THaMuoyQL9s1iyrCeaDeQqo7pDnPnRFg7x",
"tag": "",
"balance": "23"
},
{
"id": "586977ba-21b1-474c-98f0-d044948498a4",
"advancedBalanceId": "2ceaad5d-751a-4bff-b951-787c341e33ad",
"currency": "USDT",
"network": "bsc",
"address": "0xf1A8BD9384F505CE01DdE56d1E98c2cD9D060718",
"tag": "",
"balance": "0"
}
]
}
Выплата средств
Запрос
Отправьте запрос выплаты средств со следующими данными:
|
|||||||||||||||||||
Info
Пожалуйста, убедитесь в правильности адреса, на который производите выплату. В случае ошибки возврат средств не возможен.
Пример запроса
{
"request": {
"amount": 16700000,
"currency": "LTC",
"description": "payout description",
"test": true,
"expired_at": "2024-01-01T15:00:00+01:00",
"tracking_id": "your_unique_number",
"language": "en",
"method": {
"type": "crypto_currency",
"network": "litecoin",
"advanced_balance_id": "2ceaad5d-751a-4bff-b951-787c341e33ar",
"address_id": "1e20326b-f34d-4c7d-8f0f-f2d57708016f",
"address": "MDtmcmfXMwoJfBnh5AGqX5SteiZPAXqAdP"
}
}
}
Ответ
Ответ на запрос выплаты содержит секцию crypto_currency с данными платежного метода из запроса.
Пример успешного ответа
{
"transaction": {
"uid": "11fede31-7086-4620-8c46-25c8726a0156",
"type": "payout",
"status": "successful",
"amount": 16700000,
"currency": "LTC",
"description": "payout description",
"created_at": "2022-09-29T19:17:41Z",
"updated_at": "2022-09-29T19:17:42Z",
"method_type": "crypto_currency",
"receipt_url": "https://backoffice.universepay.eu/customer/transactions/11fede31-7086-4620-8c46-25c8726a0156/5258a8f68f6bc45bc8d45a6febfeac9724c25cd56839da2b3138f3641c90ef07?language=en%22",
"payout": {
"status": "successful",
"gateway_id": 1234,
"ref_id": "65dd1c6d-9790-4039-be5a-9eff5736fcba",
"message": "Transaction successfully processed."
},
"crypto_currency": {
"type": "crypto_currency",
"advanced_balance_id": "2ceaad5d-751a-4bff-b951-787c341e33ar",
"address_id": "1e20326b-f34d-4c7d-8f0f-f2d57708016f",
"address": "MDtmcmfXMwoJfBnh5AGqX5SteiZPAXqAdP"
},
"message": "Transaction successfully processed.",
"tracking_id": "your_unique_number",
"test": true,
"language": "en",
"paid_at": "2022-09-29T19:17:42+00:00",
"additional_data": {
"payment_method": {
"type": "alternative"
}
}
}
}
Уточнение статуса транзакции
Если необходимо дополнительно уточнить статус транзакции, отправьте запрос получения статуса платежа.