Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Гем для работы с платежной системой 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
Создаем клиент для работы с 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 'Перейти к пополнению'
Важно:
После совершения удачного платежа, система 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
Unknown package
We found that webpay_by demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.