Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

webpay_by

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

webpay_by

  • 0.0.1
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Гем для работы с webpay.by

Гем для работы с платежной системой WebPay для использования в проектах, использующих Ruby (Ruby On Rails, Sinatra и др.).

WebPay («Вебпей») – белорусская система электронных платежей компании ООО «ВЭБ ПЭЙ», который позволяет осуществлять безопасные платежи при помощи банковских карт VISA и MasterCard в режиме реального времени в любой валюте (BYN, USD, RUB, EUR и т.д.).

WebPay™ Sandbox — это самостоятельное Web-приложение, являющееся прототипом реальной системы и предназначенное для
тестирования и ознакомления с возможностями реальной системы WebPay™.

Официальный сайт: https://webpay.by

Документация: https://webpay.by/wp-content/uploads/2016/08/WebPay-Developer-Guide-2.1.2_RU.pdf

Установка

Добавьте эту строку в ваш Gemfile:

gem 'webpay_by'

Затем установите gem, используя bundler:

$ bundle

Или выполните команду:

$ gem install webpay_by

Использование (примеры с использованием Ruby On Rails)

Настройка

Создаем клиент для работы с Webpay

require 'webpay_by/client'

webpay_client = WebpayBy::Client.new(
  secret_key: 'your_secret_key',
  billing_id: '000000001',
  debug_mode: !Rails.env.production?,
  login:      'your_login',
  password:   'your_password'
)

Rails.application.config.webpay_by = webpay_client

Формируем заказ и создаем форму

request = Rails.application.config.webpay_by.request(
  order_id:   'item-1',
  seed:       '12.12.2019',
  back_url:   product_url,
  notify_url: payments_epay_url,
  items:      [{price: 100, name: 'Пополнение счёта', quantity: 1}]
)

@form = request.form

= form_tag @form.action_url, method: @form.request_method, id: 'epay-form', enctype: @form.enctype do
  - @form.fields.each do |key, value|
    = hidden_field_tag key, value
  = submit_tag 'Перейти к пополнению'

Важно:

  • В режиме разработки, после подтверждения формы оплаты, система может не принять запрос, ссылаясь на неправильный формат wsb_notify_url или wsb_return_url. Это связано с тем, что система валидирует эти поля на реальные домены. Локальный сервер localhost:3000 или адреса с доменными зонами .dev, .localhost и т.д работат не будут. Поэтому перед созданием формы передайте в заказ параметры notify_url и back_url c валидными адресами.
  • Если у вас в биллинг-аккаунте подключена возможность приема оплаты и через систему ЕРИП, то при тестировании платежей максимальная длина имени счета (wsb_order_num) равна 10 символам. В реальной среде размер этого поля может измениться в зависимости от ограничений, которые будут установлены системой ЕРИП.

После совершения удачного платежа, система WebPay отсылает специально сформированный POST-запрос по адресу, указанному в поле wsb_notify_url Интернет-ресурса. В этом запросе содержится информация по платежу. Полученную информацию Интернет-ресурс должен проверить в соответствии с требованиями выполнения заказа и ответить на запрос кодом: "HTTP/1.0 200 OK".

answer_hash             = params.except(:controller, :action).to_unsafe_h.symbolize_keys
response                = webpay_client.response answer_hash

if response.approved?
  user.add_balance response.amount
end

render nothing: true, status: 200

Прежде чем доставить товар (оказать услугу), Интернет-ресурс обязан проверить совершенный покупателем платеж. Что такое "подтверждение": когда человек ввел данные карты, нужная сумма только блокируется на ней. Чтобы она реально списалась, мы должны сообщить системе Webpay, что услуга оказана и сумму можно списать. Это и есть подтверждение. Его нужно делать автоматически, поэтому через cron или аналог надо запускать робота, который будет выбирать оплаченные заявки и их подтверджать.

webpay_client         = Rails.application.config.webpay_by
confirmation          = webpay_client.confirmation(transaction_id: transaction_id)
confirmation_response = confirmation.send

# Проверяем ответ от системы на подлинность электронной подписи и подтверждения об оплате
if confirmation_response.approved?
 order.update(confirmed: true)
end

FAQs

Package last updated on 18 Jan 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc