Описание MerchantAPI | RDoc | Список методов
МОНЕТА.РУ (MONETA.MerchantAPI.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 - работа происходит напрямую с интерфейсом монеты.
require'moneta/api'# получить данные счетаservice=Moneta::Api::Service.new('username','password',{demo_mode: true})response=service.find_account_by_id(10999)putsresponse.class.name# => 'Moneta::Api::Responses::FindAccountByIdResponse'puts"Баланс: #{response.account.balance}#{response.account.currency}"# => 'Баланс: 100 RUB'transfer_request=Moneta::Api::Requests::TransferRequest.new.tapdo |request|
request.payee=28988504request.payer=10999request.amount=10request.is_payer_amount=falserequest.payment_password='123456'endresponse=service.transfer(transfer_request)# проверить данные счетаresponse=service.find_account_by_id(10999)puts"Баланс после пополнения: #{response.account.balance}#{response.account.currency}"# => 'Баланс после пополнения: 110 RUB'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.newwithdrawal_info.add_attribute(withdraw_to)withdrawal_request.operation_info=withdrawal_infoservice.payment(withdrawal_request)Полный список методов, с помощью которых вы можете обратиться к MONETA.MerchantAPI.v2
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 | Настройка фильтрации содержимого лога. Пароль пользователя фильтруется всегда. |
Для использования тестового сервера (http://demo.moneta.ru) следует инициализировать сервис со специальным флагом
Moneta::Api::Service.new('username','password',{demo_mode: true})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 | Настройка фильтрации содержимого лога. |
Для использования тестового сервера (http://demo.moneta.ru) следует инициализировать сервис со специальным флагом
Moneta::Front::Service.new(certificate,private_key,{demo_mode: true})- Стандартная схема с pull-request workflow
- Для локального запуска тестов необходимо создать конфигурационный файл со своими demo доступами
cp spec/support/moneta.example.yml spec/support/moneta.yml