unitpay 0.0.4 → 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: acfaaf225e410fc5732ed5d3385fd98adcf506ed
4
- data.tar.gz: 16755b706b4e6e6401d83d48dca515c5ee6901b8
3
+ metadata.gz: 30615f1d644e3b6abafaccadef5ae3e1ccd9c23e
4
+ data.tar.gz: e2b1c7945292348d190860ade3265e4419765281
5
5
  SHA512:
6
- metadata.gz: cd50c6d01f2670b9a5883eb8dff649c5f2e404a7b7a980d5a62a65f4f4720217ec30504b2581966c916a0112eba75ecdcb518b66fcd933f096849acf68622415
7
- data.tar.gz: 59973bf3b76a38f870726714a766a546eb00cd7a38cd715ac18faf7615799f7bfca2c6f5816709599efccb69eb6377558752327365ce3040ca4f2722f4c429c0
6
+ metadata.gz: 05fef55f7da174ec1cc2b728724598867a90de330503079ae226a6fd7571eb657115129107718d1e49d74711409166fe7519c68491c07ff56657adbc0b2af659
7
+ data.tar.gz: da7a4f62f1a6d3b4253bc232d053413d62c145a0f3b069fa2ee14dde711c576acc638d6dfbe337d4f2b2c115e6d144f9a5d04fa1437f0e10aac590e7fa9d984a
@@ -1,3 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 2.1.0
4
+ - 2.2
5
+ script:
6
+ - CODECLIMATE_REPO_TOKEN=ae069f427c5dbd2edc0474f3aace9b12e4d29cae801a1a9a93b22b74b20c7b45 bundle exec rspec
data/README.md CHANGED
@@ -1,38 +1,212 @@
1
+ [![Gem Version](https://badge.fury.io/rb/unitpay.svg)](https://badge.fury.io/rb/unitpay)
2
+ [![Build Status](https://travis-ci.org/ssnikolay/unitpay.svg?branch=master)](https://travis-ci.org/ssnikolay/unitpay)
3
+ [![Code Climate](https://codeclimate.com/github/ssnikolay/unitpay.svg)](https://codeclimate.com/github/ssnikolay/unitpay)
4
+ [![Test Coverage](https://codeclimate.com/github/ssnikolay/unitpay/badges/coverage.svg)](https://codeclimate.com/github/ssnikolay/unitpay/coverage)
5
+
1
6
  # Unitpay
2
7
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/unitpay`. To experiment with that code, run `bin/console` for an interactive prompt.
8
+ Gem для подключения к платежному шлюзу [unitpay](http://unitpay.ru).
9
+
10
+ [Документация к шлюзу](http://help.unitpay.ru/)
4
11
 
5
- TODO: Delete this and the text above, and describe your gem
12
+ - [Установка](#installation)
13
+ - [Подключение](#setup)
14
+ - [Использование](#usage)
15
+ - [Получение ссылки для оплаты](#payment_url)
16
+ - [Модуль для обработки запросов от unitpay (для RubyOnRails)](#rails)
17
+ - [Подключение виджета для карт оплаты](#widget)
6
18
 
7
- ## Installation
19
+ ##<a name="installation"></a> Установка
8
20
 
9
- Add this line to your application's Gemfile:
21
+ Добавьте эти строки в Gemfile вашего приложения:
10
22
 
11
23
  ```ruby
12
24
  gem 'unitpay'
13
25
  ```
14
26
 
15
- And then execute:
27
+ И выполните:
16
28
 
17
29
  $ bundle
18
30
 
19
- Or install it yourself as:
31
+ Или установите напрямую:
20
32
 
21
33
  $ gem install unitpay
22
34
 
23
- ## Usage
35
+ ##<a name="setup"></a> Подключение
36
+ Чтобы получить доступ к сервисному классу, достаточно проинициализировать его с `public` и `secret` ключами.
37
+
38
+ ```ruby
39
+ Unitpay::Service.new('unitpay_public_key', 'unitpay_secret_key')
40
+ ```
41
+
42
+ По умолчанию курс валюты выставлен в `RUB`, а использование сигнатуры в `true`.
43
+ Переопределить их можно и при инициализации.
44
+ ```ruby
45
+ use_sign, currency = false, 'RUB'
46
+ Unitpay::Service.new('unitpay_public_key', 'unitpay_secret_key', use_sign, currency)
47
+ ```
48
+ Чтобы включить проверку сигнатуры со стороны `unitpay`, необходимо нажать на "замочек" в настройках вашего партнера.
49
+
50
+ ![Settings](https://raw.github.com/ssnikolay/unitpay/master/unitpay.jpg)
51
+
52
+ 1. Включение проверки сигнатуры.
53
+ 2. `Secret key` для инициализации `Unitpay::Service`.
54
+ 3. Необходимо изменить `example.com` на адрес вашего приложения.
55
+ 4. Необходимо изменить `example.com` на адрес вашего приложения.
56
+
57
+
58
+ ##<a name="usage"></a> Использование
59
+
60
+ ###<a name="payment_url"></a> Получение ссылки для оплаты
61
+
62
+ Чтобы получить ссылку для оплаты, необходимо использовать метод `payment_url`, в который нужно передать следующие параметры:
63
+
64
+ Название | Описание
65
+ --------------------|:-----------------------------------------
66
+ `sum` | Цена, которую необходимо оплатить пользователю
67
+ `account` | Внутренний идентификатор платежа (или заказа), однозначно определяющий его в магазине.
68
+ `desc` | Описание платежа, отображающееся пользователю на стороне шлюза.
69
+
70
+ ```ruby
71
+ sum, account, desc = 100, 1, 'description'
72
+ service = Unitpay::Service.new('unitpay_public_key', 'unitpay_secret_key')
73
+ service.payment_url(sum, account, desc)
74
+ # => 'https://unitpay.ru/pay/public_key?sum=100&account=1&desc=description...'
75
+ ```
76
+
77
+ ###<a name="rails"></a> Модуль для обработки запросов от unitpay (для RubyOnRails)
78
+
79
+ Добавьте роуты для **unitpay** (`config/routes.rb`)
24
80
 
25
- TODO: Write usage instructions here
81
+ ```ruby
82
+ scope :unitpay do
83
+ get :success, to: 'unitpay#success'
84
+ get :fail, to: 'unitpay#fail'
85
+ get :notify, to: 'unitpay#notify'
86
+ end
87
+ ```
88
+
89
+ Создайте `app/controllers/unitpay_controller.rb` со следующим кодом:
90
+
91
+ ```ruby
92
+ class UnitpayController < ApplicationController
93
+ include Unitpay::Controller
94
+
95
+ def success
96
+ # вызывается при отправке шлюзом пользователя на Success URL.
97
+ #
98
+ # ВНИМАНИЕ: является незащищенным действием!
99
+ # Для выполнения действий после успешной оплаты используйте pay
100
+ end
101
+
102
+ def fail
103
+ # вызывается при отправке шлюзом пользователя на Fail URL.
104
+ # (во время принятия платежа возникла ошибка)
105
+ end
106
+
107
+ def pay
108
+ # вызывается при оповещении магазина об
109
+ # успешной оплате пользователем заказа и после проверки сигнатуры.
110
+ #
111
+ # ВНИМАНИЕ: правильный ответ будет сгенерирован автоматически (не нужно использовать render\redirect_to)!
112
+ # order = Order.find(params[:params][:account])
113
+ # order.payed!
114
+ end
115
+
116
+ def error
117
+ # вызывается при оповещении магазина об ошибке при оплате заказа.
118
+ #
119
+ # ВНИМАНИЕ: правильный ответ будет сгенерирован автоматически (не нужно использовать render\redirect_to)!
120
+ # order = Order.find(params[:params][:account])
121
+ # order.error!
122
+ end
123
+
124
+ private
125
+
126
+ def service
127
+ # ВНИМАНИЕ: обязательный метод! Используется при проверке сигнатуры.
128
+ Unitpay::Service.new('unitpay_public_key', 'unitpay_secret_key')
129
+ end
130
+ end
131
+ ```
26
132
 
27
- ## Development
133
+ ###<a name="widget"></a> Подключение виджета для карт оплаты
28
134
 
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
135
+ Рассмотрим один из способов реализации случая, когда необходимо показать виджет оплаты после заполнения пользователем формы заказа.
30
136
 
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
137
+ 1. Подключите на странице внешний скрипт:
138
+
139
+ ```html
140
+ <script src="https://widget.unitpay.ru/unitpay.js"></script>
141
+ ```
142
+
143
+ 2. Добавьте обработчик формы заказа
144
+
145
+ **unitpay.js.coffe**
146
+ ```coffee
147
+ class Unitpay
148
+ bindEvents: ->
149
+ @handleAfterSubmitForm()
150
+
151
+ handleAfterSubmitForm: ->
152
+ $('#id-your-form').submit (e) ->
153
+ e.preventDefault()
154
+ tryUnitpay() # при сабмите формы пытаемся получить параметры для виджета
155
+
156
+ tryUnitpay = ->
157
+ $.ajax({
158
+ type: 'POST',
159
+ dataType: 'json'
160
+ url: '/orders' # любой другой путь сохранения\создания вашего платежа (заказа). Не забудьте добавить его в routes.rb
161
+ data: $('#id-your-form').serialize(),
162
+ success: (data) ->
163
+ payment = new UnitPay()
164
+ payment.createWidget(data)
165
+ payment.success ->
166
+ console.log('Unitpay: успешный платеж')
167
+ payment.error ->
168
+ # ошибка платежного шлюза (например, пользователь не завершил оплату)
169
+ console.log('Unitpay: ошибка платежа')
170
+ error: ->
171
+ # ошибка при сохранении заказа (например, ошибки валидации)
172
+ console.log('Ошибка сохранения\создания платежа (заказа)')
173
+ })
174
+ $ ->
175
+ unitpay = new Unitpay
176
+ unitpay.bindEvents()
177
+
178
+ ```
179
+
180
+ 3. Измените контроллер так, чтобы он отдавал необходимый `json` ответ
181
+
182
+ **orders_controller.rb**
183
+ ```ruby
184
+ class OrdersController < ApplicationController
185
+ def create
186
+ order = Order.new(permitted_params)
187
+ if order.save
188
+ render json: unitpay_service.params_for_widget(order.total_cost, order.id, order.description)
189
+ else
190
+ render json: order.errors, status: :unprocessable_entity
191
+ end
192
+ end
193
+
194
+ private
195
+
196
+ def unitpay_service
197
+ # Внимание: не храните ключи в открытом виде в репозитории.
198
+ # используйте конфигурационные файлы (https://github.com/binarylogic/settingslogic)
199
+ Unitpay::Service.new('public_key', 'secret_key')
200
+ end
201
+
202
+ def permitted_params
203
+ # используйте strong params
204
+ end
205
+ end
32
206
 
33
207
  ## Contributing
34
208
 
35
- 1. Fork it ( https://github.com/[my-github-username]/unitpay/fork )
209
+ 1. Fork it ( https://github.com/ssnikolay/unitpay/fork )
36
210
  2. Create your feature branch (`git checkout -b my-new-feature`)
37
211
  3. Commit your changes (`git commit -am 'Add some feature'`)
38
212
  4. Push to the branch (`git push origin my-new-feature`)
@@ -1,3 +1,3 @@
1
1
  module Unitpay
2
- VERSION = '0.0.4'
2
+ VERSION = '0.1'
3
3
  end
@@ -19,10 +19,11 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.add_development_dependency 'bundler', '~> 1.8'
22
+ spec.add_development_dependency 'bundler', '~> 1.6'
23
23
  spec.add_development_dependency 'rake', '~> 10.0'
24
24
 
25
25
  spec.add_development_dependency 'pry'
26
26
  spec.add_development_dependency 'rspec'
27
27
  spec.add_development_dependency 'rspec-its'
28
+ spec.add_development_dependency 'codeclimate-test-reporter'
28
29
  end
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unitpay
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: '0.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - ssnikolay
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-02 00:00:00.000000000 Z
11
+ date: 2016-01-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.8'
19
+ version: '1.6'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.8'
26
+ version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: codeclimate-test-reporter
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  description: Gem для подключения к платежной системе unitpay.ru
84
98
  email:
85
99
  - ssnikolay@gmail.com
@@ -102,6 +116,7 @@ files:
102
116
  - lib/unitpay/service.rb
103
117
  - lib/unitpay/version.rb
104
118
  - unitpay.gemspec
119
+ - unitpay.jpg
105
120
  homepage: https://github.com/ssnikolay/unitpay
106
121
  licenses:
107
122
  - MIT