payanyway 1.2.6 → 2.0.0

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