walletone checkout client for ruby
Привет!
Мы сделали этот модуль очень удобным для Вас. 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
, потому что в
таком случае ее значение на сервер придет в параметрах и его тоже придется
включать в подписываемые поля.
Прочие ссылки
Sponsored by http://taaasty.com and http://kiiiosk.ru Developers are http://brandymint.com
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request