Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

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

About

Принимаем оплату через http://walletone.com на Ruby

Topics

Resources

License

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages

You can’t perform that action at this time.