Skip to content

BrandyMint/walletone

Repository files navigation

walletone checkout client for ruby

Build Status Code Climate Test Coverage


Привет!

Мы сделали этот модуль очень удобным для Вас. http://www.walletone.com/ru/merchant/?promo=EtRa48zZP

Так вы получите сниженный процент за прием платежей по картам visa/mastercard - 3,5%

Прием уведомлений об оплате (rack middleware)

1. Создаем rack middleware для приема уведомлений

Сначала определимся как мы будем получать уведомление об оплате.

Вариант N1. Через callback и Rack

wm = Walletone::Middleware::Callback.new do |notify, env|
  # notify is a Walletone::Notification instance

  raise 'WARNING! Wrong signature!' unless notify.valid? W1_SECRET_KEY

  if notify.accepted?
    # Successful payed. Deliver your goods to the client
  else
    # Payment is failed. Notify you client.
  end

  'Return some message for OK response'
end

Для Rack в config.ru добавляем:

run wm

Вариант N2. Создаем свой класс middleware

class WalletoneMiddleware < Walletone::Middleware::Base
  def perform notify, env
    raise 'Wrong sign' unless notify.valid? W1_SECRET_KEY

    # TODO something with notify
    'Return some message for OK response'
  end
end

Для RubyOnRails в /config/routes.rb добавляем:

Rails.application.routes.draw do
  mount WalletoneMiddleware.new => '/w1_callback'
  ..
end

2. Прописываем в настройках мерчанта на walletone.com получившийся url

Готово. Принимаем уведомления.

Генерация формы оплаты

Сначала заполняем необходимые для формы поля

Поля хранятся в объекте типа Walletone::Payment, который представляет из себя Hash с возможностью прямого доступа к основным полям с префиксом WMI_.

Для полей требующих множественное значение (типа WMI_PTENABLED) в качестве значений можно передавать массив строк.

В контроллере имеем:

WALLETONE_SECRET_KEY='Ваш секретный ключ от Walletone'

def create
  payment = Walletone::Payment.new(
    WMI_MERCHANT_ID:    'Номер вашего merchant ID',
    WMI_PAYMENT_AMOUNT:  10000, # Сумма
    WMI_CURRENCY_ID:     643, # ISO номер валюты (По умолчанию 643 - Рубль),
    WMI_PTENABLED:      ['WebMoneyRUB', 'WebMoneyUSD'], # Указывать не обязательно
    SOME_CUSTOM_FIELD:  'value'
    # etc любые другие поля
  )
  payment.sign! WALLETONE_SECRET_KEY
  
  render locals: { form: payment.form }
end

Собственно генераця формы во вьюхе

%h5 В течение 5-и секунд вы будете переправлены на страницу оплаты.
= form_tag form.checkout_url, form.options.merge(data: {autosubmit: true}) do |f|
  = raw form.hidden_fields_tags
  = button_tag 'Перейти к оплате', 
    :class=>'btn btn-primary',
    :data =>{:disable_with => 'Переправляю на сайт оплаты..'}


-  # Автоматически сабмитим форму, чтобы не тревожить лишний раз
-  # пользователя
javascript:
  document.addEventListener("DOMContentLoaded", function() {
     document.querySelector("[data-autosubmit]").submit();
  });

Подсказки

Не используйте в форме кнопку submit с установленным value и name, потому что в таком случае ее значение на сервер придет в параметрах и его тоже придется включать в подписываемые поля.

Прочие ссылки

  1. Walletone Open API
  2. Документация (API)
  3. Доставка redexpress
  4. Рекуренты

InvoicingAPI

Sponsored by http://taaasty.com and http://kiiiosk.ru Developers are http://brandymint.com


Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages