NAV

Ошибки

API использует HTTP статусы для возврата ошибок.

Статус Описание
200 запрос выполнен успешно
304 документ не изменился с указанного момента
400 плохо сформированный запрос (например невалидный JSON)
401 неверные учетные данные
404 запрошенный ресурс не существует (для запрашивающего)
405 не тот HTTP метод, например GET вместо POST
415 не тот content-type, мы поддерживаем только application/json
422 запрос сформирован нормально, но не прошел валидацию, например не хватает полей или поле не в нужном формате
5XX проблема с mserver, повторите запрос позже

HTTP статус дублируется в поле meta.status ответа mserver. В определенных случаях вместе со статусом возвращается уточненный код ошибки в поле meta.error. Например для невалидного номера телефона при создании кошелка возвращается

{
  "meta" : {
    "code" : 422,
    "error" : "invalid_phone",
    "error_message": "Неверный телефон"
  }
}

Получение ошибок API

Поля:

Поле title может быть с динамическими данными, например {{ object.meta.code }} при получении реальной ошибки отдаст http код состояния

В ответе в meta присутствует параметр request_time со значением UNIX timestamp. Если делать запрос с параметром If-Modified-Since в котором будет указан timestamp предыдущего запроса, то ответ может быть с HTTP кодом 304

$ curl https://sandbox.wallet.best/v1/errors
{
    "meta": {
        "request_time": 1432652055,
        "code": 200
    },
    "data": [
        {
            "code": "wallet_not_found",
            "title": {
                "ru_RU": "кошелек не существует"
            }
        },
        {
            "code": "invalid_phone",
            "title": {
                "ru_RU": "требуется номер телефона в международном формате",
                "en_US": "invalid phone {{ object.meta.code }}"
            }
        }
    ]
}

Справочники возможных значений error для каждого вызова API описаны ниже.

Meta

Любой успешный запрос с кошельком будет возвращать в поле meta следующие поля:

{
    "meta": {
        "code": 200,
        "urgent_data": {
            "amount": 2370,
            "unseen_payments": 15
        }
    }
}

Аутентификация

Используется OAuth аутентификация. В качестве логина используется номер телефона Кошелька в международном формате. В случае, если кошелек не прошел аутентификацию, сервер вернет HTTP статус 401.

Коды ошибок

Настройки приложения

$ curl -u +79261111111:p@ssw0rD https://sandbox.wallet.best/v1/options
{
    "meta": {
        "code": 200
    },
    "data": {
        "support_phone": "+380991032585",
        "mobile_operators_category_ids": {
            "ru": 3
        }
    }
}

Кошелек

Кошелек - учетная запись конечного пользователя в mserver. Позволяет получать информацию о доступном остатке на счете и персональных данных конечного пользователя.

Поля:

Создание кошелька

Mserver: http://nebo15.github.io/mbank.docs/mserver.html#sozdanie-koshelka

Активация кошелька

Mserver: http://nebo15.github.io/mbank.docs/mserver.html#aktivatsiya-koshelka

Запрос повторной отправки кода активации

Mserver: http://nebo15.github.io/mbank.docs/mserver.html#zapros-povtornoy-otpravki-koda-aktivatsii

Запрос кода для смены пароля

Mserver: http://nebo15.github.io/mbank.docs/mserver.html#zapros-koda-dlya-smeny-parolya

Смена пароля

Mserver: http://nebo15.github.io/mbank.docs/mserver.html#smena-parolya

Загрузка кошелька

$ curl -u+79261111111:p@ssw0rD https://sandbox.wallet.best/v1/wallet
{
    "meta": {
        "code": 200,
        "urgent_data": {
            "amount": 1237
        },
        "time": 0.363231
    },
    "data": {
        "phone": "+79261111111",
        "amount": 1237,
        "level": "identified",
        "name": "Петян",
        "verified": true,
        "person_status": "data_verified",
        "picture_url": "http:\/\/sandbox.wallet.best\/img\/wallets\/7a\/91c\/54291c7a56c35f205da91f9d.jpg?1424445896",
        "email": "test@wallet.best",
        "can_use_autopayments": false,
        "intercom_user_hash": "82bdad9a133b1efda3aeba7b3a78e00afd0d8f4dc5a604b06663a2d6f07fc9b2"
    }
}

Удаление кошелька

Метод не работает на prod.

$ curl -u admin_level_login:password -X DELETE https://sandbox.wallet.best/v1/wallet/%2B79261111111
{
  "meta" : {
    "code" : 200
  }
}

Внесение персональных данных пользователя

Проверяются на дубликат по passport_series_number.

Параметры

$ curl -u+79261111111:password -H 'Content-type:application/json'
-d '{"family_name": "Арсеньев", "given_name": "Алексей", "patronymic_name": "Александрович",
"passport_series_number": "2202655885", "passport_issued_at" : "2012-02-27",
"itn": "330500938709", "ssn": "11223344595"}'
https://sandbox.wallet.best/v1/wallet/person
{
  "meta" : {
    "code" : 200
  },
  "data" : {
    "family_name" : "Арсеньев",
    "given_name" : "Алексей",
    "patronymic_name" : "Александрович",
    "passport_series_number" : "2202655885",
    "passport_issued_at" : "2012-02-27",
    "itn" : "330500938709",
    "ssn" : "11223344595",
    "status" : "data_entered",
    "changed_at" : "2014-11-14T13:15:42.213Z"
  }
}

Коды ошибок

Загрузка персональных данных пользователя

$ curl -u+79261111111:p@ssw0rD https://sandbox.wallet.best/v1/wallet/person
{
  "meta" : {
    "code" : 200
  },
  "data" : {
    "family_name" : "Арсеньев",
    "given_name" : "Алексей",
    "patronymic_name" : "Александрович",
    "passport_series_number" : "2202655885",
    "passport_issued_at" : "2012-02-27",
    "itn" : "330500938709",
    "ssn" : "11223344595",
    "status" : "data_verified",
    "verified_at" : "2014-05-29T17:06:20.066Z"
  }
}

Загрузка картинки

Форматы: JPEG, PNG. На сервере делается auto-rotate. Размер файла до 10 мегабайт.

$ curl -u +79261111111:p@ssw0rD -X POST -F "file=@/path/to/image.jpg" https://sandbox.wallet.best/v1/wallet/picture
{
    "meta" : {
        "code" : 200
    },
}

Удаление картинки

$ curl -u +79261111111:p@ssw0rD -X DELETE https://sandbox.wallet.best/v1/wallet/picture
{
    "meta" : {
        "code" : 200
    },
}

Поиск кошельков

Параметры

Если искомый кошелек не активирован, то он не найдется.

$ curl -u +12345675578:password -H 'Content-type:application/json' -d '{"contacts": [ {"phone": "+79990000000"}, {"phone": "+79260000001"}, {"phone": "+79260000002"} ]}' https://sandbox.wallet.best/v1/wallet/find
{
    "meta": {
        "code": 200
    },
    "data": [
        "+79990000000",
        "+79260000002"
    ]
}

Получение списка точек пополненя

$ curl -u +12345675578:password https://sandbox.wallet.best/v1/wallet/replenishment_points
{
    "meta": {
        "code": 200
    },
    "data": [
        {
            "id": "54635060279871e2098b4567",
            "type": "Банкомат: Инвестбанк ОАО АКБ",
            "worktime": "пн-пт: 09:00-20:00, сб: 10:00-16:00",
            "address": "Москва ул. Ворошилова 169-171",
            "latitude": 55.616371,
            "longitude": 37.211893
        },
        {
            "id": "54635060279871e2098b4568",
            "type": "Касса: СЛАВИНВЕСТБАНК ООО",
            "worktime": "круглосуточно",
            "address": "Москва ул. маршала Жукова 1",
            "latitude": 55.676006,
            "longitude": 37.252398
        }
    ]
}

Настройка периодичности отправки на почту лога транзакций

Параметры

$ curl -u +12345675578:password -d '{"email" : "test@wallet.best", "email_send_frequency" : "daily"}' https://sandbox.wallet.best/v1/wallet/settings
{
    {
        "meta": {
            "code": 200
        }
    }
}

Webhook изменения статуса кошелька (verified/personified)

Параметры

$ curl -H 'Content-type:application/json' -d '{"phone": "+12345675578", "verified": true}' https://sandbox.wallet.best/v1/wallet/status?webhook_client_id=mserver&webhook_client_token=token

{
    {
        "meta": {
            "code": 200
        }
    }
}

Сервисы

Сервис - это назначение платежа. Сервис содержит описание параметров, которые должны быть переданы в платежном запросе конечным пользователем.

Параметры сервисов мапятся в админке, потому могут отличаться от MServer. Когда пользователь заполняется данные для сервиса, они попадают в базу знаний, на основе которой можно выделить шаблоны для параметров.

Поля:

Параметры:

Поля range_start и range_end нужны для создания диапазона чисел. Например нужно сделать выбор по годам начиная от 1901 и заканчивая 2000

Загрузка списка сервисов

Список отдается с постраничной навигацией. Если существует следующая страница с сервисами - в meta параметр has_next_page будет true, в ином случае - false.

В ответе в meta присутствует параметр request_time со значением UNIX timestamp. Если делать запрос с параметром If-Modified-Since в котором будет указан timestamp предыдущего запроса, то ответ может быть с HTTP кодом 304.

В meta возвращаются suggestions в количестве до 5 с учетом geo и project_id. Это сервисы отсортированные по количеству платежей за месяц в обратном порядке.

Параметры:

$ curl -u+79261111111:p@ssw0rD https://sandbox.wallet.best/v1/services
{
    "meta": {
        "request_time": 1407428185,
        "code": 200,
        "has_next_page": true,
        "urgent_data": {
            "amount": 2370,
            "unseen_payments": 1
        },
        "suggestions": [
            {
                "id": 1000,
                "name": "Теле2",
                "keywords": "",
                "status": "online",
                "icon_url": "http:\/\/api.mbank.dev\/img\/services\/53359fb2255c741a749f0c44.png?1432896868",
                "limit": "Лимитов нет",
                "rate": {
                    "fix": 0,
                    "percent": 0
                },
                "verification_required": false,
                "group": {
                    "id": "53359fb2255c741a749f0c42",
                    "name": "Мобильная связь"
                }
            },
            {
                "id": 1161,
                "name": "Steam",
                "keywords": "",
                "status": "online",
                "icon_url": "http:\/\/api.mbank.dev\/img\/services\/53a6f8f456c35f166462c6c8.png?1432896868",
                "limit": "",
                "rate": {
                    "fix": 0,
                    "percent": 0
                },
                "verification_required": false,
                "group": {
                    "id": "53359fb2255c741a749f0c47",
                    "name": "Игры и социальные сети"
                }
            },
            {
                "id": 834,
                "name": "МегаФон",
                "keywords": "",
                "status": "online",
                "icon_url": "http:\/\/api.mbank.dev\/img\/services\/542949a556c35f205de5a52d.png?1432896868",
                "limit": "",
                "rate": {
                    "fix": 0,
                    "percent": 0
                },
                "verification_required": false,
                "group": {
                    "id": "53359fb2255c741a749f0c42",
                    "name": "Мобильная связь"
                }
            }
        ]
    },
    "data": [
        {
            "id": 1,
            "name": "Мегафон",
            "keywords": "",
            "status": "online",
            "icon_url": "https:\/\/api.mbank.ru\/img\/providers\/dev_834.png",
            "limit": "",
            "rate": {
                "fix": 0,
                "percent": 0
            },
            "verification_required": true,
            "groups": [
                {
                    "id": "53359fb2255c741a749f0c4b",
                    "name": "Интернет провайдеры"
                }
            ],
            "geo": [
                [
                    "Москва",
                    "Центральный округ",
                    "Российская Федерация"
                ],
                [
                    "Питер",
                    "Вохомский район",
                    "Костромская область",
                    "Центральный округ",
                    "Российская Федерация"
                ]
            ]
        },
        {
            "id": 1000,
            "name": "Tele2",
            "keywords": "",
            "status": "offline",
            "icon_url": "https:\/\/api.mbank.ru\/img\/providers\/dev_1000.png",
            "limit": "",
            "rate": {
                "fix": 0,
                "percent": 0
            },
            "verification_required": false,
            "groups": [
                {
                    "id": "53359fb2255c741a749f0c59",
                    "name": "Мобильная связь зарубежья"
                }
            ]
        }
    ]
}

Загрузка списка групп

Поле amount содержит количество включенных сервисов в группе. В ответе в meta присутствует параметр request_time со значением UNIX timestamp. Если делать запрос с параметром If-Modified-Since в котором будет указан timestamp предыдущего запроса, то ответ может быть с HTTP кодом 304

$ curl -u +79261111111:p@ssw0rD https://sandbox.wallet.best/v1/groups
{
    "meta": {
        "request_time": 1423147436,
        "code": 200,
        "urgent_data": {
            "amount": 2370,
            "unseen_payments": 1
        }
    },
    "data": [
        {
            "id": 3,
            "name": "Мобильная связь",
            "keywords": "",
            "group": "cellular",
            "type": "cellular",
            "amount": 8
        },
        {
            "id": 895,
            "name": "Мобильная связь зарубежья",
            "keywords": "",
            "group": "",
            "type": "",
            "amount": 20
        },
        {
            "id": 4,
            "name": "Игры и социальные сети",
            "keywords": "",
            "group": "",
            "type": "",
            "amount": 4
        }
    ]
}

Загрузка списка сервисов по группам

Это устаревший метод, который будет удален в будущих релизах

В ответе в meta присутствует параметр request_time со значением UNIX timestamp. Если делать запрос с параметром If-Modified-Since в котором будет указан timestamp предыдущего запроса, то ответ может быть с HTTP кодом 304.

В метаданных есть поле suggestion_rules c массивом код оператора в международном формате : ID сервиса

$ curl -u+79261111111:p@ssw0rD https://sandbox.wallet.best/v1/services/groups
{
    "meta": {
        "request_time": 1407182553,
        "suggestion_rules": {
            "+7920": 1,
            "+7939": 1,
            "+7900": 3,
            "+7968": 3,
            "+7910": 2,
            "+7911": 2,
            "+7901": 5,
            "+7953": 5
        },
        "code": 200
    },
    "data": {
        {
            "id": 3,
            "name": "Мобильная связь",
            "group": "Cellular",
            "type": "Cellular",
            "services": {
                {
                    "id": 1000,
                    "name": "Tele2",
                    "status": "online",
                    "icon_url": "https:\/\/api.mbank.ru\/img\/providers\/dev_1000.png",
                    "limit": "",
                    "rate": {
                        "fix": 0,
                        "percent": 0
                    },
                    "verification_required": true
                },
                {
                    "id": 770,
                    "name": "Билайн",
                    "status": "online",
                    "icon_url": "https:\/\/api.mbank.ru\/img\/providers\/dev_770.png",
                    "limit": "",
                    "rate": {
                        "fix": 0,
                        "percent": 0
                    },
                    "verification_required": true
                }
            }
        },
        {
            "id": 12,
            "name": "Игры и социальные сети",
            "group": "",
            "type": "",
            "services": {
                {
                    "id": 1066,
                    "name": "Одноклассники",
                    "status": "online",
                    "icon_url": "https:\/\/api.mbank.ru\/img\/providers\/dev_1068.png",
                    "limit": ""
                    "rate": {
                        "fix": 0,
                        "percent": 0
                    },
                    "verification_required": true
                }
            }
        }
    }
}

Информация о сервисе по id

$ curl -u+79261111111:p@ssw0rD https://sandbox.wallet.best/v1/services/42
{
    "meta": {
        "code": 200
    },
    "data": {
        "id": 770,
        "name": "Билайн",
        "keywords": "билайн, белайн, белаин, пчелайн",
        "icon_url": "https:\/\/api.mbank.ru\/img\/providers\/dev_770.png",
        "limit": "",
        "rate": {
            "fix": 0,
            "percent": 0
        },
        "minsum": 2,
        "maxsum": 15000,
        "status": "online",
        "verification_required": false,
        "parameters": [
            {
                "id": "phoneNumber",
                "is_disabled": false,
                "is_hidden": false,
                "is_required": false,
                "min_length": 10,
                "max_length": 10,
                "range_start": 1,
                "range_end": 12,
                "patterns": [
                    {
                        "pattern": "^\\d{10}$a",
                        "description": "№ телефона не 10 цифр"
                    },
                    {
                        "pattern": "^\\d{16}$a",
                        "description": "№ карточки не 16 цифр"
                    }
                ],
                "pattern": "^\\d{10}$a",
                "pattern_desc": "10 цифр",
                "type": "phone",
                "title": "Номер телефона",
                "default_value": "[phone:+79267101280]",
                "suggested_values": [
                    "+79267101280",
                    "+79267101250"
                ],
                "items": [
                    {
                        "code": "1",
                        "value": "Оплата по № Догoвора"
                    },
                    {
                        "code": "2",
                        "value": "Оплата по № Карты"
                    },
                    {
                        "code": "3",
                        "value": "Оплата по № Счета"
                    }
                ],
                "service_param_pattern_id": null,
                "is_changed": false
            }
        ],
        "category": {
            "id": "549c92fb56c35f660ecd341f",
            "name": "Мобильная связь",
            "group": "Cellular",
            "type": "Cellular",
            "amount": 3
        },
        "groups": [
            {
                "id": "53359fb2255c741a749f0c42",
                "name": "Мобильная связь",
                "group": "cellular",
                "type": "cellular",
                "keywords": "",
                "amount": 0,
                "services_count": 9
            }
        ]
    }
}

Поиск сервиса по MNP

Параметры (все обязательны):

$ curl -u+79261111111:p@ssw0rD https://sandbox.wallet.best/v1/services/mnp?provider_id=beline&provider_region_code=ru
{
    "meta": {
        "code": 200
    },
    "data": {
        "id": 770,
        "name": "Билайн",
        "keywords": "",
        "icon_url": "http:\/\/api.mbank.dev\/img\/services\/53359fb2255c741a749f0c45.png?1433497473",
        "limit": "",
        "minsum": 2,
        "maxsum": 15000,
        "rate": {
            "fix": 0,
            "percent": 0
        },
        "status": "online",
        "verification_required": false,
        "parameters": [
            {
                "id": "phoneNumber",
                "is_disabled": false,
                "is_hidden": false,
                "is_required": true,
                "min_length": 12,
                "max_length": 12,
                "range_start": 0,
                "range_end": 0,
                "patterns": [
                    {
                        "pattern": "",
                        "description": ""
                    },
                    {
                        "pattern": "^\\+7[0-9]{10}$",
                        "description": {
                            "ru_RU": "Номер телефона РФ начиная с +7 (в международном формате). Например, +79261112233"
                        }
                    }
                ],
                "pattern": "^\\+7[0-9]{10}$",
                "pattern_desc": "Номер телефона РФ начиная с +7 (в международном формате). Например, +79261112233",
                "type": "phone",
                "title": "Номер телефона, начиная с +7",
                "default_value": null,
                "suggested_values": [],
                "items": null
            }
        ],
        "category": {
            "id": "53359fb2255c741a749f0c42",
            "mserver_id": "53359fb2255c741a749f0c42",
            "name": "Мобильная связь",
            "group": "cellular",
            "keywords": "",
            "icon_url_32x32": "",
            "amount": 0
        }
    }
}

Определение ОПСОСа по номеру телефона

$ curl https://sandbox.wallet.best/v1/services/mobile/79261111111
{
  "meta": {
    "code": 200
  },
  "data": {
    "id": 834,
    "name": "МегаФон",
    "icon_url": "https://sandbox.wallet.best/img/providers/dev_834.png",
    "limit": "",
    "rate": {
        "fix": 0,
        "percent": 0
    },
    "minsum": 1,
    "maxsum": 15000,
    "parameters": [
      {
        "id": "phoneNumber",
        "title": "Номер телефона",
        "pattern": null,
        "pattern_desc": "10 цифр",
        "min_length": 10,
        "max_length": 10,
        "type": "phone"
      }
    ]
  }
}

Заявка на добавление нового сервиса

Создает в Intercom.io завку на добавление сервиса.

Параметры:

$ curl -X POST -H 'Content-type:application/json'
-u+79261111111:p@ssw0rD -d '{"title" : "%SERVICE TITLE%" }'
https://sandbox.wallet.best/v1/services/order
{
    "meta": {
        "code": 200
    },
    "data": {
        "created_at": 1407185953,
        "updated_at": 1407185953,
        "read": true,
        "created_by_user": true,
        "user": {
            "email": "",
            "user_id": "+79261111111",
            "name": null,
            "is_admin": false,
            "avatar": {}
        },
        "message_type": "conversation",
        "messages": [
            {
                "id": 2006929,
                "created_at": 1407185953,
                "url": null,
                "html": "<p>User: {code:javascript}{}{code}\n<br>{quote}Просит добавить сервис: 'TEST_TEST_TEST'{quote}\n<\/p>",
                "subject": "",
                "from": {
                    "email": "",
                    "user_id": "+79261111111",
                    "name": null,
                    "is_admin": false,
                    "avatar": {}
                },
                "attachments": []
            }
        ],
        "message_id": 2006929,
        "thread_id": 2006929,
        "interrupt": true
    }
}

Коды ошибок

География, населенные пункты

Метод определяет населенный пункт пользователя по IP и возвращает список предустановленных (major) городов или результаты поиска по названию если параметры не переданы. Город, если определили автоматически, находится в meta.geo.

Параметры:

$ curl -u +79261111111:p@ssw0rD https://sandbox.wallet.best/v1/geo?filter_by=title\&title=%D0%BC%D0%BE%D1%81%D0%BA%D0%B2
{
    "meta": {
        "geo": {
            "id": "54be73b2b7f47bef910042b3",
            "title": "Лобня",
            "inside": [
                {
                    "id": "54be73b2b7f47bef910041e4",
                    "title": "Московская область"
                },
                {
                    "id": "54be73b2b7f47bef910041a8",
                    "title": "Центральный округ"
                },
                {
                    "id": "54be73b2b7f47bef910041a7",
                    "title": "Российская Федерация"
                }
            ]
        },
        "code": 200,
        "urgent_data": {
            "amount": 2370,
            "unseen_payments": 1
        }
    },
    "data": [
        {
            "id": "54be73b2b7f47bef910041ff",
            "title": "Москва",
            "inside": [
                {
                    "id": "54be73b2b7f47bef910041a8",
                    "title": "Центральный округ"
                },
                {
                    "id": "54be73b2b7f47bef910041a7",
                    "title": "Российская Федерация"
                }
            ]
        },
        {
            "id": "54be73b6b7f47bef9100a49a",
            "title": "Москвина",
            "inside": [
                {
                    "id": "54be73b6b7f47bef9100a493",
                    "title": "Кудымкарский район"
                },
                {
                    "id": "54be73b2b7f47bef910041fe",
                    "title": "Пермский край"
                },
                {
                    "id": "54be73b2b7f47bef910041ae",
                    "title": "Приволжский округ"
                },
                {
                    "id": "54be73b2b7f47bef910041a7",
                    "title": "Российская Федерация"
                }
            ]
        },
        {
            "id": "54be73b8b7f47bef9100be4a",
            "title": "Москвитино",
            "inside": [
                {
                    "id": "54be73b8b7f47bef9100be3b",
                    "title": "Свободненский район"
                },
                {
                    "id": "54be73b2b7f47bef910041d1",
                    "title": "Амурская область"
                },
                {
                    "id": "54be73b2b7f47bef910041ab",
                    "title": "Дальневосточный округ"
                },
                {
                    "id": "54be73b2b7f47bef910041a7",
                    "title": "Российская Федерация"
                }
            ]
        },
        {
            "id": "54be73b2b7f47bef9100436e",
            "title": "Москвич",
            "inside": [
                {
                    "id": "54be73b2b7f47bef91004365",
                    "title": "Домодедовский район"
                },
                {
                    "id": "54be73b2b7f47bef910041e4",
                    "title": "Московская область"
                },
                {
                    "id": "54be73b2b7f47bef910041a8",
                    "title": "Центральный округ"
                },
                {
                    "id": "54be73b2b7f47bef910041a7",
                    "title": "Российская Федерация"
                }
            ]
        }
    ]
}

Платежи

Платеж - это операция движения денежных средств между счетами mserver выполняемая по распоряжению пользователя. Платежи различаются по типу:

Тип платежа Описание
out Вывод средств со счета кошелька пользователя в пользу провайдера (провайдер КредитПилот)
p2p Перевод денег со счета кошелька пользователя на счет кошелька другого пользователя
in Ввод средств на счет кошелька пользователя через провайдера (провайдеры КредитПилот, ИПСП, Рапида)
inout Транзит средств от ИПСП в пользу КредитПилот

Поля, общие для всех типов платежей

Поля для платежей типа out / inout (вывод денег)

Поля для типа in / inout (ввод денег)

Поля для типа p2p (перевод между кошельками)

Статусы платежа

Код статуса платежа Описание
created Платеж создан (например вызовом POST /payments) и ожидает от клиента команды на исполнение
processing Платеж был запущен в обработку (например вызовом POST /payments/{id}/pay и исполняется
completed Платеж успешно исполнен
declined Платеж отклонен, с уточнением причины в поле decline_reason

Причины отказа в проведении платежа

Код причины отказа Описание
invalid_data Неверные данные платежа (например неверный номер карты/номер телефона)
insufficient_funds Недостаточно средств на счете кошелька
internal_error Что-то пошло не так, обратитесь в поддержку

Клиентский идентификатор платежа

Клиент обязан генерировать UUID для каждого отдельного платежа и передавать его в поле client_payment_id платежного запроса. По спецификации UUID должен быть в нижнем регистре (33b958e5-042b-4fb2-bf9e-e4198125e050). Если в процессе создания платежа клиент получил ошибку I/O, он должен повторять запрос создания платежа с тем же самым client_payment_id до получения ответа. Гарантируется, что платеж с данным client_payment_id будет создан не более 1 раза.

Проведение платежа

Для передачи mserver платежа на исполнение клиент следует общепринятому в платежной индустрии двухфазному протоколу. В первой фазе, подготовительной, клиент создает в mserver Платеж с необходимыми параметрами. По завершении подготовительной фазы клиент получает от mserver информацию о полной стоимости платежа (поле total) и предъявляет полную стоимость платежа пользователю кошелька. В случае согласия пользователя с условиями исполнения платежа клиент от имени пользователя инициирует исполнение подготовленного платежа (вторая фаза, платежная).

проведение платежа

Платеж в пользу сервиса

Параметры:

$ curl -u+79261111111:password -H 'Content-type:application/json'
 -d '{"type": "out", "client_payment_id": "e731a7e2-c553-4295-867e-1023359bee28",
 "amount": 100, "service": 61, "parameters": {"phoneNumber": "9267101283",
 "BIK": "044583151", "Name": "name", "SName": "sname", "Fam": "fam"}}'
 https://sandbox.wallet.best/v1/payments
{
    "meta": {
        "code": 200,
        "next_action": "update",
        "time": 0.376464
    },
    "data": {
        "id": 1401089240377,
        "client_payment_id": "e731a7e2-c553-4295-867e-1023359bee28",
        "amount": 100,
        "created_at": "2014-08-05T15:09:37.832Z",
        "status": "created",
        "type": "out",
        "service": {
            "id": 61,
            "name": "Мультибанк"
        },
        "parameters": [
            {
                "id": "phoneNumber",
                "is_disabled": false,
                "is_hidden": false,
                "is_required": false,
                "min_length": null,
                "max_length": null,
                "pattern": null,
                "pattern_desc": null,
                "type": null,
                "title": "№ Телефона (10 цифр)",
                "suggested_values": [
                    "9267101283",
                    "9267101283"
                ],
                "items": null,
                "service_param_pattern_id": null,
                "is_changed": false
            },
            {
                "id": "BIK",
                "is_disabled": false,
                "is_hidden": false,
                "is_required": false,
                "min_length": null,
                "max_length": null,
                "pattern": null,
                "pattern_desc": null,
                "type": null,
                "title": "БИК",
                "suggested_values": [
                    "044583151",
                    "044583151"
                ],
                "items": null,
                "service_param_pattern_id": null,
                "is_changed": false
            },
            {
                "id": "Name",
                "is_disabled": false,
                "is_hidden": false,
                "is_required": false,
                "min_length": null,
                "max_length": null,
                "pattern": null,
                "pattern_desc": null,
                "type": null,
                "title": "Имя Отправителя",
                "suggested_values": [
                    "name",
                    "name"
                ],
                "items": null,
                "service_param_pattern_id": null,
                "is_changed": false
            },
            {
                "id": "SName",
                "is_disabled": false,
                "is_hidden": false,
                "is_required": false,
                "min_length": null,
                "max_length": null,
                "pattern": null,
                "pattern_desc": null,
                "type": null,
                "title": "Отчество Отправителя",
                "suggested_values": [
                    "sname",
                    "sname"
                ],
                "items": null,
                "service_param_pattern_id": null,
                "is_changed": false
            },
            {
                "id": "Fam",
                "is_disabled": false,
                "is_hidden": false,
                "is_required": false,
                "min_length": null,
                "max_length": null,
                "pattern": null,
                "pattern_desc": null,
                "type": null,
                "title": "Фамилия Отправителя",
                "suggested_values": [
                    "fam",
                    "fam"
                ],
                "items": null,
                "service_param_pattern_id": null,
                "is_changed": false
            }
        ],
        "outbound": {
            "id": 35,
            "code": "tpr_out",
            "name": "ООО ТПР (провайдер)"
        }
    }
}

