Project

walletone

0.01
No commit activity in last 3 years
No release in over 3 years
Клиент для приема оплаты через walletone.com
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

>= 2.0.0
>= 2.12
>= 4.5.0
>= 1.3.2
~> 0
>= 10.4.0
>= 3.2.0
>= 1.22
~> 0

Runtime

>= 0
~> 1.5
~> 1.0
 Project Readme

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