README.md in moneta-api-1.13.0 vs README.md in moneta-api-2.0.0.rc1

- old
+ new

@@ -9,10 +9,21 @@ # moneta-api МОНЕТА.РУ (MONETA.MerchantAPI.v2). +## Различия между v1 и v2 + +В целом, версии совместимы друг с другом. Главные отличия: + +- v1 работает с Moneta.ru при помощи SOAP, v2 при помощи JSON (прирост скорости 3-5 раз). +- В v1 числа являются строками, в v2 числами (например, значения `id`). +- Изменились настройки фильтрации, добавилась настройка `log_body`, убрались `log`, `pretty_print_xml` +- В аттрибутах ключ-значение (например, результат `FindBankAccounts`), значение всегда строка. + Поэтому например значение поля `is_international` будет строка `"false"`, а не Boolean `false`. + Это связано с особенностями работы с Moneta.ru при помощи JSON. + ## Установка Добавьте эти строки в Gemfile вашего приложения: ```ruby @@ -27,68 +38,96 @@ $ gem install moneta-api ## Использование -#### Базовый пример +### Примеры +#### Получить данные счета + ```ruby 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' - - # перевод + puts "Баланс: #{ response.account.balance} #{ response.account.currency }" + # => 'Баланс: 100 RUB' +``` + +#### Перевод на другой счет в Монета.ру + +```ruby 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) - - # данные транзакции - puts response.class.name - # => 'Moneta::Api::Responses::TransferResponse' - puts response.status - # => 'SUCCEED' - + # проверить данные счета response = service.find_account_by_id(10999) puts "Баланс после пополнения: #{ response.account.balance} #{ response.account.currency }" # => 'Баланс после пополнения: 110 RUB' ``` +#### Вывод денег со счета в QIWI + +```ruby + 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) +``` + **Полный [список методов](http://www.rubydoc.info/gems/moneta-api/Moneta/Api/ServiceMethods), с помощью которых вы можете обратиться к MONETA.MerchantAPI.v2** ### Настройки #### Logger ```ruby Moneta::Api::Service.new('username', 'password', { logger: Rails.logger, - log_level: :info, - log: true, - filters: [:password] + log_body: true, + filter: [ + [/("availableBalance":)([\d\.]{0,})/,'\1[FILTERED]'], # фильтр доступного баланса кошелька + [/("balance":)([\d\.]{0,})/,'\1[FILTERED]'], # фильтр баланса кошелька + [/("protectionCode":)("\d+")/,'\1[FILTERED]'] # фильтр кода протекции + # ... + ] }) ``` Доступны следующие настройки: Название | Описание ---------------------------|:----------------------------------------------------------- -`:logger` | **moneta-api** по умолчанию пишет логи в `$STDOUT` с помощью ruby Logger'а. Можно переопределить на любой другой Logger. (прим: `Rails.logger`) -`:log_level` | Используется для фильтрации вывода в log по приоритету. Допускаются следующие значения - `:info`, `:debug`, `:warn`, `:error`, `:fatal`. -`:log` | Определяет, нужно ли писать в log. (`true` или `false`) -`:filters` | Конфиденциальная информация, которую не следует писать в log. -`:pretty_print_xml` | Определяет, нужно ли выводить в log XML запроса\ответа. (`true` или `false`) +`:demo_mode` | Выполнение операций на демо стенде. +`:logger` | По умолчанию логирование не используется. Можно указать конкретный логгер, например `Rails.logger`. +`:log_body` | Логировать ли тело запроса, по умолчанию выключено. +`:open_timeout` | Таймаут подключения. +`:filter` | Настройка фильтрации содержимого лога. Пароль пользователя фильтруется всегда. #### Demo режим Для использования тестового сервера (http://demo.moneta.ru) следует инициализировать сервис со специальным флагом ```ruby