Коды ошибок

Перевод между кошельками

Параметры:

$ curl -u+79261111111:password -H 'Content-type:application/json'
 -d '{"type": "p2p", "client_payment_id": "071c6d23-7508-4e35-ad92-852308a47677", "amont": 100,
 "destination": "+79261111112", "message": "Съешь ещё этих мягких французских булок, да выпей чаю"}'
 https://sandbox.wallet.best/v1/payments
{
  "meta" : {
    "code" : 200,
    "next_action" : "pay"
  },
  "data" : {
    "id" : 1401089237211,
    "client_payment_id" : "071c6d23-7508-4e35-ad92-852308a47677",
    "amount" : 100,
    "total" : 100.00,
    "created_at" : "2014-07-01T06:30:01.277Z",
    "status" : "created",
    "type" : "p2p",
    "destination" : {
      "phone" : "+79261111112"
    },
    "message" : "Съешь ещё этих мягких французских булок, да выпей чаю"
  }
}

Коды ошибок

Пополнение кошелька

Пополнение кошелька пользователя через запросы к API возможно с использованием пластиковых карт. Существуют 3 сценария пополнения кошелька с карты:

Параметры:

Пример однократного пополнения

Создаем платеж:

$ curl -u +79261111111:password -H 'Content-type:application/json' -d '{"type": "in", "client_payment_id": "071c6d23-7508-4e35-ad92-852308a47678", "amount": 100}' https://sandbox.wallet.best/v1/payments
{
  "meta" : {
    "code" : 200,
    "next_action" : "pay"
  },
  "data" : {
    "id" : 1401089237212,
    "client_payment_id" : "071c6d23-7508-4e35-ad92-852308a47678",
    "amount" : 100,
    "total" : 100.00,
    "created_at" : "2014-07-01T06:55:27.870Z",
    "status" : "created",
    "type" : "in",
    "inbound" : {
      "id" : 62,
      "code" : "ipsp_in",
      "name" : "ООО ИПСП (агент)"
    },
    "card" : {
      "state" : "created"
    }
  }
}

Платим:

$curl -u +79261111111:password -H 'Content-type:application/json' -X POST https://sandbox.wallet.best/v1/payments/1401089237212/pay
{
  "meta" : {
    "code" : 200,
    "next_action" : "get"
  },
  "data" : {
    "id" : 1401089237212,
    "client_payment_id" : "071c6d23-7508-4e35-ad92-852308a47678",
    "amount" : 100,
    "total" : 100,
    "created_at" : "2014-07-01T06:55:27.870Z",
    "status" : "processing",
    "type" : "in",
    "inbound" : {
      "id" : 62,
      "code" : "ipsp_in",
      "name" : "ООО ИПСП (агент)"
    },
    "card" : {
      "state" : "pending",
      "payment_page_url" : "https://test1.ipsp.com/frontend/endpoint?product_id=1721&desc=mserver2&payment_type=S&amount=100.00&currency=RUB&cf=1401089237212&locale=ru&hash=3d49fa2b7ceb67f8ad7ed7f2247dd2cad1c4acdc"
    }
  }
}

далее следует перенаправить пользователя на платежную страницу по ссылке из поля card.payment_page_url.

Пример однократного пополнения с сохранением данных карты

Создаем платеж:

$ curl -u +79261111111:password -H 'Content-type:application/json' -d '{"type": "in", "client_payment_id": "071c6d23-7508-4e35-ad92-852308a47679", "amount": 100, "store_card": true}' https://sandbox.wallet.best/v1/payments
{
  "meta" : {
    "code" : 200,
    "next_action" : "pay"
  },
  "data" : {
    "id" : 1401089237231,
    "client_payment_id" : "071c6d23-7508-4e35-ad92-852308a47679",
    "amount" : 100,
    "total" : 100.00,
    "created_at" : "2014-07-01T08:31:24.058Z",
    "status" : "created",
    "type" : "in",
    "inbound" : {
      "id" : 62,
      "code" : "ipsp_in",
      "name" : "ООО ИПСП (агент)"
    },
    "card" : {
      "id" : 21,
      "state" : "created"
    }
  }
}

Платим:

$ curl -u +79261111111:password -H 'Content-type:application/json' -X POST https://sandbox.wallet.best/v1/payments/1401089237231/pay
{
  "meta" : {
    "code" : 200,
    "next_action" : "get"
  },
  "data" : {
    "id" : 1401089237231,
    "client_payment_id" : "071c6d23-7508-4e35-ad92-852308a47679",
    "amount" : 100,
    "total" : 100,
    "created_at" : "2014-07-01T08:31:24.058Z",
    "status" : "processing",
    "type" : "in",
    "inbound" : {
      "id" : 62,
      "code" : "ipsp_in",
      "name" : "ООО ИПСП (агент)"
    },
    "card" : {
      "id" : 21,
      "state" : "pending",
      "payment_page_url" : "https://test1.ipsp.com/frontend/endpoint?product_id=1721&desc=mserver2&payment_type=S&amount=100.00&currency=RUB&cf=1401089237231&locale=ru&biller_client_id=21&perspayee_expiry=0150&recur_freq=1&hash=5136f2cb7fd77f98b1df86d4644338e5a10dab98"
    }
  }
}

далее следует перенаправить пользователя на платежную страницу по ссылке из поля card.payment_page_url.

Убедимся, что платеж успешен и карта сохранена:

$ curl -u +79261111111:password https://sandbox.wallet.best/v1/payments/1401089237231
{
  "meta" : {
    "code" : 200
  },
  "data" : {
    "id" : 1401089237231,
    "client_payment_id" : "071c6d23-7508-4e35-ad92-852308a47679",
    "amount" : 100,
    "total" : 100,
    "created_at" : "2014-07-01T08:31:24.058Z",
    "processed_at" : "2014-07-01T08:39:40.173Z",
    "status" : "completed",
    "type" : "in",
    "inbound" : {
      "id" : 62,
      "code" : "ipsp_in",
      "name" : "ООО ИПСП (агент)"
    },
    "card" : {
      "id" : 21,
      "state" : "active",
      "title" : "541715******2399",
      "type" : "MasterCard"
    }
  }
}

Пример пополнения с сохраненной карты

Используем карту #21 сохраненную в предыдущем примере.

Создаем платеж:

$ curl -u +79261111111:password -H 'Content-type:application/json' -d '{"type": "in", "client_payment_id": "071c6d23-7508-4e35-ad92-852308a47689", "amount": 100, "card": 21}' https://sandbox.wallet.best/v1/payments
{
  "meta" : {
    "code" : 200,
    "next_action" : "pay"
  },
  "data" : {
    "id" : 1401089237232,
    "client_payment_id" : "071c6d23-7508-4e35-ad92-852308a47653",
    "amount" : 100,
    "total" : 100.00,
    "created_at" : "2014-07-01T08:58:51.143Z",
    "status" : "created",
    "type" : "in",
    "inbound" : {
      "id" : 62,
      "code" : "ipsp_in",
      "name" : "ООО ИПСП (агент)"
    },
    "card" : {
      "id" : 21,
      "state" : "active",
      "title" : "541715******2399",
      "type" : "MasterCard"
    }
  }
}

Платим:

$ curl -u+79261111111:password -H 'Content-type:application/json' -X POST https://sandbox.wallet.best/v1/payments/1401089237232/pay
{
  "meta" : {
    "code" : 200,
    "next_action" : "get"
  },
  "data" : {
    "id" : 1401089237232,
    "client_payment_id" : "071c6d23-7508-4e35-ad92-852308a47653",
    "amount" : 100,
    "total" : 100,
    "created_at" : "2014-07-01T12:04:49.330Z",
    "status" : "processing",
    "type" : "in",
    "inbound" : {
      "id" : 62,
      "code" : "ipsp_in",
      "name" : "ООО ИПСП (агент)"
    },
    "card" : {
      "id" : 25,
      "state" : "active",
      "title" : "541715******2399",
      "type" : "MasterCard"
    }
  }
}

Транзитный платеж

Транзитный платеж соединяет в одном действии зачисление денег на кошелек через поставщика ввода средств (в настоящее время ИПСП) и списание денег со счета кошелька в пользу поставщика вывода средств (в настоящее время КредитПилот).

По аналогии с пополнением кошелька возможны следующие варианты транзитного платежа:

Параметры:

Однократное списание с карты

Создаем платеж:

$ curl -u+79261111111:password -H 'Content-type:application/json'
-d '{"type": "inout", "client_payment_id": "021c6d23-7508-4e35-ad92-852308a47689", "amount": 100, "service": 834,
"parameters": {"phoneNumber": "9267101283"}}'
https://sandbox.wallet.best/v1/payments
{
    "meta": {
        "code": 200,
        "urgent_data": {
            "amount": 9999,
            "unseen_payments": 1
        },
        "next_action": "pay",
        "time": 0.418221
    },
    "data": {
        "id": 25778,
        "client_payment_id": "021c6d23-7508-4e35-ad92-852308a47689",
        "amount": 100,
        "total": 103,
        "created_at": "2015-03-17T13:49:13.394Z",
        "status": "created",
        "type": "inout",
        "service": {
            "id": 834,
            "name": "Мегафон"
        },
        "parameters": [
            {
                "id": "phoneNumber",
                "is_disabled": false,
                "is_hidden": false,
                "is_required": true,
                "min_length": 12,
                "max_length": 12,
                "range_start": 0,
                "range_end": 0,
                "patterns": [],
                "pattern": "^\\+7[0-9]{10}$",
                "pattern_desc": "Номер телефона РФ начиная с +7 (в международном формате). Например, +79261112233",
                "type": "phone",
                "title": "Номер телефона, начиная с +7",
                "default_value": null,
                "suggested_values": [],
                "items": null,
                "localized_fields": [
                    "title",
                    "pattern_desc"
                ],
                "value": "+79267101283"
            }
        ],
        "inbound": {
            "id": 4,
            "code": "ipsp_in",
            "name": "ООО ИПСП (агент)"
        },
        "outbound": {
            "id": 1,
            "code": "tpr_out",
            "name": "Кредит Пилот"
        },
        "card": {
            "state": "created"
        },
        "wallet": {
            "phone": "+79261111111"
        }
    }
}

