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