payanyway 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 10bf68a07ba7b3563b65cd8502d9a63d2be9f072
4
- data.tar.gz: c5bcbcbb42073f55b15b168fe93a760cde2edeab
3
+ metadata.gz: 22312df92c434d0cc5fbb014278ea412e847ef2f
4
+ data.tar.gz: 56360ecc662d971c93fb290b11b4e6d75a69a134
5
5
  SHA512:
6
- metadata.gz: a61ae15d407e121038088a4b342fa65f18c146250fa86cab3a10c61b23fe71e9ee4886a905d050b59753e7e45ba3667c4615bf41bd7c007666ba1ca7a4e112fa
7
- data.tar.gz: 8f4b768defa188b4c7eb18e11b2d4c751f4af601d6198ef7abce7eb9fb9d4649adac4ebea2279ee61e4cee12d1280b4030058a03cd1c351ffbf2c19fe56c68f5
6
+ metadata.gz: 68e88399e7e7b18faf28d8a343e72845786be52c5b465b70adde9201a7d545cc910cd0ad62bf2a3cac070b4845f9c496ba87db3009c7c18264ad586fd768d9ab
7
+ data.tar.gz: 5e6066b8f26391772aed9a00a2c09a244198e3dd60f8bc5cf04c2e5d03df7aba454f58649ff5b9eb27b56edce1dc6f1cd09e3480e37df2d88812c0b854e2b771
data/README.md CHANGED
@@ -1,3 +1,4 @@
1
+ [![Gem Version](https://badge.fury.io/rb/payanyway.svg)](http://badge.fury.io/rb/payanyway)
1
2
  [![Build Status](https://travis-ci.org/ssnikolay/payanyway.svg?branch=master)](https://travis-ci.org/ssnikolay/payanyway)
2
3
  [![Code Climate](https://codeclimate.com/github/ssnikolay/payanyway.svg)](https://codeclimate.com/github/ssnikolay/payanyway)
3
4
  [![Test Coverage](https://codeclimate.com/github/ssnikolay/payanyway/badges/coverage.svg)](https://codeclimate.com/github/ssnikolay/payanyway)
@@ -5,8 +6,20 @@
5
6
  # Payanyway
6
7
 
7
8
  Этот gem предназначен для быстрой интеграции платежного шлюза [payanyway](http://payanyway.ru) в ваше ruby приложение.
8
- При возникновенни вопросов следует ознакомиться с [http://moneta.ru/doc/MONETA.Assistant.ru.pdf](http://moneta.ru/doc/MONETA.Assistant.ru.pdf)
9
- ## Установка
9
+
10
+ При возникновении вопросов следует ознакомиться с [документацией к шлюзу](http://moneta.ru/doc/MONETA.Assistant.ru.pdf).
11
+
12
+ - [Установка](#installation)
13
+ - [Подключение](#setup)
14
+ - [Использование](#usage)
15
+ - [Запрос на оплату](#payment_url)
16
+ - [Специальные URL'ы](#special_urls)
17
+ - [Check URL](#check_url)
18
+ - [Return URL и InProgress URL](#return_url)
19
+ - [Расшифровка параметров](#params)
20
+ - [Параметры, отвечающие за выбор платежной системы](#payment_ids)
21
+
22
+ ##<a name="installation"></a> Установка
10
23
 
11
24
  Добавьте эти строки в Gemfile вашего приложения:
12
25
 
@@ -18,11 +31,11 @@ gem 'payanyway'
18
31
 
19
32
  $ bundle
20
33
 
21
- Или установки напрямую:
34
+ Или установите напрямую:
22
35
 
23
36
  $ gem install payanyway
24
37
 
25
- ## Подключение
38
+ ##<a name="setup"></a> Подключение
26
39
 
27
40
  Добавьте engine в `config/routes.rb`
28
41
  ```ruby
@@ -36,7 +49,7 @@ end
36
49
  ```ruby
37
50
  class PayanywayController
38
51
  def success_implementation(order_id)
39
- # вызывается при отправки шлюзом пользователя на Success URL.
52
+ # вызывается при отправке шлюзом пользователя на Success URL.
40
53
  #
41
54
  # ВНИМАНИЕ: является незащищенным действием!
42
55
  # Для выполнения действий после успешной оплаты используйте pay_implementation
@@ -46,40 +59,22 @@ class PayanywayController
46
59
  # вызывается при оповещении магазина об
47
60
  # успешной оплате пользователем заказа. (Pay URL)
48
61
  #
49
- # params[ KEY ], где KEY ∈ [ :moneta_id, :order_id, :operation_id,
50
- # :amount, :currency, :subscriber_id, :test_mode, :user, :corraccount,
51
- # :custom1, :custom2, :custom3 ]
62
+ # params[ KEY ], где KEY ∈ [ :moneta_id, :order_id, :operation_id,
63
+ # :amount, :currency, :subscriber_id, :test_mode, :user, :corraccount,
64
+ # :custom1, :custom2, :custom3 ]
52
65
  end
53
66
 
54
67
  def fail_implementation(order_id)
55
- # вызывается при отправки шлюзом пользователя на Fail URL.
56
- end
57
-
58
- def return_implementation(order_id)
59
- # Вызывается при добровольном отказе пользователем от оплаты (Return URL)
60
- end
61
-
62
- def in_progress_implementation(order_id)
63
- # Вызывается после успешного запроса на авторизацию средств,
64
- # до подтверждения списания и зачисления средств (InProgress URL)
65
- #
66
- # ВНИМАНИЕ: InProgress URL может быть использован в любом способе оплаты.
67
- # Если к моменту, когда пользователя надо вернуть в магазин оплата
68
- # по какой-либо причине не завершена, то его перекинет на InProgress, если он указан.
69
- # Если InProgress URL не указан, то на Success URL.
70
- # Если операция уже успешно выполнилась, то сразу на Success URL.
71
- # К примеру, в случае с картами чаще всего получается так, что операция не успевает выполниться,
72
- # поэтому InProgress будет использован с бОльшей вероятностью, чем Success URL.
68
+ # вызывается при отправке шлюзом пользователя на Fail URL.
73
69
  end
74
70
  end
75
71
  ```
76
72
 
77
73
  Создайте конфигурационный файл: `config/payanyway.yml`
78
74
 
79
-
80
75
  ```yml
81
76
  development: &config
82
- moneta_id: YOUR_MOTETA_ID
77
+ moneta_id: YOUR_MONETA_ID
83
78
  currency: RUB
84
79
  payment_url: https://demo.moneta.ru/assistant.htm
85
80
  test_mode: 1
@@ -88,54 +83,144 @@ production: <<: *config
88
83
  payment_url: https://moneta.ru/assistant.htm
89
84
  test_mode: 0
90
85
  ```
91
- ## Использование
86
+ ##<a name="usage"></a> Использование
87
+
88
+ ###<a name="payment_url"></a> Запрос на оплату
92
89
 
93
- Что бы получить ссылку на платежный шлюз для оплаты заказа пользвателем,
90
+ Чтобы получить ссылку на платежный шлюз для оплаты заказа пользователем,
94
91
  используйте `Payanyway::Gateway.payment_url(params, use_signature = true)`, где `params[ KEY ]` такой, что `KEY` ∈
95
92
  `[:order_id, :amount, :test_mode, :description, :subscriber_id, :custom1, :custom2, :custom3, :locale, :payment_system_unit_id, :payment_system_limit_ids]`
96
93
 
97
94
  Если в настройках счета в системе **moneta.ru** выставлен флаг «Можно переопределять настройки в URL», то можно так же передавать
98
95
  `[:success_url, :in_progress_url, :fail_url, :return_url]`.
99
96
 
100
- Пример:
97
+ Пример минимальной ссылки:
98
+
101
99
  ```ruby
102
100
  class Order < ActiveRecord::Base; end
103
101
 
104
- class OrdersController < AplicationController
102
+ class OrdersController < ApplicationController
105
103
  def create
106
104
  order = Order.create(params[:order])
107
105
  redirect_to Payanyway::Gateway.payment_url(
108
106
  order_id: order.id,
109
107
  amount: order.total_amount,
110
- locale: 'ru',
111
108
  description: "Оплата заказа № #{ order.number } на сумму #{ order.total_amount }руб."
112
109
  )
113
110
  end
114
111
  end
115
112
  ```
116
113
 
117
- ### Расшифровка параметров
114
+ ###<a name="special_urls"></a> Специальные URL'ы
115
+
116
+ Gem **payanyway** добавляет специальные роуты для обработки запросов от шлюза.
117
+
118
+ ####<a name="check_url"></a> Check URL
119
+
120
+ ```ruby
121
+ class PayanywayController
122
+ ...
123
+ def check_implementation(params)
124
+ # Вызывается при обработке проверочных запросов (Check URL)
125
+ # params[ KEY ], где KEY ∈ [ :moneta_id, :order_id, :operation_id,
126
+ # :amount, :currency, :subscriber_id, :test_mode, :user, :corraccount,
127
+ # :custom1, :custom2, :custom3, :payment_system_unit_id ]
128
+
129
+ # ВНИМАНИЕ: при отправке корректного ответа со стороны магазина,
130
+ # необходимо вернуть в методе параметры для генерации статус-кода.
131
+ # { amount: AMOUNT, state: STATE, description: DESCRIPTION,
132
+ # attributes: ATTRIBUTES, logger: true\false }
133
+ end
134
+ end
135
+ ```
136
+
137
+ Пример метода:
118
138
 
119
- params[ KEY ], где KEY | Описание
139
+ ```ruby
140
+ ...
141
+ def check_implementation(params)
142
+ order = Order.find(params[:order_id])
143
+ {
144
+ amount: order.total_amount,
145
+ state: order.state_for_payanyway, # нужно реализовать
146
+ attributes: { name: 'John Smith', email: 'js@gmail.com' }
147
+ }
148
+ end
149
+ ...
150
+ ```
151
+
152
+ **Возвращаемые параметры:**
153
+
154
+ Название | Описание
120
155
  ---------------------------|:-----------------------------------------------------------
121
- `:moneta_id` | Идентификатор магазина в системе MONETA.RU.
122
- `:order_id` | Внутренний идентификатор заказа, однозначно определяющий заказ в магазине.
123
- `:operation_id` | Номер операции в системе MONETA.RU.
124
- `:amount` | Фактическая сумма, полученная на оплату заказа.
125
- `:currency` | ISO код валюты, в которой произведена оплата заказа в магазине.
126
- `:test_mode` | Флаг оплаты в тестовом режиме (1 - да, 0 - нет).
127
- `:description` | Описание оплаты.
128
- `:subscriber_id` | Внутренний идентификатор пользователя в системе магазина.
129
- `:corraccount` | Номер счета плательщика.
130
- `:custom[1|2|3]` | Поля произвольных параметров. Будут возращены магазину в параметрах отчета о проведенной оплате.
131
- `:user` | Номер счета пользователя, если оплата производилась с пользовательского счета в системе «MONETA.RU».MONETA.Assistant.
132
- `:locale` | (ru\|en) Язык пользовательского интерфейса.
133
- `:payment_system_unit_id` | Предварительный выбор платежной системы. (https://www.moneta.ru/viewPaymentMethods.htm)
134
- `:payment_system_limit_ids`| Список (разделенный запятыми) идентификаторов платежных систем, которые необходимо показывать пользователю.
135
- `:success_url` | URL страницы магазина, куда должен попасть покупатель после успешно выполненных действий.
136
- `:in_progress_url` | URL страницы магазина, куда должен попасть покупатель после успешного запроса на авторизацию средств, до подтверждения списания и зачисления средств.
137
- `:fail_url` | URL страницы магазина, куда должен попасть покупатель после отмененной или неуспешной оплаты.
138
- `:return_url` | URL страницы магазина, куда должен вернуться покупатель при добровольном отказе от оплаты.
156
+ `:amount` | Сумма заказа
157
+ `:state` | Состояние оплаты заказа. (см. [таблицу состояний](#states))
158
+ `:description` | Описание состояния заказа. Задается в произвольной форме.
159
+ `:attributes` | Необязательный элемент. Содержит хеш произвольных параметров, которые будут сохранены в операции.
160
+ `:logger` | Вывести XML ответ в log (`Rails.logger`)
161
+
162
+ <a name="states"></a>**Возможные состояния оплаты заказа:**
163
+
164
+ Состояние | Описание
165
+ -------------------------|:-----------------------------------------------------------
166
+ `:paid` | Заказ оплачен. Уведомление об оплате магазину доставлено.
167
+ `:in_progress` | Заказ находится в обработке. Точный статус оплаты заказа определить невозможно. (например, если пользователя отправило на InProgress URL, но уведомления на Pay URL от шлюза еще не поступало)
168
+ `:unpaid` | Заказ создан и готов к оплате. Уведомление об оплате магазину не доставлено.
169
+ `:canceled` | Заказ не является актуальным в магазине (например, заказ отменен).
170
+
171
+ ####<a name="return_url"></a> Return URL и InProgress URL
172
+
173
+ ```ruby
174
+ class PayanywayController
175
+ ...
176
+ def return_implementation(order_id)
177
+ # Вызывается при добровольном отказе пользователем от оплаты (Return URL)
178
+ end
179
+
180
+ def in_progress_implementation(order_id)
181
+ # Вызывается после успешного запроса на авторизацию средств,
182
+ # до подтверждения списания и зачисления средств (InProgress URL)
183
+ #
184
+ # ВНИМАНИЕ: InProgress URL может быть использован в любом способе оплаты.
185
+ # Если к моменту, когда пользователя надо вернуть в магазин оплата,
186
+ # по какой-либо причине не завершена, то его перекинет на InProgress,
187
+ # если он указан, если не указан, то на Success URL.
188
+ # Если операция уже успешно выполнилась, то сразу на Success.
189
+ # В случае с картами чаще всего получается так, что операция не успевает выполниться,
190
+ # поэтому InProgress будет использован с бОльшей вероятностью, чем Success URL.
191
+ end
192
+ ...
193
+ end
194
+ ```
195
+
196
+ ###<a name="params"></a> Расшифровка параметров, используемых в gem'e
197
+
198
+ params[ KEY ], где KEY | В документации | Описание
199
+ ---------------------------|:-------------------------|:-----------------------------------------
200
+ `:moneta_id` | `MNT_ID` | Идентификатор магазина в системе MONETA.RU.
201
+ `:order_id` | `MNT_TRANSACTION_ID` | Внутренний идентификатор заказа, однозначно определяющий заказ в магазине.
202
+ `:operation_id` | `MNT_OPERATION_ID` | Номер операции в системе MONETA.RU.
203
+ `:amount` | `MNT_AMOUNT` | Фактическая сумма, полученная на оплату заказа.
204
+ `:currency` | `MNT_CURRENCY_CODE` | ISO код валюты, в которой произведена оплата заказа в магазине.
205
+ `:test_mode` | `MNT_TEST_MODE` | Флаг оплаты в тестовом режиме (1 - да, 0 - нет).
206
+ `:description` | `MNT_DESCRIPTION` | Описание оплаты.
207
+ `:subscriber_id` | `MNT_SUBSCRIBER_ID` | Внутренний идентификатор пользователя в системе магазина.
208
+ `:corraccount` | `MNT_CORRACCOUNT` | Номер счета плательщика.
209
+ `:custom[1|2|3]` | `MNT_CUSTOM1` | Поля произвольных параметров. Будут возвращены магазину в параметрах отчета о проведенной оплате.
210
+ `:user` | `MNT_USER` | Номер счета пользователя, если оплата производилась с пользовательского счета в системе «MONETA.RU».
211
+ `:locale` | `moneta.locale` | (ru\|en) Язык пользовательского интерфейса.
212
+ `:success_url` | `MNT_SUCCESS_URL` | URL страницы магазина, куда должен попасть покупатель после успешно выполненных действий.
213
+ `:in_progress_url` | `MNT_INPROGRESS_URL` | URL страницы магазина, куда должен попасть покупатель после успешного запроса на авторизацию средств, до подтверждения списания и зачисления средств.
214
+ `:fail_url` | `MNT_FAIL_URL` | URL страницы магазина, куда должен попасть покупатель после отмененной или неуспешной оплаты.
215
+ `:return_url` | `MNT_RETURN_URL` | URL страницы магазина, куда должен вернуться покупатель при добровольном отказе от оплаты.
216
+ `:attributes` | `MNT_ATTRIBUTES` | Содержит произвольные параметры, которые будут сохранены в операции.
217
+
218
+ ####<a name="payment_ids"></a> Параметры, отвечающие за выбор платежной системы:
219
+
220
+ params[ KEY ], где KEY | В документации | Описание
221
+ ---------------------------|:-------------------------|:-----------------------------------------
222
+ `:payment_system_unit_id` | `paymentSystem.unitId` | Конкретная [платежная система](https://www.moneta.ru/viewPaymentMethods.htm)
223
+ `:payment_system_limit_ids`| `paymentSystem.limitIds` | Список (разделенный запятыми) идентификаторов платежных систем.
139
224
 
140
225
 
141
226
  ## Contributing
@@ -7,44 +7,44 @@ module Payanyway
7
7
  end
8
8
 
9
9
  def pay
10
- service = Payanyway::Response::Pay.new(params)
11
- service.success? ?
12
- pay_implementation(service.pretty_params) :
13
- Rails.logger.error(service.error_message)
10
+ request = Payanyway::Request::Pay.new(params)
11
+ request.success? ?
12
+ pay_implementation(request.pretty_params) :
13
+ Rails.logger.error(request.error_message)
14
14
 
15
- render text: service.result
15
+ render text: request.response
16
16
  end
17
17
 
18
18
  def success
19
- service = Payanyway::Response::Base.new(params)
19
+ request = Payanyway::Request::Base.new(params)
20
20
 
21
- success_implementation(service.pretty_params)
21
+ success_implementation(request.pretty_params)
22
22
  end
23
23
 
24
24
  def fail
25
- service = Payanyway::Response::Base.new(params)
25
+ request = Payanyway::Request::Base.new(params)
26
26
 
27
- fail_implementation(service.pretty_params[:order_id])
27
+ fail_implementation(request.pretty_params[:order_id])
28
28
  end
29
29
 
30
30
  def return
31
- service = Payanyway::Response::Base.new(params)
31
+ request = Payanyway::Request::Base.new(params)
32
32
 
33
- return_implementation(service.pretty_params[:order_id])
33
+ return_implementation(request.pretty_params[:order_id])
34
34
  end
35
35
 
36
36
  def in_progress
37
- service = Payanyway::Response::Base.new(params)
37
+ request = Payanyway::Request::Base.new(params)
38
38
 
39
- in_progress_implementation(service.pretty_params[:order_id])
39
+ in_progress_implementation(request.pretty_params[:order_id])
40
40
  end
41
41
 
42
42
  def check
43
- service = Payanyway::Response::Check.new(params)
44
- if service.pretty_params.present?
45
- raise service.error_message unless service.success?
43
+ request = Payanyway::Request::Check.new(params)
44
+ if request.pretty_params.present?
45
+ raise request.error_message unless request.success?
46
46
 
47
- render xml: service.result(check_implementation(service.pretty_params)).to_xml
47
+ render xml: request.response(check_implementation(request.pretty_params)).to_xml
48
48
  else
49
49
  # Не выдавать ошибку, если параметры пустые
50
50
  # Необходимо для проверки со стороны moneta.ru
@@ -91,7 +91,7 @@ module Payanyway
91
91
 
92
92
  def check_implementation(params)
93
93
  # Ответ на запрос о проверке заказа
94
- # { amount: AMOUNT, state: STATE, description: description, attributes: ATTRIBUTES }
94
+ # { amount: AMOUNT, state: STATE, description: description, attributes: ATTRIBUTES, logger: logger }
95
95
  end
96
96
  end
97
97
  end
@@ -1,6 +1,6 @@
1
1
  module Payanyway
2
- module Request
3
- class PaymentUrl
2
+ module Factories
3
+ class PaymentUrlFactory
4
4
  PARAMS = {
5
5
  'MNT_TRANSACTION_ID' => :order_id,
6
6
  'MNT_AMOUNT' => :amount,
@@ -47,7 +47,7 @@ module Payanyway
47
47
  # * _params[return_url]_ - URL страницы магазина, куда должен вернуться покупатель при добровольном отказе от оплаты.
48
48
 
49
49
 
50
- Payanyway::Request::PaymentUrl.build(params, use_signature)
50
+ Payanyway::Factories::PaymentUrlFactory.build(params, use_signature)
51
51
  end
52
52
 
53
53
  class << self
@@ -1,5 +1,5 @@
1
1
  module Payanyway
2
- module Response
2
+ module Request
3
3
  class Base
4
4
  @@_params = { 'MNT_TRANSACTION_ID' => :order_id }.invert.to_settings
5
5
 
@@ -1,14 +1,16 @@
1
1
  module Payanyway
2
2
  module Response
3
3
  class InvalidState < Exception; end
4
+ end
4
5
 
6
+ module Request
5
7
  class Check < Base
8
+ SPECIAL_CODE = 100 # когда в запросе не было суммы, а мы её передает в ответе
6
9
  RESPONSE_CODE = {
7
- set_amount: 100,
8
- paid: 200,
9
- in_process: 302,
10
- unpaid: 402,
11
- canceled: 500
10
+ paid: 200,
11
+ in_progress: 302,
12
+ unpaid: 402,
13
+ canceled: 500
12
14
  }
13
15
 
14
16
  @@_params = {
@@ -38,7 +40,7 @@ module Payanyway
38
40
  @valid_signature
39
41
  end
40
42
 
41
- def result(attr)
43
+ def response(attr)
42
44
  # Возвращает Nokogiri::XML документ
43
45
  # * _attr[:amount] - сумма заказа
44
46
  # * _attr[:state] - статус платежа(см. RESPONSE_CODE)
@@ -53,14 +55,16 @@ module Payanyway
53
55
  parent.add_child(signature_node(xml))
54
56
  parent.add_child(attributes_node(attr[:attributes], xml)) if attr[:attributes].present?
55
57
 
58
+ add_to_logger(xml) if attr[:logger]
59
+
56
60
  xml
57
61
  end
58
62
 
59
63
  private
60
64
 
61
- def validate_status!(status)
62
- if RESPONSE_CODE.keys.exclude?(status.to_sym)
63
- raise InvalidState.new("PAYANYWAY: Invalid response state! State must be eq #{ RESPONSE_CODE.keys }")
65
+ def validate_status!(state)
66
+ if RESPONSE_CODE.keys.exclude?(state.to_sym)
67
+ raise Payanyway::Response::InvalidState.new("PAYANYWAY: Invalid response state! State must be eq #{ RESPONSE_CODE.keys }")
64
68
  end
65
69
  end
66
70
 
@@ -87,7 +91,7 @@ module Payanyway
87
91
 
88
92
  def result_code_of(amount, state)
89
93
  if @pretty_params[:amount].blank? && amount.present?
90
- RESPONSE_CODE[:set_amount]
94
+ SPECIAL_CODE
91
95
  else
92
96
  RESPONSE_CODE[state.to_sym]
93
97
  end
@@ -108,6 +112,10 @@ module Payanyway
108
112
  def create_new_node(name, content, xml)
109
113
  Nokogiri::XML::Node.new(name, xml).tap { |node| node.content = content }
110
114
  end
115
+
116
+ def add_to_logger(xml)
117
+ Rails.logger.info("PAYANYWAY: XML response for check: \r\n #{ xml.to_xml }")
118
+ end
111
119
  end
112
120
  end
113
121
  end
@@ -1,5 +1,5 @@
1
1
  module Payanyway
2
- module Response
2
+ module Request
3
3
  class Pay < Base
4
4
  @@_params = {
5
5
  'MNT_ID' => :moneta_id,
@@ -26,7 +26,7 @@ module Payanyway
26
26
  @valid_signature
27
27
  end
28
28
 
29
- def result
29
+ def response
30
30
  @valid_signature ? 'SUCCESS' : 'FAIL'
31
31
  end
32
32
 
@@ -1,3 +1,3 @@
1
1
  module Payanyway
2
- VERSION = '1.2.1'
2
+ VERSION = '1.2.2'
3
3
  end
data/lib/payanyway.rb CHANGED
@@ -4,9 +4,10 @@ require 'active_support/core_ext'
4
4
  require 'payanyway/helpers/settings'
5
5
  require 'payanyway/helpers/signature_generator'
6
6
 
7
- require 'payanyway/request/payment_url'
8
- require 'payanyway/response/base'
9
- require 'payanyway/response/pay'
7
+ require 'payanyway/factories/payment_url_factory'
8
+ require 'payanyway/request/base'
9
+ require 'payanyway/request/pay'
10
+ require 'payanyway/request/check'
10
11
 
11
12
  require 'payanyway/gateway'
12
13
  require 'payanyway/engine'
@@ -48,11 +48,22 @@ describe PayanywayController do
48
48
 
49
49
  context 'when valid signature' do
50
50
  it 'should and message to logger' do
51
- expect_any_instance_of(Payanyway::Controller).to receive(:check_implementation).and_return({amount: 12, state: :paid})
51
+ expect(Rails.logger).not_to receive(:info)
52
+ expect_any_instance_of(Payanyway::Controller).to receive(:check_implementation).and_return(amount: 12, state: :paid)
53
+
52
54
  get :check, { 'MNT_TRANSACTION_ID' => 676, 'MNT_SIGNATURE' => '79c1c4f41a0a70bb107c976ebba25811' }
53
55
 
54
56
  expect(Nokogiri::XML(response.body).at_css('MNT_RESPONSE')).to be_present
55
57
  end
56
58
  end
59
+
60
+ context 'when logger flag is true' do
61
+ it 'should add message to logger' do
62
+ expect(Rails.logger).to receive(:info).with(/PAYANYWAY: XML response for check/)
63
+
64
+ expect_any_instance_of(Payanyway::Controller).to receive(:check_implementation).and_return(amount: 12, state: :paid, logger: true)
65
+ get :check, { 'MNT_TRANSACTION_ID' => 676, 'MNT_SIGNATURE' => '79c1c4f41a0a70bb107c976ebba25811' }
66
+ end
67
+ end
57
68
  end
58
69
  end
@@ -1,6 +1,6 @@
1
1
  require 'uri'
2
2
 
3
- describe Payanyway::Request::PaymentUrl do
3
+ describe Payanyway::Factories::PaymentUrlFactory do
4
4
  subject do
5
5
  parse_url = URI(described_class.build(params, false))
6
6
 
@@ -1,4 +1,4 @@
1
- describe Payanyway::Response::Base do
1
+ describe Payanyway::Request::Base do
2
2
  let(:service) { described_class.new(params) }
3
3
  let(:params) { { 'MNT_ID' => 1, 'MNT_AMOUNT' => 10.20 } }
4
4
 
@@ -1,4 +1,4 @@
1
- describe Payanyway::Response::Check do
1
+ describe Payanyway::Request::Check do
2
2
  RSpec::Matchers.define :be_eq_node do |expected|
3
3
  def value_of(node)
4
4
  elements = node.children.select { |e| e.instance_of? Nokogiri::XML::Element }
@@ -22,8 +22,8 @@ describe Payanyway::Response::Check do
22
22
  }
23
23
  end
24
24
 
25
- describe '#result' do
26
- let(:xml) { service.result(amount: amount, state: state, description: description, attributes: attributes) }
25
+ describe '#response' do
26
+ let(:xml) { service.response(amount: amount, state: state, description: description, attributes: attributes) }
27
27
  let(:amount) { request_amount }
28
28
  let(:state) { :unpaid }
29
29
  let(:description) { 'Заказ создан, но не оплачен' }
@@ -1,4 +1,4 @@
1
- describe Payanyway::Response::Pay do
1
+ describe Payanyway::Request::Pay do
2
2
  let(:service) { described_class.new(params) }
3
3
  let(:params) do
4
4
  {
data/spec/spec_helper.rb CHANGED
@@ -13,7 +13,7 @@ require 'rspec/rails'
13
13
  require 'pry'
14
14
  require 'codeclimate-test-reporter'
15
15
 
16
- CodeClimate::TestReporter.start
16
+ CodeClimate::TestReporter.start if ENV['CODECLIMATE_REPO_TOKEN']
17
17
 
18
18
 
19
19
  RSpec.configure do |config|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: payanyway
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ssnikolay
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-23 00:00:00.000000000 Z
11
+ date: 2015-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -169,13 +169,13 @@ files:
169
169
  - lib/payanyway.rb
170
170
  - lib/payanyway/controller.rb
171
171
  - lib/payanyway/engine.rb
172
+ - lib/payanyway/factories/payment_url_factory.rb
172
173
  - lib/payanyway/gateway.rb
173
174
  - lib/payanyway/helpers/settings.rb
174
175
  - lib/payanyway/helpers/signature_generator.rb
175
- - lib/payanyway/request/payment_url.rb
176
- - lib/payanyway/response/base.rb
177
- - lib/payanyway/response/check.rb
178
- - lib/payanyway/response/pay.rb
176
+ - lib/payanyway/request/base.rb
177
+ - lib/payanyway/request/check.rb
178
+ - lib/payanyway/request/pay.rb
179
179
  - lib/payanyway/version.rb
180
180
  - payanyway.gemspec
181
181
  - spec/config/payanyway_spec.rb
@@ -183,12 +183,12 @@ files:
183
183
  - spec/controllers/payanyway_controller_spec.rb
184
184
  - spec/internal/app/controllers/application_controller.rb
185
185
  - spec/internal/config/payanyway.yml
186
+ - spec/lib/payanyway/factories/payment_url_factory_spec.rb
186
187
  - spec/lib/payanyway/gateway_spec.rb
187
188
  - spec/lib/payanyway/helpers/signature_generator_spec.rb
188
- - spec/lib/payanyway/request/payment_url_spec.rb
189
- - spec/lib/payanyway/response/base_spec.rb
190
- - spec/lib/payanyway/response/check_spec.rb
191
- - spec/lib/payanyway/response/pay_spec.rb
189
+ - spec/lib/payanyway/request/base_spec.rb
190
+ - spec/lib/payanyway/request/check_spec.rb
191
+ - spec/lib/payanyway/request/pay_spec.rb
192
192
  - spec/spec_helper.rb
193
193
  homepage: ''
194
194
  licenses:
@@ -220,10 +220,10 @@ test_files:
220
220
  - spec/controllers/payanyway_controller_spec.rb
221
221
  - spec/internal/app/controllers/application_controller.rb
222
222
  - spec/internal/config/payanyway.yml
223
+ - spec/lib/payanyway/factories/payment_url_factory_spec.rb
223
224
  - spec/lib/payanyway/gateway_spec.rb
224
225
  - spec/lib/payanyway/helpers/signature_generator_spec.rb
225
- - spec/lib/payanyway/request/payment_url_spec.rb
226
- - spec/lib/payanyway/response/base_spec.rb
227
- - spec/lib/payanyway/response/check_spec.rb
228
- - spec/lib/payanyway/response/pay_spec.rb
226
+ - spec/lib/payanyway/request/base_spec.rb
227
+ - spec/lib/payanyway/request/check_spec.rb
228
+ - spec/lib/payanyway/request/pay_spec.rb
229
229
  - spec/spec_helper.rb