alfabank 0.2.0 → 1.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 +4 -4
- data/.gitignore +5 -1
- data/.travis.yml +3 -5
- data/LICENSE.txt +1 -1
- data/README.md +12 -19
- data/Rakefile +1 -6
- data/alfabank.gemspec +17 -19
- data/bin/console +5 -5
- data/lib/alfabank.rb +6 -23
- data/lib/alfabank/client.rb +31 -0
- data/lib/alfabank/request.rb +38 -0
- data/lib/alfabank/response.rb +15 -0
- data/lib/alfabank/version.rb +1 -1
- metadata +22 -46
- data/.rspec +0 -2
- data/lib/alfabank/api.rb +0 -4
- data/lib/alfabank/api/base.rb +0 -33
- data/lib/alfabank/api/payment_order_binding.rb +0 -29
- data/lib/alfabank/api/registration.rb +0 -50
- data/lib/alfabank/api/status.rb +0 -41
- data/lib/alfabank/configuration.rb +0 -23
- data/lib/alfabank/currency.rb +0 -5
- data/lib/generators/alfabank/USAGE +0 -10
- data/lib/generators/alfabank/alfabank_generator.rb +0 -22
- data/lib/generators/alfabank/templates/config/initializers/alfabank.rb +0 -13
- data/lib/generators/alfabank/templates/create_table_migration.rb +0 -17
- data/lib/generators/alfabank/templates/model.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f6ad3336a0939c00753f584fe9fa8102b477c96ef62e15944ed337e19f22517b
|
4
|
+
data.tar.gz: 64da11be6351507a206273486f876d8add0cad3f94baa4cad8103730748ec6e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 17a8e97513a81a810b82f92cdcf0a285d1267af2a50e2eeec4d7dfb7f789a54049d56b68be77caa152b5f08ed32e9465dc63213eb9ca13c66e716009cabddc5a
|
7
|
+
data.tar.gz: d46572d06bc579a2a8bf1c84c4b14846d769add0a0be0439b5aa2b250cfa618cec594c8873b9c0971401f46b4bb3fef92608ccb66b3abdbb9b5c4ffcbc2acbb1
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# Alfabank
|
2
|
+
|
2
3
|
[](https://travis-ci.org/mendab1e/alfabank) [](https://badge.fury.io/rb/alfabank)
|
3
4
|
|
4
5
|
This gem provides support for the API of [Alfabank acquiring gateway](https://engine.paymentgate.ru/ecommerce/).
|
@@ -21,35 +22,27 @@ Or install it yourself as:
|
|
21
22
|
|
22
23
|
## Usage
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
$ rails g alfabank Payment
|
27
|
-
|
28
|
-
Run migration
|
29
|
-
|
30
|
-
$ rake db:migrate
|
31
|
-
|
32
|
-
Set credentials and other options in `config/initializers/alfabank.rb`
|
33
|
-
|
34
|
-
* Use `#register` to register a new order and obtain a payment form url.
|
25
|
+
Configure the gem with the credentials provided by the bank. If you are using Ruby on Rails, you should do that in an initializer.
|
35
26
|
|
36
|
-
|
37
|
-
|
38
|
-
|
27
|
+
```ruby
|
28
|
+
# config/initializers/alfabank.rb
|
29
|
+
Alfabank.configure do |config|
|
30
|
+
config.userName = Rails.application.credentials.dig(:alfabank, :userName)
|
31
|
+
config.password = Rails.application.credentials.dig(:alfabank, :password)
|
32
|
+
config.environment = Rails.application.credentials.dig(:alfabank, :environment) # 'production' or 'test'
|
33
|
+
end
|
34
|
+
```
|
39
35
|
|
40
36
|
## Development
|
41
37
|
|
42
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake
|
38
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
43
39
|
|
44
40
|
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`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
45
41
|
|
46
|
-
|
47
42
|
## Contributing
|
48
43
|
|
49
44
|
Bug reports and pull requests are welcome on GitHub at https://github.com/mendab1e/alfabank.
|
50
45
|
|
51
|
-
|
52
46
|
## License
|
53
47
|
|
54
|
-
The gem is available as open source under the terms of the [MIT License](
|
55
|
-
|
48
|
+
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/Rakefile
CHANGED
data/alfabank.gemspec
CHANGED
@@ -1,28 +1,26 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require 'alfabank/version'
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name
|
8
|
-
spec.version
|
9
|
-
spec.authors
|
10
|
-
spec.email
|
6
|
+
spec.name = 'alfabank'
|
7
|
+
spec.version = Alfabank::VERSION
|
8
|
+
spec.authors = ['Timur Yanberdin', 'Dan Kim']
|
9
|
+
spec.email = ['yanberdint@gmail.com']
|
11
10
|
|
12
|
-
spec.summary
|
13
|
-
spec.homepage
|
14
|
-
spec.license
|
11
|
+
spec.summary = 'Unofficial alfabank payment gateway gem'
|
12
|
+
spec.homepage = 'https://github.com/mendab1e/alfabank'
|
13
|
+
spec.license = 'MIT'
|
15
14
|
|
16
|
-
spec.files
|
17
|
-
spec.bindir
|
18
|
-
spec.executables
|
19
|
-
spec.require_paths = [
|
15
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
16
|
+
spec.bindir = 'exe'
|
17
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
18
|
+
spec.require_paths = ['lib']
|
20
19
|
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency "webmock", "~> 1.22"
|
25
|
-
spec.add_development_dependency "vcr", "~> 3.0"
|
20
|
+
spec.add_development_dependency 'bundler', '~> 1.17'
|
21
|
+
spec.add_development_dependency 'rake', '~> 12.3'
|
22
|
+
spec.add_development_dependency 'vcr', '~> 4.0'
|
26
23
|
|
27
|
-
spec.add_dependency
|
24
|
+
spec.add_dependency 'activesupport', '>= 5'
|
25
|
+
spec.add_dependency 'httparty', '~> 0.16'
|
28
26
|
end
|
data/bin/console
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'alfabank'
|
5
5
|
|
6
6
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
8
8
|
|
9
9
|
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require
|
10
|
+
# require 'pry'
|
11
11
|
# Pry.start
|
12
12
|
|
13
|
-
require
|
14
|
-
IRB.start
|
13
|
+
require 'irb'
|
14
|
+
IRB.start(__FILE__)
|
data/lib/alfabank.rb
CHANGED
@@ -1,26 +1,9 @@
|
|
1
|
-
require
|
2
|
-
require "alfabank/currency"
|
3
|
-
require "alfabank/api"
|
4
|
-
require "alfabank/configuration"
|
1
|
+
require 'active_support'
|
5
2
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
end
|
10
|
-
|
11
|
-
def check_status(use_binding: false)
|
12
|
-
Api::Status.new(self).process(use_binding: use_binding)
|
13
|
-
end
|
14
|
-
|
15
|
-
def payment_order_binding(binding_id)
|
16
|
-
Api::PaymentOrderBinding.new(self).process(binding_id)
|
17
|
-
end
|
3
|
+
require 'alfabank/client'
|
4
|
+
require 'alfabank/request'
|
5
|
+
require 'alfabank/response'
|
18
6
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
def setup(&block)
|
23
|
-
yield Configuration
|
24
|
-
end
|
25
|
-
end
|
7
|
+
module Alfabank
|
8
|
+
include ActiveSupport::Configurable
|
26
9
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Alfabank
|
2
|
+
class Client
|
3
|
+
# https://web.rbsuat.com/ab/swagger/swagger.html#/register/registerOrderUsingPOST_7
|
4
|
+
def self.register(order_number:, amount:, return_url:, options: {})
|
5
|
+
params = options.merge(
|
6
|
+
orderNumber: order_number,
|
7
|
+
amount: amount,
|
8
|
+
returnUrl: return_url
|
9
|
+
)
|
10
|
+
Alfabank::Request.new('register.do', params).perform
|
11
|
+
end
|
12
|
+
|
13
|
+
# https://web.rbsuat.com/ab/swagger/swagger.html#/status/getOrderStatusExtendedUsingPOST_1
|
14
|
+
def self.status(order_id: nil, order_number: nil)
|
15
|
+
raise ArgumentError if order_id.nil? && order_number.nil?
|
16
|
+
|
17
|
+
params = { orderId: order_id, orderNumber: order_number }.compact
|
18
|
+
Alfabank::Request.new('getOrderStatusExtended.do', params).perform
|
19
|
+
end
|
20
|
+
|
21
|
+
# https://pay.alfabank.ru/ecommerce/instructions/merchantManual/pages/index/rest.html#zapros_provedenija_platezha_po_svjazke_rest_
|
22
|
+
def self.payment_order_binding(md_order:, binding_id:, ip:, options: {})
|
23
|
+
params = options.merge(
|
24
|
+
mdOrder: md_order,
|
25
|
+
binding_id: bindingId,
|
26
|
+
ip: ip
|
27
|
+
)
|
28
|
+
Alfabank::Request.new('paymentOrderBinding.do', params).perform
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
|
3
|
+
module Alfabank
|
4
|
+
class Request
|
5
|
+
BASE_URL = 'https://engine.paymentgate.ru/payment/rest/'
|
6
|
+
TEST_BASE_URL = 'https://web.rbsuat.com/ab/rest/'
|
7
|
+
|
8
|
+
def initialize(method, params)
|
9
|
+
@method = method
|
10
|
+
@params = default_params.merge(params)
|
11
|
+
end
|
12
|
+
|
13
|
+
def perform
|
14
|
+
request = HTTParty.post(url, query: @params, format: :json)
|
15
|
+
request.parsed_response
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def default_params
|
21
|
+
{
|
22
|
+
currency: Alfabank.config.currency,
|
23
|
+
language: Alfabank.config.language,
|
24
|
+
password: Alfabank.config.password,
|
25
|
+
returnUrl: Alfabank.config.return_url,
|
26
|
+
userName: Alfabank.config.userName
|
27
|
+
}.compact
|
28
|
+
end
|
29
|
+
|
30
|
+
def url
|
31
|
+
if Alfabank.config.environment.to_s == 'production'
|
32
|
+
BASE_URL + @method
|
33
|
+
else
|
34
|
+
TEST_BASE_URL + @method
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/alfabank/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alfabank
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Timur Yanberdin
|
8
|
+
- Dan Kim
|
8
9
|
autorequire:
|
9
10
|
bindir: exe
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2019-08-20 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: bundler
|
@@ -16,84 +17,70 @@ dependencies:
|
|
16
17
|
requirements:
|
17
18
|
- - "~>"
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
20
|
+
version: '1.17'
|
20
21
|
type: :development
|
21
22
|
prerelease: false
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
23
24
|
requirements:
|
24
25
|
- - "~>"
|
25
26
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
27
|
+
version: '1.17'
|
27
28
|
- !ruby/object:Gem::Dependency
|
28
29
|
name: rake
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
30
31
|
requirements:
|
31
32
|
- - "~>"
|
32
33
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
34
|
+
version: '12.3'
|
34
35
|
type: :development
|
35
36
|
prerelease: false
|
36
37
|
version_requirements: !ruby/object:Gem::Requirement
|
37
38
|
requirements:
|
38
39
|
- - "~>"
|
39
40
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
41
|
+
version: '12.3'
|
41
42
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '3.0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '3.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: webmock
|
43
|
+
name: vcr
|
57
44
|
requirement: !ruby/object:Gem::Requirement
|
58
45
|
requirements:
|
59
46
|
- - "~>"
|
60
47
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
48
|
+
version: '4.0'
|
62
49
|
type: :development
|
63
50
|
prerelease: false
|
64
51
|
version_requirements: !ruby/object:Gem::Requirement
|
65
52
|
requirements:
|
66
53
|
- - "~>"
|
67
54
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
55
|
+
version: '4.0'
|
69
56
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
57
|
+
name: activesupport
|
71
58
|
requirement: !ruby/object:Gem::Requirement
|
72
59
|
requirements:
|
73
|
-
- - "
|
60
|
+
- - ">="
|
74
61
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
76
|
-
type: :
|
62
|
+
version: '5'
|
63
|
+
type: :runtime
|
77
64
|
prerelease: false
|
78
65
|
version_requirements: !ruby/object:Gem::Requirement
|
79
66
|
requirements:
|
80
|
-
- - "
|
67
|
+
- - ">="
|
81
68
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
69
|
+
version: '5'
|
83
70
|
- !ruby/object:Gem::Dependency
|
84
71
|
name: httparty
|
85
72
|
requirement: !ruby/object:Gem::Requirement
|
86
73
|
requirements:
|
87
74
|
- - "~>"
|
88
75
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0.
|
76
|
+
version: '0.16'
|
90
77
|
type: :runtime
|
91
78
|
prerelease: false
|
92
79
|
version_requirements: !ruby/object:Gem::Requirement
|
93
80
|
requirements:
|
94
81
|
- - "~>"
|
95
82
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0.
|
83
|
+
version: '0.16'
|
97
84
|
description:
|
98
85
|
email:
|
99
86
|
- yanberdint@gmail.com
|
@@ -102,7 +89,6 @@ extensions: []
|
|
102
89
|
extra_rdoc_files: []
|
103
90
|
files:
|
104
91
|
- ".gitignore"
|
105
|
-
- ".rspec"
|
106
92
|
- ".travis.yml"
|
107
93
|
- Gemfile
|
108
94
|
- LICENSE.txt
|
@@ -112,19 +98,10 @@ files:
|
|
112
98
|
- bin/console
|
113
99
|
- bin/setup
|
114
100
|
- lib/alfabank.rb
|
115
|
-
- lib/alfabank/
|
116
|
-
- lib/alfabank/
|
117
|
-
- lib/alfabank/
|
118
|
-
- lib/alfabank/api/registration.rb
|
119
|
-
- lib/alfabank/api/status.rb
|
120
|
-
- lib/alfabank/configuration.rb
|
121
|
-
- lib/alfabank/currency.rb
|
101
|
+
- lib/alfabank/client.rb
|
102
|
+
- lib/alfabank/request.rb
|
103
|
+
- lib/alfabank/response.rb
|
122
104
|
- lib/alfabank/version.rb
|
123
|
-
- lib/generators/alfabank/USAGE
|
124
|
-
- lib/generators/alfabank/alfabank_generator.rb
|
125
|
-
- lib/generators/alfabank/templates/config/initializers/alfabank.rb
|
126
|
-
- lib/generators/alfabank/templates/create_table_migration.rb
|
127
|
-
- lib/generators/alfabank/templates/model.rb
|
128
105
|
homepage: https://github.com/mendab1e/alfabank
|
129
106
|
licenses:
|
130
107
|
- MIT
|
@@ -144,8 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
144
121
|
- !ruby/object:Gem::Version
|
145
122
|
version: '0'
|
146
123
|
requirements: []
|
147
|
-
|
148
|
-
rubygems_version: 2.7.3
|
124
|
+
rubygems_version: 3.0.3
|
149
125
|
signing_key:
|
150
126
|
specification_version: 4
|
151
127
|
summary: Unofficial alfabank payment gateway gem
|
data/.rspec
DELETED
data/lib/alfabank/api.rb
DELETED
data/lib/alfabank/api/base.rb
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'httparty'
|
2
|
-
|
3
|
-
module Alfabank::Api
|
4
|
-
class Base
|
5
|
-
attr_reader :payment, :use_binding
|
6
|
-
|
7
|
-
def initialize(payment)
|
8
|
-
@payment = payment
|
9
|
-
end
|
10
|
-
|
11
|
-
private
|
12
|
-
|
13
|
-
def make_request
|
14
|
-
HTTParty.post(url, body: generate_params, format: :json)
|
15
|
-
end
|
16
|
-
|
17
|
-
def generate_params
|
18
|
-
fail NotImplementedError, "this method should be overridden"
|
19
|
-
end
|
20
|
-
|
21
|
-
def url
|
22
|
-
Alfabank::Configuration.mode == :production ? self.class::URL : self.class::TEST_URL
|
23
|
-
end
|
24
|
-
|
25
|
-
def credentials
|
26
|
-
if use_binding
|
27
|
-
Alfabank::Configuration.binding_credentials
|
28
|
-
else
|
29
|
-
Alfabank::Configuration.common_credentials
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
module Alfabank::Api
|
2
|
-
class PaymentOrderBinding < Base
|
3
|
-
TEST_URL = 'https://web.rbsuat.com/ab/rest/paymentOrderBinding.do'
|
4
|
-
URL = "https://engine.paymentgate.ru/payment/rest/paymentOrderBinding.do"
|
5
|
-
|
6
|
-
def process(binding_id)
|
7
|
-
fail 'alfa_order_id is nil' if payment.alfa_order_id.nil?
|
8
|
-
@binding_id = binding_id
|
9
|
-
|
10
|
-
process_response(make_request.parsed_response)
|
11
|
-
end
|
12
|
-
|
13
|
-
private
|
14
|
-
|
15
|
-
def process_response(response)
|
16
|
-
response
|
17
|
-
end
|
18
|
-
|
19
|
-
def generate_params
|
20
|
-
params = {
|
21
|
-
userName: Alfabank::Configuration.binding_username,
|
22
|
-
password: Alfabank::Configuration.binding_password,
|
23
|
-
bindingId: @binding_id,
|
24
|
-
mdOrder: payment.alfa_order_id
|
25
|
-
}
|
26
|
-
params.map { |k, v| "#{k}=#{v}" }.join('&')
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
module Alfabank::Api
|
2
|
-
class Registration < Base
|
3
|
-
TEST_URL = 'https://web.rbsuat.com/ab/rest/register.do'
|
4
|
-
URL = "https://engine.paymentgate.ru/payment/rest/register.do"
|
5
|
-
|
6
|
-
def process(use_binding: false)
|
7
|
-
return {url: payment.alfa_form_url} if payment.alfa_order_id
|
8
|
-
@use_binding = use_binding
|
9
|
-
|
10
|
-
process_response(make_request.parsed_response)
|
11
|
-
end
|
12
|
-
|
13
|
-
private
|
14
|
-
|
15
|
-
def process_response(response)
|
16
|
-
if response.has_key?("orderId")
|
17
|
-
set_data_from_response(response)
|
18
|
-
{url: payment.alfa_form_url}
|
19
|
-
else
|
20
|
-
{error: response['errorMessage']}
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def generate_params
|
25
|
-
params = credentials.merge(
|
26
|
-
description: payment.description,
|
27
|
-
language: Alfabank::Configuration.language,
|
28
|
-
orderNumber: order_number,
|
29
|
-
amount: payment.price * 100,
|
30
|
-
currency: Alfabank::Configuration.currency,
|
31
|
-
clientId: payment.user_id,
|
32
|
-
returnUrl: Alfabank::Configuration.return_url
|
33
|
-
)
|
34
|
-
|
35
|
-
params.map { |k, v| "#{k}=#{v}" }.join('&')
|
36
|
-
end
|
37
|
-
|
38
|
-
def set_data_from_response(response)
|
39
|
-
payment.update_attributes(
|
40
|
-
alfa_order_id: response["orderId"],
|
41
|
-
alfa_form_url: response["formUrl"]
|
42
|
-
)
|
43
|
-
end
|
44
|
-
|
45
|
-
def order_number
|
46
|
-
number = payment.to_order_number rescue payment.id
|
47
|
-
"#{Alfabank::Configuration.order_number_prefix}#{number}"
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
data/lib/alfabank/api/status.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
module Alfabank::Api
|
2
|
-
class Status < Base
|
3
|
-
TEST_URL = 'https://web.rbsuat.com/ab/rest/getOrderStatus.do'
|
4
|
-
URL = "https://engine.paymentgate.ru/payment/rest/getOrderStatus.do"
|
5
|
-
PAID = 2
|
6
|
-
|
7
|
-
def process(use_binding: false)
|
8
|
-
@use_binding = use_binding
|
9
|
-
|
10
|
-
response = make_request.parsed_response
|
11
|
-
process_response(response)
|
12
|
-
|
13
|
-
{
|
14
|
-
order_status: response["OrderStatus"].to_i,
|
15
|
-
binding_id: response["bindingId"],
|
16
|
-
card_number: response["Pan"],
|
17
|
-
error_code: response["ErrorCode"].to_i,
|
18
|
-
error_message: response["ErrorMessage"]
|
19
|
-
}
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
def process_response(response)
|
25
|
-
return unless response["OrderStatus"].to_i == PAID
|
26
|
-
|
27
|
-
payment.paid = true
|
28
|
-
payment.card_number = response["Pan"] if payment.respond_to?(:card_number)
|
29
|
-
if payment.respond_to?(:binding_id)
|
30
|
-
payment.binding_id = response["bindingId"]
|
31
|
-
end
|
32
|
-
payment.save(validate: false)
|
33
|
-
end
|
34
|
-
|
35
|
-
def generate_params
|
36
|
-
credentials.merge(orderId: payment.alfa_order_id).map do |k, v|
|
37
|
-
"#{k}=#{v}"
|
38
|
-
end.join('&')
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module Alfabank
|
2
|
-
class Configuration
|
3
|
-
class << self
|
4
|
-
attr_accessor :username, :password, :language, :return_url
|
5
|
-
attr_accessor :currency, :order_number_prefix, :mode
|
6
|
-
attr_accessor :binding_username, :binding_password
|
7
|
-
|
8
|
-
def binding_credentials
|
9
|
-
{
|
10
|
-
userName: binding_username,
|
11
|
-
password: binding_password
|
12
|
-
}
|
13
|
-
end
|
14
|
-
|
15
|
-
def common_credentials
|
16
|
-
{
|
17
|
-
userName: username,
|
18
|
-
password: password
|
19
|
-
}
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
data/lib/alfabank/currency.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'rails/generators/active_record'
|
2
|
-
|
3
|
-
class AlfabankGenerator < Rails::Generators::NamedBase
|
4
|
-
include Rails::Generators::Migration
|
5
|
-
source_root File.expand_path('../templates', __FILE__)
|
6
|
-
|
7
|
-
def generate_initializer
|
8
|
-
template "config/initializers/alfabank.rb"
|
9
|
-
end
|
10
|
-
|
11
|
-
def generate_migration
|
12
|
-
migration_template("create_table_migration.rb", "db/migrate/create_#{table_name}.rb")
|
13
|
-
end
|
14
|
-
|
15
|
-
def generate_model
|
16
|
-
template "model.rb", "app/models/#{file_name}.rb"
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.next_migration_number(dirname)
|
20
|
-
ActiveRecord::Generators::Base.next_migration_number(dirname)
|
21
|
-
end
|
22
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
Alfabank.setup do |config|
|
2
|
-
config.username = 'username'
|
3
|
-
config.password = 'password'
|
4
|
-
config.language = 'ru'
|
5
|
-
config.return_url = 'finish.html'
|
6
|
-
config.currency = Alfabank::Currency::RUB
|
7
|
-
config.order_number_prefix = 'payment-'
|
8
|
-
config.binding_username = 'binding_username'
|
9
|
-
config.binding_password = 'binding_password'
|
10
|
-
config.mode = :test # :production
|
11
|
-
end
|
12
|
-
|
13
|
-
Alfabank.logger = Rails.logger
|
@@ -1,17 +0,0 @@
|
|
1
|
-
class Create<%= table_name.camelize %> < ActiveRecord::Migration
|
2
|
-
def change
|
3
|
-
create_table :<%= table_name %> do |t|
|
4
|
-
t.integer :price, null: false
|
5
|
-
t.string :alfa_order_id
|
6
|
-
t.string :alfa_form_url
|
7
|
-
t.boolean :paid
|
8
|
-
t.string :description
|
9
|
-
t.integer :user_id
|
10
|
-
|
11
|
-
t.timestamps null: false
|
12
|
-
end
|
13
|
-
|
14
|
-
add_index :<%= table_name %>, :alfa_order_id
|
15
|
-
add_index :<%= table_name %>, :user_id
|
16
|
-
end
|
17
|
-
end
|