Платим: shell curl -u+79261111111:password -H 'Content-type:application/json' -X POST https://sandbox.wallet.best/v1/payments/25818/pay

{
    "meta": {
        "code": 200,
        "next_action": "get",
        "time": 0.317098
    },
    "data": {
        "id": 25818,
        "client_payment_id": "131c6d23-7508-4e35-ad92-852308a47689",
        "amount": 100,
        "total": 103,
        "created_at": "2015-03-17T15:03:41.606Z",
        "status": "processing",
        "type": "inout",
        "service": {
            "id": 834,
            "name": "Мегафон"
        },
        "parameters": [
            {
                "code": "phoneNumber",
                "name": "№ Телефона",
                "value": "9267101283"
            }
        ],
        "inbound": {
            "id": 4,
            "code": "ipsp_in",
            "name": "ООО ИПСП (агент)"
        },
        "outbound": {
            "id": 1,
            "code": "tpr_out",
            "name": "Кредит Пилот"
        },
        "card": {
            "state": "pending",
            "payment_page_url": "https:\/\/test1.ipsp.com\/frontend\/endpoint?product_id=1721&desc=TestWallet&payment_type=S&amount=103.00&currency=RUB&cf=25818&locale=ru&hash=afbe9967151306a3e69900d5e3bffd7b5ef8475c"
        },
        "wallet": {
            "phone": "+79261111111"
        }
    }
}

Далее следует перенаправить пользователя на платежную страницу по ссылке из поля card.payment_page_url

С сохранением данных карты

Сценарий ничем не отличается от предыдущего, кроме передачи флага store_card = true при создании платежа. Идентификатор карты, возвращенный в data.card.id можно впоследствии использовать для пополнения счета кошелька или выполнения транзитных платежей с сохраненной карты.

Создаем платеж: shell $ curl -u+79261111111:password -H 'Content-type:application/json' -d '{"type": "inout", "client_payment_id": "021c6d23-7508-4e35-ad92-852308a47689", "amount": 100, "store_card": true, "service": 834, "parameters": {"phoneNumber": "9267101283"}}' https://sandbox.wallet.best/v1/payments

{
    "meta": {
        "code": 200,
        "urgent_data": {
            "amount": 9999,
            "unseen_payments": 1
        },
        "next_action": "pay",
        "time": 0.330981
    },
    "data": {
        "id": 25778,
        "client_payment_id": "021c6d23-7508-4e35-ad92-852308a47689",
        "amount": 100,
        "total": 103,
        "created_at": "2015-03-17T13:49:13.394Z",
        "status": "created",
        "type": "inout",
        "service": {
            "id": 834,
            "name": "Мегафон"
        },
        "parameters": [
            {
                "id": "phoneNumber",
                "is_disabled": false,
                "is_hidden": false,
                "is_required": true,
                "min_length": 12,
                "max_length": 12,
                "range_start": 0,
                "range_end": 0,
                "patterns": [],
                "pattern": "^\\+7[0-9]{10}$",
                "pattern_desc": "Номер телефона РФ начиная с +7 (в международном формате). Например, +79261112233",
                "type": "phone",
                "title": "Номер телефона, начиная с +7",
                "default_value": null,
                "suggested_values": [],
                "items": null,
                "localized_fields": [
                    "title",
                    "pattern_desc"
                ],
                "value": "+79267101283"
            }
        ],
        "inbound": {
            "id": 4,
            "code": "ipsp_in",
            "name": "ООО ИПСП (агент)"
        },
        "outbound": {
            "id": 1,
            "code": "tpr_out",
            "name": "Кредит Пилот"
        },
        "card": {
            "state": "created"
        },
        "wallet": {
            "phone": "+79261111111"
        }
    }
}

Платим: shell curl -u+79261111111:password -H 'Content-type:application/json' -X POST https://sandbox.wallet.best/v1/payments/25818/pay

{
    "meta": {
        "code": 200,
        "next_action": "get",
        "time": 0.317098
    },
    "data": {
        "id": 25818,
        "client_payment_id": "131c6d23-7508-4e35-ad92-852308a47689",
        "amount": 100,
        "total": 103,
        "created_at": "2015-03-17T15:03:41.606Z",
        "status": "processing",
        "type": "inout",
        "service": {
            "id": 834,
            "name": "Мегафон"
        },
        "parameters": [
            {
                "code": "phoneNumber",
                "name": "№ Телефона",
                "value": "9267101283"
            }
        ],
        "inbound": {
            "id": 4,
            "code": "ipsp_in",
            "name": "ООО ИПСП (агент)"
        },
        "outbound": {
            "id": 1,
            "code": "tpr_out",
            "name": "Кредит Пилот"
        },
        "card" : {
            "id" : 7222,
            "state" : "active",
            "title" : "541715******6825",
            "type" : "MasterCard"
        },
        "wallet": {
            "phone": "+79261111111"
        }
    }
}

C сохраненной карты

Транзитный платеж с сохраненной карты отличается от платежа с однократным списанием только указанием идентификатора карты в поле card при создании платежа.

Создаем платеж: shell $ curl -u+79261111111:password -H 'Content-type:application/json' -d '{"type": "inout", "client_payment_id": "021c6d23-7508-4e35-ad92-852308a47689", "amount": 100, "card": 21, "service": 834, "parameters": {"phoneNumber": "9267101283"}}' https://sandbox.wallet.best/v1/payments

{
    "meta": {
        "code": 200,
        "urgent_data": {
            "amount": 9999,
            "unseen_payments": 1
        },
        "next_action": "pay",
        "time": 0.32556
    },
    "data": {
        "id": 25778,
        "client_payment_id": "021c6d23-7508-4e35-ad92-852308a47689",
        "amount": 100,
        "total": 103,
        "created_at": "2015-03-17T13:49:13.394Z",
        "status": "created",
        "type": "inout",
        "service": {
            "id": 834,
            "name": "Мегафон"
        },
        "parameters": [
            {
                "id": "phoneNumber",
                "is_disabled": false,
                "is_hidden": false,
                "is_required": true,
                "min_length": 12,
                "max_length": 12,
                "range_start": 0,
                "range_end": 0,
                "patterns": [],
                "pattern": "^\\+7[0-9]{10}$",
                "pattern_desc": "Номер телефона РФ начиная с +7 (в международном формате). Например, +79261112233",
                "type": "phone",
                "title": "Номер телефона, начиная с +7",
                "default_value": null,
                "suggested_values": [],
                "items": null,
                "localized_fields": [
                    "title",
                    "pattern_desc"
                ],
                "value": "+79267101283"
            }
        ],
        "inbound": {
            "id": 4,
            "code": "ipsp_in",
            "name": "ООО ИПСП (агент)"
        },
        "outbound": {
            "id": 1,
            "code": "tpr_out",
            "name": "Кредит Пилот"
        },
        "card" : {
            "id" : 21,
            "state" : "active",
            "title" : "541715******6825",
            "type" : "MasterCard"
        },
        "wallet": {
            "phone": "+79261111111"
        }
    }
}

Отложенный выбор типа платежа

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

POST /payments/{:id}/pay

нужно передать в теле запроса следующие поля:

Поля запроса подтверждения платежа для смены типа in -> inout

Создаем платеж используя кошелек как источник средств:

curl -u+79261111111:password -H 'Content-type:application/json'
-d '{"type": "out", "amount": 100, "client_payment_id": "021c6d23-7508-4e35-ad92-852308a47689", "service": 834, "parameters": {"phoneNumber": "9267101283"}}'
https://sandbox.wallet.best/v1/payments
{
    "meta": {
        "code": 200,
        "urgent_data": {
            "amount": 9999,
            "unseen_payments": 1
        },
        "next_action": "pay",
        "time": 0.468765
    },
    "data": {
        "id": 25832,
        "client_payment_id": "221c6d23-7508-4e35-ad92-852308a47689",
        "amount": 100,
        "total": 103,
        "created_at": "2015-03-18T12:40:02.248Z",
        "status": "created",
        "type": "out",
        "service": {
            "id": 834,
            "name": "Мегафон"
        },
        "parameters": [
            {
                "id": "phoneNumber",
                "is_disabled": false,
                "is_hidden": false,
                "is_required": true,
                "min_length": 12,
                "max_length": 12,
                "range_start": 0,
                "range_end": 0,
                "patterns": [],
                "pattern": "^\\+7[0-9]{10}$",
                "pattern_desc": "Номер телефона РФ начиная с +7 (в международном формате). Например, +79261112233",
                "type": "phone",
                "title": "Номер телефона, начиная с +7",
                "default_value": null,
                "suggested_values": [],
                "items": null,
                "localized_fields": [
                    "title",
                    "pattern_desc"
                ],
                "value": "+79267101283"
            }
        ],
        "outbound": {
            "id": 1,
            "code": "tpr_out",
            "name": "Кредит Пилот"
        },
        "wallet": {
            "phone": "+79261111111"
        }
    }
}

Решаем заплатить сохраненной картой с ID 7222:

