Описание MerchantAPI | RDoc | Список методов
moneta-api
МОНЕТА.РУ (MONETA.MerchantAPI.v2).
Различия между v1 и v2
В целом, версии совместимы друг с другом. Главные отличия:
- v1 работает с Moneta.ru при помощи SOAP, v2 при помощи JSON.
- В v1 числа являются строками, в v2 числами (например, значения
id
). - Изменились настройки фильтрации, добавилась настройка
log_body
, убралисьlog
,pretty_print_xml
- В аттрибутах ключ-значение (например, результат
FindBankAccounts
), значение всегда строка. Поэтому например значение поляis_international
будет строка"false"
, а не Booleanfalse
. Это связано с особенностями работы с Moneta.ru при помощи JSON.
Установка
Добавьте эти строки в Gemfile вашего приложения:
gem 'moneta-api'
И выполните:
$ bundle
Или установите напрямую:
$ gem install moneta-api
Использование
Есть несколько вариантов работы с сервисами монеты:
- API - работа происходит с использованием методов описанных в MONETA.MerchantAPI.v2
- FRONT - работа происходит напрямую с интерфейсом монеты.
Примеры работы c API
Получить данные счета
require 'moneta/api'
# получить данные счета
service = Moneta::Api::Service.new('username', 'password', { demo_mode: true })
response = service.find_account_by_id(10999)
puts response.class.name
# => 'Moneta::Api::Responses::FindAccountByIdResponse'
puts "Баланс: #{ response.account.balance} #{ response.account.currency }"
# => 'Баланс: 100 RUB'
Перевод на другой счет в Монета.ру
transfer_request = Moneta::Api::Requests::TransferRequest.new.tap do |request|
request.payee = 28988504
request.payer = 10999
request.amount = 10
request.is_payer_amount = false
request.payment_password = '123456'
end
response = service.transfer(transfer_request)
# проверить данные счета
response = service.find_account_by_id(10999)
puts "Баланс после пополнения: #{ response.account.balance} #{ response.account.currency }"
# => 'Баланс после пополнения: 110 RUB'
Вывод денег со счета в QIWI
withdrawal_request = Moneta::Api::Requests::PaymentRequest.build(
payer: 28988504,
payee: Moneta::Constants::Withdrawal::QIWI,
amount: 10,
client_transaction: SecureRandom.uuid,
payment_password: '123456',
is_payer_amount: true
)
withdraw_to = Moneta::Api::Types::KeyValueAttribute.build(key: 'EXTERNALACCOUNTID', value: qiwi_account)
withdrawal_info = Moneta::Api::Types::OperationInfo.new
withdrawal_info.add_attribute(withdraw_to)
withdrawal_request.operation_info = withdrawal_info
service.payment(withdrawal_request)
Полный список методов, с помощью которых вы можете обратиться к MONETA.MerchantAPI.v2
Настройки
Logger
Moneta::Api::Service.new('username', 'password', {
logger: Rails.logger,
log_body: true,
filter: [
[/("availableBalance":)([\d\.]{0,})/,'\1[FILTERED]'], # фильтр доступного баланса кошелька
[/("balance":)([\d\.]{0,})/,'\1[FILTERED]'], # фильтр баланса кошелька
[/("protectionCode":)("\d+")/,'\1[FILTERED]'] # фильтр кода протекции
# ...
]
})
Доступны следующие настройки:
Название | Описание |
---|---|
:demo_mode |
Выполнение операций на демо стенде. |
:logger |
По умолчанию логирование не используется. Можно указать конкретный логгер, например Rails.logger . |
:log_body |
Логировать ли тело запроса, по умолчанию выключено. |
:open_timeout |
Таймаут подключения. |
:filter |
Настройка фильтрации содержимого лога. Пароль пользователя фильтруется всегда. |
Demo режим
Для использования тестового сервера (http://demo.moneta.ru) следует инициализировать сервис со специальным флагом
Moneta::Api::Service.new('username', 'password', { demo_mode: true })
Примеры работы с FRONT (интерфейс монеты)
Получить квинтанцию оплаты в формате PDF
require 'moneta/api'
certificate = OpenSSL::X509::Certificate.new(File.read('cert_path'))
private_key = OpenSSL::PKey::RSA.new(File.read('key_path'), 'password')
service = Moneta::Front::Service.new(certificate, private_key, { demo_mode: true })
service.get_receipt_pdf(468398)
# => 'PDF файл'
Полный список методов, с помощью которых вы можете обратиться к интефейсу moneta.ru
Настройки
Для работы с интерфейсом монеты понадобиться получение сертификатов, получение подробно описано в MONETA.MerchantAPI.v2
Параметры:
Название | Описание |
---|---|
certificate |
Сертификат пользователя, полученный от монеты. |
private_key |
Приватный ключ, сгенерированный пользователем. |
:demo_mode |
Выполнение операций на демо стенде. |
:open_timeout |
Таймаут подключения. |
:filter |
Настройка фильтрации содержимого лога. |
Demo режим
Для использования тестового сервера (http://demo.moneta.ru) следует инициализировать сервис со специальным флагом
Moneta::Front::Service.new(certificate, private_key, { demo_mode: true })
Contributing
- Стандартная схема с pull-request workflow
- Для локального запуска тестов необходимо создать конфигурационный файл со своими demo доступами
bash cp spec/support/moneta.example.yml spec/support/moneta.yml