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
         
     |