curl -u+79261111111:password -H 'Content-type:application/json'
-d '{"type": "inout", "card": 7222}'
https://sandbox.wallet.best/v1/payments/25832/pay
{
    "meta": {
        "code": 200,
        "next_action": "get",
        "time": 0.317098
    },
    "data": {
        "id": 25818,
        "client_payment_id": "131c6d23-7508-4e35-ad92-852308a47689",
        "amount": 100,
        "total": 103,
        "created_at": "2015-03-17T15:03:41.606Z",
        "status": "processing",
        "type": "inout",
        "service": {
            "id": 834,
            "name": "Мегафон"
        },
        "parameters": [
            {
                "id": "phoneNumber",
                "is_disabled": false,
                "is_hidden": false,
                "is_required": true,
                "min_length": 12,
                "max_length": 12,
                "range_start": 0,
                "range_end": 0,
                "patterns": [],
                "pattern": "^\\+7[0-9]{10}$",
                "pattern_desc": "Номер телефона РФ начиная с +7 (в международном формате). Например, +79261112233",
                "type": "phone",
                "title": "Номер телефона, начиная с +7",
                "default_value": null,
                "suggested_values": [],
                "items": null,
                "localized_fields": [
                    "title",
                    "pattern_desc"
                ],
                "value": "+79267101283"
            }
        ],
        "inbound": {
            "id": 4,
            "code": "ipsp_in",
            "name": "ООО ИПСП (агент)"
        },
        "outbound": {
            "id": 1,
            "code": "tpr_out",
            "name": "Кредит Пилот"
        },
        "card" : {
            "id" : 7222,
            "state" : "active",
            "title" : "541715******6825",
            "type" : "MasterCard"
        },
        "wallet": {
            "phone": "+79261111111"
        }
    }
}

Анонимный платеж

Анонимный платеж соединяет в одном действии зачисление денег на кошелек через поставщика ввода средств (в настоящее время ИПСП) и списание денег со счета кошелька в пользу поставщика вывода средств (в настоящее время КредитПилот).

Анонимный платеж - аналог Транизитного, только без авторизации

Для того что бы провести такой платеж - клиенту необходимо получить токен доступа для приложения у MServer

Токен доступа приложения

curl -H "Accept: application/json" -u mbank_storefront:oklol https://www.synq.ru/mserver2-dev/oauth/token -d grant_type=client_credentials
{
  "meta" : {
    "code" : 200
  },
  "data" : {
    "access_token" : "88357939-aa71-426b-9afc-a5a9769ce527",
    "token_type" : "bearer",
    "expires_in" : 599,
    "scope" : "wallet.read person.read person.modify cards.read cards.modify payments.read payments.modify"
  }
}

После - с этим токеном совершается обычный транзитный платеж, но с обязательной передачей заголовка X-Authorization-Type : application

Параметры:

Создаем платеж:

$ curl -H 'Content-type:application/json' -H 'X-Authorization-Type:application' -H 'Authorization: bearer 88357939-aa71-426b-9afc-a5a9769ce527'
-d '{"type": "inout", "client_payment_id": "021c6d23-7508-4e35-ad92-852308a47689", "amount": 100, "service": 834,
"parameters": {"phoneNumber": "9267101283"}}'
https://sandbox.wallet.best/v1/payments
{
    "meta": {
        "code": 200,
        "urgent_data": {
            "amount": 9999,
            "unseen_payments": 1
        },
        "next_action": "pay",
        "time": 0.418221
    },
    "data": {
        "id": 25778,
        "client_payment_id": "021c6d23-7508-4e35-ad92-852308a47689",
        "amount": 100,
        "total": 103,
        "created_at": "2015-03-17T13:49:13.394Z",
        "status": "created",
        "type": "inout",
        "service": {
            "id": 834,
            "name": "Мегафон"
        },
        "parameters": [
            {
                "id": "phoneNumber",
                "is_disabled": false,
                "is_hidden": false,
                "is_required": true,
                "min_length": 12,
                "max_length": 12,
                "range_start": 0,
                "range_end": 0,
                "patterns": [],
                "pattern": "^\\+7[0-9]{10}$",
                "pattern_desc": "Номер телефона РФ начиная с +7 (в международном формате). Например, +79261112233",
                "type": "phone",
                "title": "Номер телефона, начиная с +7",
                "default_value": null,
                "suggested_values": [],
                "items": null,
                "localized_fields": [
                    "title",
                    "pattern_desc"
                ],
                "value": "+79267101283"
            }
        ],
        "inbound": {
            "id": 4,
            "code": "ipsp_in",
            "name": "ООО ИПСП (агент)"
        },
        "outbound": {
            "id": 1,
            "code": "tpr_out",
            "name": "Кредит Пилот"
        },
        "card": {
            "state": "created"
        },
        "wallet": {
            "phone": "+79261111111"
        }
    }
}

Платим:

curl -H 'X-Authorization-Type:application' -H 'Authorization: bearer 88357939-aa71-426b-9afc-a5a9769ce527' -H 'Content-type:application/json' -X POST https://sandbox.wallet.best/v1/payments/25818/pay
{
    "meta": {
        "code": 200,
        "next_action": "get",
        "time": 0.317098
    },
    "data": {
        "id": 25818,
        "client_payment_id": "131c6d23-7508-4e35-ad92-852308a47689",
        "amount": 100,
        "total": 103,
        "created_at": "2015-03-17T15:03:41.606Z",
        "status": "processing",
        "type": "inout",
        "service": {
            "id": 834,
            "name": "Мегафон"
        },
        "parameters": [
            {
                "code": "phoneNumber",
                "name": "№ Телефона",
                "value": "9267101283"
            }
        ],
        "inbound": {
            "id": 4,
            "code": "ipsp_in",
            "name": "ООО ИПСП (агент)"
        },
        "outbound": {
            "id": 1,
            "code": "tpr_out",
            "name": "Кредит Пилот"
        },
        "card": {
            "state": "pending",
            "payment_page_url": "https:\/\/test1.ipsp.com\/frontend\/endpoint?product_id=1721&desc=TestWallet&payment_type=S&amount=103.00&currency=RUB&cf=25818&locale=ru&hash=afbe9967151306a3e69900d5e3bffd7b5ef8475c"
        },
        "wallet": {
            "phone": "+79261111111"
        }
    }
}

Далее следует перенаправить пользователя на платежную страницу по ссылке из поля card.payment_page_url

Уведомление об анонимном платеже на почту

Для отправки чека на почту после процессинга анонимного платежа

Параметры:

Для локализации использовать заголовк Accept-Language, по умолчанию ru_RU

$ curl -H 'Content-type:application/json' -H 'X-Authorization-Type:application' -H 'Authorization: bearer 88357939-aa71-426b-9afc-a5a9769ce527'
-d '{"id": 34123, "email": "vasya@petrov.xxx"}'
https://sandbox.wallet.best/v1/payments/bill

Получение истории платежей

Сервис может быть выключеным, но в момент проведения транзакции был активен. Такой сервис будет помечен флагом is_disabled shell $ curl -u +79261111111:password -H 'Content-type:application/json' https://sandbox.wallet.best/v1/payments?page=0&size=35

Параметры page и size в запросе позволяют задать номер (начиная с 0) и размер страницы, которую запрашивает клиент. По умолчанию номер страницы - 0 и размер страницы - 35 платежей. Опциона��ьные параметры type и status позволяют фильтровать платежи по типу и статусу. По умолчанию, платежи со статусом created не попадают в список, чтобы их увидеть, необходимо задать этот статус явно. Статусы и типы можно перечислять через запятую, например: status=created,completed.

Если платеж еще не был просмотрен, у него будет поле unseen со зачением true Просмотренным платеж считается, когда он вернулся в списке. Если же платеж присутствует на второй странице выписки, а она не была запрошена - платеж будет считаться непросмотренным

{
    "meta": {
        "code": 200,
        "urgent_data": {
            "amount": 9971.34,
            "unseen_payments": 1
        },
        "page": {
            "total_elements": 4
        }
    },
    "data": [
        {
            "id": 1401089244809,
            "client_payment_id": "495e4210-18bc-4301-b388-5dda972865e6",
            "amount": 5,
            "total": 8.03,
            "created_at": "2014-10-30T14:21:12.406Z",
            "processed_at": "2014-10-30T14:21:20.309Z",
            "status": "completed",
            "type": "out",
            "service": {
                "id": 1,
                "name": "Мегафон",
                "is_disabled": true
            },
            "parameters": [
                {
                    "code": "phoneNumber",
                    "name": "№ телефона (10 цифр)",
                    "value": "9263456782"
                }
            ],
            "outbound": {
                "id": 35,
                "code": "tpr_out",
                "name": "ООО ТПР (провайдер)"
            },
            "wallet": {
                "phone": "+380631345678"
            },
            "remote_check": "1414678875803",
            "title": "",
            "subtitle": "",
            "description": "",
            "unseen": true
        },
        {
            "id": 1401089244494,
            "client_payment_id": "df9180aa-a359-420d-8f3c-009a1bb8fac6",
            "amount": 55,
            "total": 55,
            "created_at": "2014-10-27T16:09:26.058Z",
            "processed_at": "2014-10-27T16:09:28.936Z",
            "status": "completed",
            "type": "in",
            "inbound": {
                "id": 62,
                "code": "ipsp_in",
                "name": "ООО ИПСП (агент)"
            },
            "card": {
                "id": 2727,
                "state": "active",
                "title": "541715******9149",
                "type": "MasterCard"
            },
            "wallet": {
                "phone": "+380631345678"
            }
        },
        {
            "id": 1401089244492,
            "client_payment_id": "087a9555-d25b-400c-af5b-ef1c5a99b145",
            "amount": 1000,
            "total": 1015,
            "created_at": "2014-10-27T16:07:34.282Z",
            "processed_at": "2014-10-27T16:07:47.922Z",
            "status": "completed",
            "type": "out",
            "service": {
                "id": 6,
                "name": "Яндекс.Деньги",
                "is_disabled": false
            },
            "parameters": [
                {
                    "code": "phoneNumber",
                    "name": "№ счёта (1-32 цифры):",
                    "value": "55855555"
                }
            ],
            "outbound": {
                "id": 35,
                "code": "tpr_out",
                "name": "ООО ТПР (провайдер)"
            },
            "wallet": {
                "phone": "+380631345678"
            },
            "remote_check": "1414426063287",
            "title": "",
            "subtitle": "",
            "description": ""
        },
        {
            "id": 1401089244493,
            "client_payment_id": "a0449e92-a853-4a80-bc47-11b453c54ab9",
            "amount": 1015,
            "total": 1015,
            "created_at": "2014-10-27T16:07:37.952Z",
            "processed_at": "2014-10-27T16:07:39.822Z",
            "status": "completed",
            "type": "in",
            "inbound": {
                "id": 62,
                "code": "ipsp_in",
                "name": "ООО ИПСП (агент)"
            },
            "card": {
                "id": 2727,
                "state": "active",
                "title": "541715******9149",
                "type": "MasterCard"
            },
            "wallet": {
                "phone": "+380631345678"
            }
        },
        {
            "id": 1401089244491,
            "client_payment_id": "54851a0b-4b60-4497-ab94-7f1b49eb9db0",
            "amount": 1000,
            "total": 1015,
            "created_at": "2014-10-27T16:05:57.109Z",
            "processed_at": "2014-10-27T16:05:57.264Z",
            "status": "declined",
            "decline_reason": "invalid_data",
            "type": "out",
            "service": {
                "id": 17,
                "name": "Триколор ТВ",
                "is_disabled": false
            },
            "parameters": [
                {
                    "code": "578",
                    "name": "Тип платежа",
                    "value": "588255585"
                },
                {
                    "code": "phoneNumber",
                    "name": "№ агент.договора или приёмного оборудования (1-14 цифр)",
                    "value": "588255585"
                }
            ],
            "outbound": {
                "id": 35,
                "code": "tpr_out",
                "name": "ООО ТПР (провайдер)"
            },
            "wallet": {
                "phone": "+380631345678"
            },
            "title": "",
            "subtitle": "",
            "description": ""
        }
    ]
}

Сброс счетчика непросмотренных платежей

Возможно обнулить счетчик непросмотренных платежей

$ curl -u +79261111111:password -H 'Content-type:application/json' https://sandbox.wallet.best/v1/payments/reset_unseen
{
    "meta": {
        "code": 200,
        "urgent_data": {
            "amount": 9862
        }
    },
    "data": "ok"
}

Уведомления об изменении статуса платежа

Для уведомления внешней системы об изменениях статуса платежа mserver выполняет POST запрос на URL указанный в настройках проекта. Для авторизации запрос должен содержать app_id и access_token ( результат sha1( app_id + app_secret ). Уведомление передается в теле POST запроса в виде объекта платежной операции сериализованного в JSON. Например:

{
  "created_at" : "2014-08-02T14:37:20.102Z",
  "payment" : {
    "id" : 1401089240253,
    "client_payment_id" : "a02b1416-b9c1-4782-88c5-da4d78b32f8d",
    "amount" : 1,
    "total" : 1,
    "created_at" : "2014-08-02T14:36:02.997Z",
    "processed_at" : "2014-08-02T14:37:20.102Z",
    "status" : "completed",
    "type" : "in",
    "inbound" : {
      "id" : 62,
      "code" : "ipsp_in",
      "name" : "ООО ИПСП (агент)"
    },
    "card" : {
      "state" : "used",
      "title" : "541715******2399",
      "type" : "MasterCard"
    }
  },
  "from" : "processing",
  "to" : "completed",
  "type" : "complete"
}

Поля

Типы платежных операций

Тип Описание
complete Платеж проведен
decline Платеж отклонен
undo Отмена ранее успешного платежа (сторно)
redo Ранее отмененный платеж сделан успешным (сторно сторно and we need to go deeper)

Webhook для логирования переводов Бэст

$ curl 'https://sandbox.wallet.best/v1/payments/best/p2p' -X POST -H 'Content-type:application/json' -d '{"payment_id": 12345678, "sender": {"id":7777777, "phone": "+79250101212"}, "recipient": {"id":88888888, "phone": "+79110992233"}}'
{
    "meta": {
        "code": 200
    }
}

Коды ошибок

Получение переводов Бэст по кошельку

Платежей может не быть или они еще не сформированы. В таком слечае вернется пустое поле date Каждый платеж имеет флаг unseen со зачением true, аналогично платежам /payments

$ curl -u +79261111111:password -H 'Content-type:application/json' https://sandbox.wallet.best/v1/payments/best
{
    "meta": {
        "code": 200,
        "urgent_data": {
            "amount": 3143.76,
            "unseen_payments_best": 1
        }
    },
    "data": [
        {
            "number": 413258621,
            "amount": 30,
            "currency_alpha": "RUR",
            "note": "test pay",
            "smstosender": 0,
            "creating_date": "2014-12-24T21:00:00.000+0000",
            "fee": 30,
            "amount_charge": 30,
            "currency_charge": "RUR",
            "rate": 1,
            "unseen": true,
            "sender": {
                "data": {
                    "country": {
                        "numeric": "643"
                    },
                    "lastname": "Александр",
                    "firstname": "Янышин",
                    "patronymic": "Сергеевич",
                    "isresident": 1
                },
                "address": {
                    "phone": "9267101280"
                }
            },
            "receiver": {
                "data": {
                    "country": {
                        "numeric": "643"
                    },
                    "lastname": "Александр",
                    "firstname": "Янышин",
                    "patronymic": "Сергеевич",
                    "isresident": 1
                },
                "address": []
            }
        }
    ]
}

Сброс счетчика непросмотренных платежей Бэст

Возможно обнулить счетчик непросмотренных платежей

$ curl -u +79261111111:password -H 'Content-type:application/json' https://sandbox.wallet.best/v1/payments/best/reset_unseen
{
    "meta": {
        "code": 200,
        "urgent_data": {
            "amount": 9862
        }
    },
    "data": "ok"
}

Карты

Карта - это сохраненный в mserver токен, с помощью которого пользователь кошелька может пополнять счет без ввода данных пластиковой карты.

Поля

Состояния карты

Код состояния карты Описание
created Карта только что создана
pending Карта сохраняется (ожидается уведомление от IPSP о успехе/неуспехе карточной транзакции
active Карта сохранена, может быть использована для повторных платежей
failed Карта не сохранена (и уже не будет)
used Карта использована для однократного пополнения

Создание карты

Параметры

$ curl -u+79261111111:p@ssw0rD -H 'Content-type:application/json' -d '{"card_success_url": "http://ya.ru", "card_failure_url": "http://google.com"}' https://sandbox.wallet.best/v1/cards
{
  "meta" : {
    "code" : 200
  },
  "data" : {
    "id" : 62,
    "state" : "pending",
    "payment_page_url" : "https://test1.ipsp.com/frontend/endpoint?product_id=1721&desc=mserver2&payment_type=A&amount=1.00&currency=RUB&biller_client_id=1f95c7b9-74e5-4fd7-983d-c8d03d90347e&perspayee_expiry=0150&recur_freq=1&locale=ru&hash=cace0d7de544a25d2aa685ef12263a10655d9058"
  }
}

далее следует перенаправить пользователя на платежную страницу по ссылке из поля payment_page_url. После ввода пользователем данных карты на платежной странице и получения mserver уведомления от IPSP об успехе или неуспехе карточной транзакции карта перейдет в состояние active или failed.

Коды ошибок

Загрузка карты

$ curl -u+79261111111:p@ssw0rD -H 'Content-type:application/json' https://sandbox.wallet.best/v1/cards/62
{
  "meta" : {
    "code" : 200
  },
  "data" : {
    "id" : 62,
    "state" : "active",
    "title" : "541715******2399",
    "type" : "MasterCard"
  }
}

Как видно, карта успешно сохранена и может быть использована для пополнения счета кошелька.

Получение списка карт

Опциональный параметр state позволяет фильтровать карты по состоянию.

$ curl -u+79261111111:p@ssw0rD -H 'Content-type:application/json' https://sandbox.wallet.best/v1/cards?state=active,pending
{
  "meta" : {
    "code" : 200
  },
  "data" : [ {
    "id" : 62,
    "state" : "active",
    "title" : "541715******2399",
    "type" : "MasterCard"
  } ]
}

Удаление карты

$ сurl -u+79261111111:p@ssw0rD -H 'Content-type:application/json'
 -X DELETE https://sandbox.wallet.best/v1/cards/62
{
  "meta" : {
    "code" : 200
  }
}

Данные тестовых карт

Номер карты Срок действия CVV2/CVC2 3D-Secure
5417150893587260 01/17 082
4652060573334999 01/17 067

Карты, без поддержки 3D-Secure не работают:

Номер карты Срок действия CVV2/CVC2 3D-Secure
4652060724922338 01/17 989
5417150396276825 01/17 789

Пароль 3D-Secure: 123456.

Получение списка геоточек

Список геоточек с возможностью фильтрации. Параметры запроса:

Внимание! Всегда передавайте коориднаты в последовательности longitude,latitude, а не наоборот

Поля:

Ошибки:

$ curl -u +12345675578:password https://sandbox.wallet.best/v1/locations
{
    "meta": {
        "code": 200
    },
    "data": [
        {
            "id": "54635060279871e2098b4567",
            "name": "Точка пополнения 'Денег нет'",
            "type": "Банкомат: Инвестбанк ОАО АКБ",
            "group": "replenishment",
            "worktime": "пн-пт: 09:00-20:00, сб: 10:00-16:00",
            "address": "Москва ул. Ворошилова 169-171",
            "latitude": 55.616371,
            "longitude": 37.211893
        },
        {
            "id": "54635060279871e2098b4568",
            "name": "За Казмадан!",
            "type": "Касса: СЛАВИНВЕСТБАНК ООО",
            "group": "verification",
            "worktime": "круглосуточно",
            "address": "Москва ул. маршала Жукова 1",
            "latitude": 55.676006,
            "longitude": 37.252398
        }
    ]
}

Лимиты

Лимиты платежей

$ сurl -u+79261111111:p@ssw0rD -H 'Content-type:application/json' https://sandbox.wallet.best/v1/limits
{
    "meta": {
        "code": 200,
        "urgent_data": {
            "amount": 581,
            "unseen_payments": 1
        }
    },
    "data": [
        {
            "title": "Максимальный остаток на счет",
            "description": "Сумма сверх указанного лимита будет временно недоступна для любых операций",
            "limits": [
                {
                    "type": "bool",
                    "value": true,
                    "status": "anonymous"
                },
                {
                    "type": "string",
                    "value": "60000",
                    "status": "verified"
                },
                {
                    "type": "bool",
                    "value": false,
                    "status": "personified"
                }
            ]
        }
    ]
}

Инвойсы

Статусы инвойса

Код Описание
created Инвойс создан
canceled Инвойс отменен пользователем, который его создал
processing Инвойс был запущен в обработку методом /pay
completed Платеж по инвойсу успешно прошел
declined Платеж по инвойсу отклонен мсервером

Создание инвойса

Поля

$ curl -u +12345675578:password -H 'Content-type:application/json' -d '{"payer": "+12345678102", "amount": 350, "message": "Test invoice"}' https://sandbox.wallet.best/v1/invoices
{
    "meta": {
        "code": 200
    },
}

Коды ошибок

Список инвойсов выставленных пользователю

$ curl -u +12345675578:password https://sandbox.wallet.best/v1/invoices
{
    "meta": {
        "code": 200
    },
    "data": [
        {
            "_id": "5422daccb7f47b52010041a7",
            "payer": "+12345675578",
            "amount": 200,
            "recipient": "+12345678102",
            "message": null,
            "status": "processing",
            "payment_id": null
        },
        {
            "_id": "5422dc24b7f47b52010041a8",
            "payer": "+12345675578",
            "amount": 300,
            "recipient": "+12345678102",
            "message": "Test invoice",
            "status": "completed",
            "payment_id": 1401089242211
        },
        {
            "_id": "5422dd02b7f47b52010041a9",
            "payer": "+12345675578",
            "amount": 300,
            "recipient": "+12345678102",
            "message": "Test invoice",
            "status": null,
            "payment_id": null
        }
    ]
}

Список инвойсов, которые выставил пользователь

$ curl -u +12345675578:password https://sandbox.wallet.best/v1/invoices/created
{
    "meta": {
        "code": 200
    },
    "data": [
        {
            "_id": "5422cebeb7f47b53010041a7",
            "payer": "+12345671157",
            "amount": 100,
            "recipient": "+12345675578",
            "message": null,
            "status": null,
            "payment_id": null
        },
        {
            "_id": "5422cf7cb7f47b54010041a7",
            "payer": "+12345671157",
            "amount": 1050,
            "recipient": "+12345675578",
            "message": null,
            "status": "canceled",
            "payment_id": null
        }
    ]
}

Повторить (продублировать) инвойс

$ curl -u +12345675578:password https://sandbox.wallet.best/v1/invoices/5422cf7cb7f47b54010041a7/duplicate
{
    "meta": {
        "code": 200
    },
    "data": {
        "_id": "542423c7b7f47b58010041a8",
        "payer": "+12345671157",
        "amount": 1050,
        "recipient": "+12345675578",
        "message": null,
        "status": "canceled",
        "payment_id": null
    }
}

Коды ошибок

Отменить инвойс

$ curl -u +12345675578:password https://sandbox.wallet.best/v1/invoices/5422cebeb7f47b53010041a7/cancel
{
    "meta": {
        "code": 200
    }
}

Коды ошибок

Оплатить инвойс

$ curl -u +12345675578:password -X POST https://sandbox.wallet.best/v1/invoices/5422dd02b7f47b52010041a9/pay
{
    "meta": {
        "code": 200
    },
    "data": {
        "meta": {
            "code": 200,
            "next_action": "pay",
            "time": 0.927491
        },
        "data": {
            "id": 1401089242256,
            "client_payment_id": "a0341db9-280f-4daa-ad09-7f10e1dce5a5",
            "amount": 300,
            "total": 300,
            "created_at": "2014-09-25T14:26:47.406Z",
            "status": "created",
            "type": "p2p",
            "wallet": {
                "phone": "+12345675578"
            },
            "destination": {
                "phone": "+12345678102"
            },
            "direction": "out",
            "message": "Test invoice"
        }
    }
}

Коды ошибок

Шаблоны платежей

Шаблоны платежей предназначены для платежей типа ‘out’ для сервисов. Потому для создания платежа обязательно поле service_id

Поля шаблона

Создание шаблонов

$ curl -H "Authorization: Bearer b48a991e-e010-4329-9817-f8389a774c45" -H 'Content-type:application/json'
-d '{"name": "Template", "amount": 350, "type": "public", "service_id": 1000,
"parameters": {"phoneNumber": "+380509990088"}, "disabled": ["phoneNumber"]}'
https://sandbox.wallet.best/v1/payments/templates
{
    "meta": {
        "code": 200,
        "urgent_data": {
            "amount": 2370,
            "unseen_payments": 1
        }
    },
    "data": {
        "id": "54d23587a60ad674680041be"
    }
}

Получения списка шаблонов

Список шаблонов с постраничной навигацией и возможностью фильтрации. Параметры запроса:

Важно!

Если type не передан или type = private, то вернутся шаблоны только для авторизированного кошелька, а переданный телефон в параметре phone будет проигнорирован

Если же нужно получить список по другим кошелькам - используйте тип public

$ curl -H "Authorization: Bearer b48a991e-e010-4329-9817-f8389a774c45" https://sandbox.wallet.best/v1/payments/templates
{
    "meta": {
        "code": 200,
        "urgent_data": {
            "amount": 2370,
            "unseen_payments": 1
        }
    },
    "data": [
        {
            "id": "54d23418a60ad674680041bd",
            "name": "aloha",
            "type": "public",
            "amount": {
                "value": 1000,
                "disabled": false
            },
            "service": {
                "id": 1690,
                "name": "ТСЖ Монолит-престиж",
                "icon_url": null,
                "limit": "",
                "minsum": 1,
                "maxsum": 15000,
                "verification_required": false,
                "params": [
                    {
                        "id": "address",
                        "is_disabled": false,
                        "is_hidden": false,
                        "is_required": true,
                        "min_length": 3,
                        "max_length": 255,
                        "range_start": 0,
                        "range_end": 0,
                        "patterns": [
                            {
                                "pattern": "",
                                "description": ""
                            }
                        ],
                        "pattern": "",
                        "pattern_desc": "Введите ваш домашний адрес",
                        "type": "string",
                        "title": "Адрес",
                        "default_value": null,
                        "suggested_values": [],
                        "items": null,
                        "value": "Мухосранск, ул. Выбитых окон, дом 1"
                    },
                    ...
                ],
                "category": {
                    "id": "549c92fb56c35f660ecd341f",
                    "name": "Коммунальные услуги",
                    "group": "",
                    "icon_url_32x32": ""
                    "amount": 3
                }
            }
        },
        ...
    ]
}

Получения шаблона по id

$ curl -H "Authorization: Bearer b48a991e-e010-4329-9817-f8389a774c45"
https://sandbox.wallet.best/v1/payments/templates/5422dd02b7f47b52010041a9
{
    "meta": {
        "code": 200,
        "urgent_data": {
            "amount": 2370,
            "unseen_payments": 1
        }
    },
    "data": {
        "id": "54d23587a60ad674680041be",
        "name": "",
        "type": "",
        "amount": {
            "value": 0,
            "disabled": false
        },
        "service": {
            "id": 0,
            "name": "ЖКУ Москва",
            "icon_url": null,
            "limit": "",
            "minsum": 1,
            "maxsum": 15000,
            "verification_required": false,
            "params": [
                {
                    "id": "126",
                    "is_disabled": false,
                    "is_hidden": false,
                    "is_required": false,
                    "min_length": 3,
                    "max_length": 250,
                    "range_start": 0,
                    "range_end": 0,
                    "patterns": [
                        {
                            "pattern": "",
                            "description": ""
                        }
                    ],
                    "pattern": "",
                    "pattern_desc": "от  3 до 250 символов",
                    "type": "string",
                    "title": "Адрес проживания",
                    "default_value": null,
                    "suggested_values": [],
                    "items": null,
                    "value": ""
                },
                ...
            ]
        }
    }
}

Изменение шаблона

$ curl -H "Authorization: Bearer b48a991e-e010-4329-9817-f8389a774c45" -H 'Content-type:application/json'
-d '{"name": "Template", "amount": 350, "type": "public", "service_id": 1000,
"params": {"phoneNumber": "+380509990088"}, "disabled": ["phoneNumber"]}'
https://sandbox.wallet.best/v1/payments/templates/5422dd02b7f47b52010041a9
{
    "meta": {
        "code": 200
    }
}

