payanyway 1.2.6 → 2.0.0

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: b8d168299fbf897d3a5e2585a1a0cdbbe804615e
4
- data.tar.gz: e2cf55fc61bd4a8a9111e3a2e567e2d2f0b7f3b6
3
+ metadata.gz: 06077962e86daa653defd01ffb1f707aaee9bfde
4
+ data.tar.gz: c6501c85c337160858dd80d8aca56d8e7ba0ac33
5
5
  SHA512:
6
- metadata.gz: ba18cd70d7d09f60da128fb5a9d807130b2a6dd0c8a447acefc98283c7e2b2cd2c8c0a6021d997bd9b233c6019e0e3c3416e3123c0c4fee4e35dfe2db9df045e
7
- data.tar.gz: a15d8e5a1a27bf58fff36fb52bca3fc54966235c1ee8f4c4b008428faa9b2e11c5d489fb5b795d309d3122547a3935f4190e3c0d713d241815b43fd031ab0919
6
+ metadata.gz: e79ec02616965d5c6d2d8e6d24046bb513330650509250abc9f3031d141df4f879e24df8a602b411e9c9944aaca122dc6c5a338fe91c41e3dbee31e3a8c28e34
7
+ data.tar.gz: 1a7768deb3da108b295704f83630daccf328d715fd9cd339d0da6f03268afe06939f892b0d2e7f97bff5a1f7e220ac8e0964b2650aa99db8f83f47d0f3c66a69
data/README.md CHANGED
@@ -50,7 +50,7 @@ end
50
50
  class PayanywayController < ApplicationController
51
51
  include Payanyway::Controller
52
52
 
53
- def success_implementation(order_id)
53
+ def success_implementation(transaction_id)
54
54
  # вызывается при отправке шлюзом пользователя на Success URL.
55
55
  #
56
56
  # ВНИМАНИЕ: является незащищенным действием!
@@ -61,12 +61,12 @@ class PayanywayController < ApplicationController
61
61
  # вызывается при оповещении магазина об
62
62
  # успешной оплате пользователем заказа. (Pay URL)
63
63
  #
64
- # params[ KEY ], где KEY ∈ [ :moneta_id, :order_id, :operation_id,
64
+ # params[ KEY ], где KEY ∈ [ :moneta_id, :transaction_id, :operation_id,
65
65
  # :amount, :currency, :subscriber_id, :test_mode, :user, :corraccount,
66
66
  # :custom1, :custom2, :custom3 ]
67
67
  end
68
68
 
69
- def fail_implementation(order_id)
69
+ def fail_implementation(transaction_id)
70
70
  # вызывается при отправке шлюзом пользователя на Fail URL.
71
71
  end
72
72
  end
@@ -96,7 +96,7 @@ production: <<: *config
96
96
 
97
97
  Чтобы получить ссылку на платежный шлюз для оплаты заказа пользователем,
98
98
  используйте `Payanyway::Gateway.payment_url(params, use_signature = true)`, где `params[ KEY ]` такой, что `KEY` ∈
99
- `[:order_id, :amount, :test_mode, :description, :subscriber_id, :custom1, :custom2, :custom3, :locale, :payment_system_unit_id, :payment_system_limit_ids]`
99
+ `[:transaction_id, :amount, :test_mode, :description, :subscriber_id, :custom1, :custom2, :custom3, :locale, :payment_system_unit_id, :payment_system_limit_ids]`
100
100
 
101
101
  Если в настройках счета в системе **moneta.ru** выставлен флаг «Можно переопределять настройки в URL», то можно так же передавать
102
102
  `[:success_url, :in_progress_url, :fail_url, :return_url]`.
@@ -110,7 +110,7 @@ class OrdersController < ApplicationController
110
110
  def create
111
111
  order = Order.create(params[:order])
112
112
  redirect_to Payanyway::Gateway.payment_url(
113
- order_id: order.id,
113
+ transaction_id: order.id,
114
114
  amount: order.total_amount,
115
115
  description: "Оплата заказа № #{ order.number } на сумму #{ order.total_amount }руб."
116
116
  )
@@ -118,6 +118,8 @@ class OrdersController < ApplicationController
118
118
  end
