payanyway 1.2.1 → 1.2.2

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: 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