Удаление шаблона

Удалить можно только свои шаблоны shell $ curl -H "Authorization: Bearer b48a991e-e010-4329-9817-f8389a774c45" -X DELETE https://sandbox.wallet.best/v1/payments/templates/5422dd02b7f47b52010041a9

{
    "meta": {
        "code": 200
    }
}

CRON таски для прода

Описание
0 3 * * * /www/mbank.api/vendor/bin/pake -f /www/mbank.api/pakefile.php wallet_intersecting_contacts
45 12 * * * /www/mbank.api/vendor/bin/pake -f /www/mbank.api/pakefile.php apns_feedback
* * * * * /www/mbank.api/vendor/bin/drunken do –config=“/www/mbank.api/drunken.config.php”
30 10-21 * * * /www/mbank.api/vendor/bin/pake -f /www/mbank.api/pakefile.php sync_mserver_services
10 * * * * /www/mbank.api/vendor/bin/pake -f /www/mbank.api/pakefile.php aggregate_services_statistics
2 * * * * /bin/bash /www/mbank.api/bin/image-optim.sh
0 12 * * * /www/mbank.api/vendor/bin/pake -f /www/mbank.api/pakefile.php send_daily_transaction_log
0 13 1 * * /www/mbank.api/vendor/bin/pake -f /www/mbank.api/pakefile.php send_monthly_transaction_log