119
119
  ```
120
120
 
121
+ *Примечание: при необходимости можно переопределить `moneta_id`, `currency`, `test_mode`, так же передав их в payment_url.*
122
+
121
123
  ###<a name="special_urls"></a> Специальные URL'ы
122
124
 
123
125
  Gem **payanyway** добавляет специальные роуты для обработки запросов от шлюза.
@@ -129,7 +131,7 @@ class PayanywayController
129
131
  ...
130
132
  def check_implementation(params)
131
133
  # Вызывается при обработке проверочных запросов (Check URL)
132
- # params[ KEY ], где KEY ∈ [ :moneta_id, :order_id, :operation_id,
134
+ # params[ KEY ], где KEY ∈ [ :moneta_id, :transaction_id, :operation_id,
133
135
  # :amount, :currency, :subscriber_id, :test_mode, :user, :corraccount,
134
136
  # :custom1, :custom2, :custom3, :payment_system_unit_id ]
135
137
 
@@ -146,7 +148,7 @@ end
146
148
  ```ruby
147
149
  ...
148
150
  def check_implementation(params)
149
- order = Order.find(params[:order_id])
151
+ order = Order.find(params[:transaction_id])
150
152
  {
151
153
  amount: order.total_amount,
152
154
  state: order.state_for_payanyway, # нужно реализовать
@@ -180,11 +182,11 @@ end
180
182
  ```ruby
181
183
  class PayanywayController
182
184
  ...
183
- def return_implementation(order_id)
185
+ def return_implementation(transaction_id)
184
186
  # Вызывается при добровольном отказе пользователем от оплаты (Return URL)
185
187
  end
186
188
 
187
- def in_progress_implementation(order_id)
189
+ def in_progress_implementation(transaction_id)
188
190
  # Вызывается после успешного запроса на авторизацию средств,
189
191
  # до подтверждения списания и зачисления средств (InProgress URL)
190
192
  #
@@ -205,7 +207,7 @@ end
205
207
  params[ KEY ], где KEY | В документации | Описание
206
208
  ---------------------------|:-------------------------|:-----------------------------------------
207
209
  `:moneta_id` | `MNT_ID` | Идентификатор магазина в системе MONETA.RU.
208
- `:order_id` | `MNT_TRANSACTION_ID` | Внутренний идентификатор заказа, однозначно определяющий заказ в магазине.
210
+ `:transaction_id` | `MNT_TRANSACTION_ID` | Внутренний идентификатор заказа, однозначно определяющий заказ в магазине.
209
211
  `:operation_id` | `MNT_OPERATION_ID` | Номер операции в системе MONETA.RU.
210
212
  `:amount` | `MNT_AMOUNT` | Фактическая сумма, полученная на оплату заказа.
211
213
  `:currency` | `MNT_CURRENCY_CODE` | ISO код валюты, в которой произведена оплата заказа в магазине.
@@ -24,19 +24,19 @@ module Payanyway
24
24
  def fail
25
25
  request = Payanyway::Request::Base.new(params)
26
26
 
27
- fail_implementation(request.pretty_params[:order_id])
27
+ fail_implementation(request.pretty_params[:transaction_id])
28
28
  end
29
29
 
30
30
  def return
31
31
  request = Payanyway::Request::Base.new(params)
32
32
 
33
- return_implementation(request.pretty_params[:order_id])
33
+ return_implementation(request.pretty_params[:transaction_id])
34
34
  end
35
35
 
36
36
  def in_progress
37
37
  request = Payanyway::Request::Base.new(params)
38
38
 
39
- in_progress_implementation(request.pretty_params[:order_id])
39
+ in_progress_implementation(request.pretty_params[:transaction_id])
40
40
  end
41
41
 
42
42
  def check
@@ -58,34 +58,34 @@ module Payanyway
58
58
  # Вызывается после успешного прохождения
59
59
  # запроса об оплате от payanyway.ru
60
60
 
61
- Rails.logger.info("PAYANYWAY: Success paid order #{ params[:order_id] }")
61
+ Rails.logger.info("PAYANYWAY: Success paid order #{ params[:transaction_id] }")
62
62
  end
63
63
 
64
64
  def success_implementation(params)
65
65
  # Вызывается после успешной оплаты
66
66
 
67
- Rails.logger.info("PAYANYWAY: Called success payment url for order '#{ params[:order_id] }'")
67
+ Rails.logger.info("PAYANYWAY: Called success payment url for order '#{ params[:transaction_id] }'")
68
68
  render nothing: true
69
69
  end
70
70
 
71
- def fail_implementation(order_id)
71
+ def fail_implementation(transaction_id)
72
72
  # Вызывается после ошибки при оплате
73
73
 
74
- Rails.logger.error("PAYANYWAY: Fail paid order '#{ order_id }'")
74
+ Rails.logger.error("PAYANYWAY: Fail paid order '#{ transaction_id }'")
75
75
  render nothing: true
76
76
  end
77
77
 
78
- def return_implementation(order_id)
78
+ def return_implementation(transaction_id)
79
79
  # Вызывается при добровольном отказе пользователем от оплаты
80
80
 
81
- Rails.logger.info("PAYANYWAY: Return from payanyway. Order '#{ order_id }'")
81
+ Rails.logger.info("PAYANYWAY: Return from payanyway. Order '#{ transaction_id }'")
82
82
  render nothing: true
83
83
  end
84
84
 
85
- def in_progress_implementation(order_id)
85
+ def in_progress_implementation(transaction_id)
86
86
  # Вызывается после успешного запроса на авторизацию средств, до подтверждения списания и зачисления средств
87
87
 
88
- Rails.logger.info("PAYANYWAY: Order '#{ order_id }' in progress")
88
+ Rails.logger.info("PAYANYWAY: Order '#{ transaction_id }' in progress")
89
89
  render nothing: true
90
90
  end
91
91
 
@@ -2,7 +2,11 @@ module Payanyway
2
2
  module Factories
3
3
  class PaymentUrlFactory
4
4
  PARAMS = {
5
- 'MNT_TRANSACTION_ID' => :order_id,
5
+ 'MNT_ID' => :moneta_id,
6
+ 'MNT_TEST_MODE' => :test_mode,
7
+ 'MNT_CURRENCY_CODE' => :currency,
8
+
9
+ 'MNT_TRANSACTION_ID' => :transaction_id,
6
10
  'MNT_AMOUNT' => :amount,
7
11
  'MNT_DESCRIPTION' => :description,
8
12
  'MNT_SUBSCRIBER_ID' => :subscriber_id,
@@ -25,8 +25,8 @@ module Payanyway
25
25
  # * _use_signature_ - отправить код для идентификации отправителя и проверки целостности данных.
26
26
  #
27
27
  # Обязателные:
28
- # * _params[order_id]_ - номер заказа в магазине.
29
- # * _params[amount]_ - сумма заказа.
28
+ # * _params[transaction_id]_ - номер заказа в магазине.
29
+ # * _params[amount]_ - сумма заказа.
30
30
  #
31
31
  # Необязательные:
32
32
  # * _params[test_mode]_ - Указание, что запрос происходит в тестовом режиме.
@@ -1,7 +1,7 @@
1
1
  module Payanyway
2
2
  module Request
3
3
  class Base
4
- @@_params = { 'MNT_TRANSACTION_ID' => :order_id }.invert.to_settings
4
+ @@_params = { 'MNT_TRANSACTION_ID' => :transaction_id }.invert.to_settings
5
5
 
6
6
  attr_reader :pretty_params
7
7
 
@@ -11,7 +11,7 @@ module Payanyway
11
11
  end
12
12
 
13
13
  def error_message
14
- "ERROR! Invalid signature for order #{ @pretty_params[:order_id] }. Params: #{ @params.inspect }"
14
+ "ERROR! Invalid signature for order #{ @pretty_params[:transaction_id] }. Params: #{ @params.inspect }"
15
15
  end
16
16
  end
17
17
  end
@@ -16,7 +16,7 @@ module Payanyway
16
16
  @@_params = {
17
17
  'MNT_COMMAND' => :command,
18
18
  'MNT_ID' => :moneta_id,
19
- 'MNT_TRANSACTION_ID' => :order_id,
19
+ 'MNT_TRANSACTION_ID' => :transaction_id,
20
20
  'MNT_OPERATION_ID' => :operation_id,
21
21
  'MNT_AMOUNT' => :amount,
22
22
  'MNT_CURRENCY_CODE' => :currency,
@@ -72,7 +72,7 @@ module Payanyway
72
72
  xml = <<-EOXML
73
73
  <MNT_RESPONSE>
74
74
  <MNT_ID>#{ Payanyway::Gateway.config['moneta_id'] }</MNT_ID>
75
- <MNT_TRANSACTION_ID>#{ @pretty_params[:order_id] }</MNT_TRANSACTION_ID>
75
+ <MNT_TRANSACTION_ID>#{ @pretty_params[:transaction_id] }</MNT_TRANSACTION_ID>
76
76
  <MNT_RESULT_CODE>#{ result_code_of(amount, state) }</MNT_RESULT_CODE>
77
77
  <MNT_DESCRIPTION>#{ description }</MNT_DESCRIPTION>
78
78
  <MNT_AMOUNT>#{ amount }</MNT_AMOUNT>
@@ -3,7 +3,7 @@ module Payanyway
3
3
  class Pay < Base
4
4
  @@_params = {
5
5
  'MNT_ID' => :moneta_id,
6
- 'MNT_TRANSACTION_ID' => :order_id,
6
+ 'MNT_TRANSACTION_ID' => :transaction_id,
7
7
  'MNT_OPERATION_ID' => :operation_id,
8
8
  'MNT_AMOUNT' => :amount,
9
9
  'MNT_CURRENCY_CODE' => :currency,
@@ -1,3 +1,3 @@
1
1
  module Payanyway
2
- VERSION = '1.2.6'
2
+ VERSION = '2.0.0'
3
3
  end
@@ -11,7 +11,7 @@ describe Payanyway::Factories::PaymentUrlFactory do
11
11
  let(:params) {
12
12
  {
13
13
  amount: '120.25',
14
- order_id: 'FF790ABCD',
14
+ transaction_id: 'FF790ABCD',
15
15
  success_url: 'success_url',
16
16
  in_progress_url: 'in_progress_url',
17
17
  fail_url: 'fail_url',
@@ -29,7 +29,7 @@ describe Payanyway::Factories::PaymentUrlFactory do
29
29
  let(:params) {
30
30
  {
31
31
  amount: '120.25',
32
- order_id: 'FF790ABCD',
32
+ transaction_id: 'FF790ABCD',
33
33
  locale: 'ru',
34
34
  payment_system_unit_id: '1015',
35
35
  payment_system_limit_ids: '1015,1017'
@@ -4,23 +4,29 @@ describe Payanyway::Gateway do
4
4
  subject { described_class.payment_url(params, use_signature) }
5
5
 
6
6
  context 'when min params' do
7
- let(:params) { { amount: '120.25', order_id: 'FF790ABCD' } }
7
+ let(:params) { { amount: '120.25', transaction_id: 'FF790ABCD' } }
8
8
 
9
9
  it { is_expected.to eq('https://demo.moneta.ru/assistant.htm?MNT_ID=141290&MNT_CURRENCY_CODE=RUB&MNT_TEST_MODE=1&MNT_AMOUNT=120.25&MNT_TRANSACTION_ID=FF790ABCD') }
10
10
  it { is_expected.to_not be_include('MNT_SIGNATURE') }
11
11
  end
12
12
 
13
13
  context 'when have custom params' do
14
- let(:params) { { amount: '120.25', order_id: 'FF790ABCD', custom1: 'utm_source' } }
14
+ let(:params) { { amount: '120.25', transaction_id: 'FF790ABCD', custom1: 'utm_source' } }
15
15
 
16
16
  it { is_expected.to eq('https://demo.moneta.ru/assistant.htm?MNT_ID=141290&MNT_CURRENCY_CODE=RUB&MNT_TEST_MODE=1&MNT_AMOUNT=120.25&MNT_TRANSACTION_ID=FF790ABCD&MNT_CUSTOM1=utm_source') }
17
17
  end
18
18
 
19
19
  context 'when use_signature == true' do
20
20
  let(:use_signature) { true }
21
- let(:params) { { amount: '120.25', order_id: 'FF790ABCD' } }
21
+ let(:params) { { amount: '120.25', transaction_id: 'FF790ABCD' } }
22
22
 
23
23
  it { is_expected.to be_include('MNT_SIGNATURE') }
24
24
  end
25
+
26
+ context 'when moneta_id is override' do
27
+ let(:params) { { amount: '120.25', transaction_id: 'FF790ABCD', moneta_id: '54321' } }
28
+
29
+ it { is_expected.to eq('https://demo.moneta.ru/assistant.htm?MNT_ID=54321&MNT_CURRENCY_CODE=RUB&MNT_TEST_MODE=1&MNT_AMOUNT=120.25&MNT_TRANSACTION_ID=FF790ABCD') }
30
+ end
25
31
  end
26
32
  end
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.6
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ssnikolay
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-16 00:00:00.000000000 Z
11
+ date: 2015-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails