cloud_payments 0.0.6 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +11 -8
  3. data/README.md +74 -3
  4. data/bin/release +17 -0
  5. data/cloud_payments.gemspec +6 -6
  6. data/lib/cloud_payments/client.rb +6 -4
  7. data/lib/cloud_payments/config.rb +3 -0
  8. data/lib/cloud_payments/models/on_fail.rb +1 -0
  9. data/lib/cloud_payments/models/on_kassa_receipt.rb +23 -0
  10. data/lib/cloud_payments/models/on_pay.rb +1 -0
  11. data/lib/cloud_payments/models/subscription.rb +1 -1
  12. data/lib/cloud_payments/models/transaction.rb +9 -0
  13. data/lib/cloud_payments/models.rb +1 -0
  14. data/lib/cloud_payments/namespaces/apple_pay.rb +18 -0
  15. data/lib/cloud_payments/namespaces/base.rb +1 -1
  16. data/lib/cloud_payments/namespaces/cards.rb +5 -0
  17. data/lib/cloud_payments/namespaces/kassa.rb +22 -0
  18. data/lib/cloud_payments/namespaces/orders.rb +4 -0
  19. data/lib/cloud_payments/namespaces.rb +11 -1
  20. data/lib/cloud_payments/version.rb +1 -2
  21. data/lib/cloud_payments/webhooks.rb +6 -2
  22. data/lib/cloud_payments.rb +0 -1
  23. data/spec/cloud_payments/models/subscription_spec.rb +0 -1
  24. data/spec/cloud_payments/models/transaction_spec.rb +26 -1
  25. data/spec/cloud_payments/namespaces/apple_pay_spec.rb +21 -0
  26. data/spec/cloud_payments/namespaces/cards_spec.rb +41 -2
  27. data/spec/cloud_payments/namespaces/kassa_spec.rb +43 -0
  28. data/spec/cloud_payments/namespaces/orders_spec.rb +12 -0
  29. data/spec/cloud_payments/namespaces/payments_spec.rb +6 -0
  30. data/spec/cloud_payments/namespaces_spec.rb +1 -1
  31. data/spec/cloud_payments/webhooks_spec.rb +42 -0
  32. data/spec/cloud_payments_spec.rb +24 -5
  33. data/spec/fixtures/apis/cards/post3ds/failed.yml +45 -0
  34. data/spec/fixtures/apis/cards/post3ds/successful.yml +48 -0
  35. data/spec/fixtures/apis/orders/cancel/failed.yml +6 -0
  36. data/spec/fixtures/apis/orders/cancel/successful.yml +6 -0
  37. data/spec/fixtures/apis/payments/get/failed.yml +1 -0
  38. data/spec/fixtures/apis/payments/get/refunded.yml +49 -0
  39. data/spec/fixtures/apis/payments/get/successful.yml +1 -0
  40. data/spec/fixtures/apis/tokens/auth/successful.yml +2 -1
  41. data/spec/fixtures/apis/tokens/charge/successful.yml +2 -1
  42. data/spec/spec_helper.rb +19 -8
  43. metadata +37 -19
  44. data/spec/cloud_payments/client_spec.rb +0 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ed4e88a861a6e0f61c9758ae8db253faf5479e74
4
- data.tar.gz: 26b8c758021f249079c5b00d88e62cdf7bc80327
2
+ SHA256:
3
+ metadata.gz: 18a3af691a696388ee8c524b24e8de18be07b14d45935ed2ddfe7ac66c2f5e04
4
+ data.tar.gz: 9640d2ef9dae3d7ec7048be44c80123ce4ff735059fa0209891d7482affe2131
5
5
  SHA512:
6
- metadata.gz: 1556658db7e02a39c840876f9017218182a853b92fe590fb7ed0ca793a20784b81c917ca959e72b565d8df616ed1354cd91e21f921ac5a82b4cd32be64f76dc2
7
- data.tar.gz: 4a1c1a70e208bc95d3c3bfaf07219309c8e0171912ca0267a18e47667112c8cadf67ae4809ab723348fb1351029d3fd9a8c9bca53e7271b3eb5eaa1cf862abe1
6
+ metadata.gz: 433286122b1d5dd9ed981ed9314f0dbdb21ccc4ccb7db1a3487201211543377ad4441e953125c810bf285a035c8cadac0d17143e141c381ed4a0589cd8b1d823
7
+ data.tar.gz: bd01fc125ddd8606b8570bffb804d72964f1442cb934140c75a39ac2e92861be925b5b997638ff433375af8ff7c71624c9fba1f6de33ffe0c379e6c8e7866956
data/.travis.yml CHANGED
@@ -1,11 +1,14 @@
1
1
  language: ruby
2
+
3
+ rvm:
4
+ - 2.3
5
+ - 2.4
6
+ - 2.5
7
+ - 2.6
8
+ - 2.7
9
+
2
10
  cache: bundler
3
- script: bundle exec rspec
11
+
4
12
  before_install: gem install bundler
5
- rvm:
6
- - '2.2'
7
- - '2.3'
8
- - ruby-head
9
- matrix:
10
- allow_failures:
11
- - rvm: ruby-head
13
+
14
+ script: bundle exec rspec
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # CloudPayments
2
2
 
3
- CloudPayments ruby client (http://cloudpayments.eu/Docs/Integration)
3
+ CloudPayments ruby client (https://developers.cloudpayments.ru/en/)
4
4
 
5
- [![Build Status](https://travis-ci.org/undr/cloud_payments.svg)](https://travis-ci.org/undr/cloud_payments)
5
+ [![Build Status](https://travis-ci.org/platmart/cloud_payments.svg)](https://travis-ci.org/platmart/cloud_payments)
6
6
 
7
7
  ## Installation
8
8
 
@@ -28,6 +28,8 @@ $ gem install cloud_payments
28
28
 
29
29
  ### Configuration
30
30
 
31
+ #### Global configuration
32
+
31
33
  ```ruby
32
34
  CloudPayments.configure do |c|
33
35
  c.host = 'http://localhost:3000' # By default, it is https://api.cloudpayments.ru
@@ -37,6 +39,28 @@ CloudPayments.configure do |c|
37
39
  c.logger = Logger.new('/dev/null') # By default, it writes logs to stdout
38
40
  c.raise_banking_errors = true # By default, it is not raising banking errors
39
41
  end
42
+
43
+ # API client
44
+ CloudPayments.client.payments.cards.charge(...)
45
+
46
+ # Webhooks
47
+ CloudPayments.webhooks.on_pay(...)
48
+ ```
49
+
50
+ #### Local configuration
51
+
52
+ ```ruby
53
+ config = CloudPayments::Config.new do |c|
54
+ # ...
55
+ end
56
+
57
+ # API client
58
+ client = CloudPayments::Client.new(config)
59
+ client.payments.cards.charge(...)
60
+
61
+ # Webhooks
62
+ webhooks = CloudPayments::Webhooks.new(config)
63
+ webhooks.on_pay(...)
40
64
  ```
41
65
 
42
66
  ### Test method
@@ -81,6 +105,7 @@ transaction = CloudPayments.client.payments.cards.charge(
81
105
  # :card_last_four=>"1111",
82
106
  # :card_type=>"Visa",
83
107
  # :card_type_code=>0,
108
+ # :issuer=>"Sberbank of Russia",
84
109
  # :issuer_bank_country=>"RU",
85
110
  # :status=>"Completed",
86
111
  # :status_code=>3,
@@ -95,6 +120,52 @@ transaction.token
95
120
  # => "a4e67841-abb0-42de-a364-d1d8f9f4b3c0"
96
121
  ```
97
122
 
123
+ ## Kassa Receipt
124
+
125
+ CloudPayments Kassa API (https://cloudpayments.ru/docs/api/kassa)
126
+
127
+ ```ruby
128
+ CloudPayments.client.kassa.receipt({
129
+ account_id: "user@example.com",
130
+ customer_receipt: {
131
+ items: [
132
+ {
133
+ amount: "13350.00",
134
+ ean13: nil,
135
+ label: "Good Description",
136
+ price: "13350.00",
137
+ quantity: 1.0,
138
+ vat: nil
139
+ }
140
+ ]
141
+ },
142
+ inn: "7708806666",
143
+ invoice_id: "231312312",
144
+ type: "Income"
145
+ })
146
+ ```
147
+
148
+ ## Apple Pay Start Session
149
+ [Start Apple Pay session](https://developers.cloudpayments.ru/#zapusk-sessii-dlya-oplaty-cherez-apple-pay)
150
+ ```ruby
151
+ CloudPayments.client.apple_pay.start_session({validation_url: "https://apple-pay-gateway-pr-pod2.apple.com/paymentservices/startSession"})
152
+ # => {
153
+ # :message => nil,
154
+ # :model => {
155
+ # :display_name => "example.com,
156
+ # :domain_name => "example.com",
157
+ # :epoch_timestamp => 1594072416294,
158
+ # :expires_at => 1594076016294,
159
+ # :merchant_identifier => "5DCCE3A52CFC3FAF9F4EA8421472E47BC503E03051B04D2ED67A3834386B52F2",
160
+ # :merchant_session_identifier => "SSHDA3C703BD69B45EDB8934E6BFCC159B2B83AAFC02DB625F1F1E3997CCC2FE2CFD11F636558",
161
+ # :nonce => "51c77142",
162
+ # :signature => "30800.....0"
163
+ # },
164
+ # :success => true
165
+ # }
166
+
167
+ ```
168
+
98
169
  ## Webhooks
99
170
 
100
171
  ```ruby
@@ -132,7 +203,7 @@ end
132
203
 
133
204
  ## Contributing
134
205
 
135
- 1. Fork it ( https://github.com/undr/cloud_payments/fork )
206
+ 1. Fork it ( https://github.com/platmart/cloud_payments/fork )
136
207
  2. Create your feature branch (`git checkout -b my-new-feature`)
137
208
  3. Commit your changes (`git commit -am 'Add some feature'`)
138
209
  4. Push to the branch (`git push origin my-new-feature`)
data/bin/release ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env bash
2
+
3
+ VERSION=$1
4
+
5
+ if [ -z $1 ] ; then
6
+ echo "Please provide version number: bin/release 1.0.0" && exit 1;
7
+ fi
8
+
9
+ printf "module CloudPayments\n VERSION = \"$VERSION\"\nend\n" > ./lib/cloud_payments/version.rb
10
+ bundle
11
+ git add Gemfile.lock lib/cloud_payments/version.rb
12
+ git commit -m "Bump version for $VERSION"
13
+ git push
14
+ git tag v$VERSION
15
+ git push --tags
16
+ gem build cloud_payments.gemspec
17
+ gem push "cloud_payments-$VERSION.gem"
@@ -7,11 +7,11 @@ require 'cloud_payments/version'
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'cloud_payments'
9
9
  spec.version = CloudPayments::VERSION
10
- spec.authors = ['undr']
11
- spec.email = ['undr@yandex.ru']
10
+ spec.authors = ['undr', 'kirillplatonov']
11
+ spec.email = ['undr@yandex.ru', 'mail@kirillplatonov.com']
12
12
  spec.summary = %q{CloudPayments ruby client}
13
13
  spec.description = %q{CloudPayments ruby client}
14
- spec.homepage = ''
14
+ spec.homepage = 'https://github.com/platmart/cloud_payments'
15
15
  spec.license = 'MIT'
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0")
@@ -19,10 +19,10 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.add_dependency 'faraday', '~> 0.9.2'
22
+ spec.add_dependency 'faraday', '< 2.0'
23
23
  spec.add_dependency 'multi_json', '~> 1.11'
24
24
  spec.add_dependency 'hashie', '~> 3.4'
25
25
 
26
- spec.add_development_dependency 'rake', '~> 10.0'
27
- spec.add_development_dependency 'rspec', '~> 3.4'
26
+ spec.add_development_dependency 'rake', '~> 13.0'
27
+ spec.add_development_dependency 'rspec', '~> 3.9'
28
28
  end
@@ -10,13 +10,12 @@ module CloudPayments
10
10
 
11
11
  attr_reader :config, :connection
12
12
 
13
- def initialize
14
- @config = CloudPayments.config
13
+ def initialize(config = nil)
14
+ @config = config || CloudPayments.config
15
15
  @connection = build_connection
16
16
  end
17
17
 
18
18
  def perform_request(path, params = nil)
19
- connection.basic_auth(config.public_key, config.secret_key)
20
19
  response = connection.post(path, (params ? convert_to_json(params) : nil), headers)
21
20
 
22
21
  Response.new(response.status, response.body, response.headers).tap do |response|
@@ -45,7 +44,10 @@ module CloudPayments
45
44
  end
46
45
 
47
46
  def build_connection
48
- Faraday::Connection.new(config.host, config.connection_options, &config.connection_block)
47
+ Faraday::Connection.new(config.host, config.connection_options) do |conn|
48
+ conn.request :basic_auth, config.public_key, config.secret_key
49
+ config.connection_block.call(conn) if config.connection_block
50
+ end
49
51
  end
50
52
  end
51
53
  end
@@ -18,6 +18,9 @@ module CloudPayments
18
18
  @connection_options = {}
19
19
  @connection_block = nil
20
20
  @host = 'https://api.cloudpayments.ru'
21
+ if block_given?
22
+ yield self
23
+ end
21
24
  end
22
25
 
23
26
  def logger
@@ -23,6 +23,7 @@ module CloudPayments
23
23
  property :ip_city
24
24
  property :ip_region
25
25
  property :ip_district
26
+ property :issuer
26
27
  property :issuer_bank_country
27
28
  property :description
28
29
  property :metadata, from: :data, default: {}
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+ module CloudPayments
3
+ # @see https://cloudpayments.ru/Docs/Notifications#receipt CloudPayments API
4
+ class OnKassaReceipt < Model
5
+ property :id, required: true
6
+ property :document_number, required: true
7
+ property :session_number, required: true
8
+ property :fiscal_sign, required: true
9
+ property :device_number, required: true
10
+ property :reg_number, required: true
11
+ property :inn, required: true
12
+ property :type, required: true
13
+ property :ofd, required: true
14
+ property :url, required: true
15
+ property :qr_code_url, required: true
16
+ property :amount, transform_with: DecimalTransform, required: true
17
+ property :date_time, transform_with: DateTimeTransform
18
+ property :receipt
19
+ property :invoice_id
20
+ property :transaction_id
21
+ property :account_id
22
+ end
23
+ end
@@ -26,6 +26,7 @@ module CloudPayments
26
26
  property :card_type_code
27
27
  property :card_exp_date
28
28
  property :name
29
+ property :issuer
29
30
  property :issuer_bank_country
30
31
  property :status, required: true
31
32
  property :status_code
@@ -5,7 +5,7 @@ module CloudPayments
5
5
 
6
6
  property :id, required: true
7
7
  property :account_id, required: true
8
- property :description, required: true
8
+ property :description
9
9
  property :email, required: true
10
10
  property :amount, transform_with: DecimalTransform, required: true
11
11
  property :currency, required: true
@@ -36,13 +36,18 @@ module CloudPayments
36
36
  property :card_type_code
37
37
  property :card_exp_date
38
38
  property :name
39
+ property :issuer
39
40
  property :issuer_bank_country
40
41
  property :status, required: true
41
42
  property :status_code
42
43
  property :reason
43
44
  property :reason_code
45
+ property :refunded
44
46
  property :card_holder_message
45
47
  property :token
48
+ property :apple_pay
49
+ property :android_pay
50
+ property :escrow_accumulation_id
46
51
 
47
52
  def required_secure3d?
48
53
  false
@@ -79,5 +84,9 @@ module CloudPayments
79
84
  def declined?
80
85
  status == DECLINED
81
86
  end
87
+
88
+ def refunded?
89
+ refunded
90
+ end
82
91
  end
83
92
  end
@@ -9,3 +9,4 @@ require 'cloud_payments/models/order'
9
9
  require 'cloud_payments/models/on_recurrent'
10
10
  require 'cloud_payments/models/on_pay'
11
11
  require 'cloud_payments/models/on_fail'
12
+ require 'cloud_payments/models/on_kassa_receipt'
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+ module CloudPayments
3
+ module Namespaces
4
+ class ApplePay < Base
5
+ ValidationUrlMissing = Class.new(StandardError)
6
+
7
+ def self.resource_name
8
+ 'applepay'
9
+ end
10
+
11
+ def start_session(attributes)
12
+ validation_url = attributes.fetch(:validation_url) { raise ValidationUrlMissing.new('validation_url is required') }
13
+
14
+ request(:startsession, { "ValidationUrl" => validation_url })
15
+ end
16
+ end
17
+ end
18
+ end
@@ -24,7 +24,7 @@ module CloudPayments
24
24
  protected
25
25
 
26
26
  def api_exceptions
27
- [::Faraday::Error::ConnectionFailed, ::Faraday::Error::TimeoutError, Client::ServerError, Client::GatewayError]
27
+ [::Faraday::ConnectionFailed, ::Faraday::TimeoutError, Client::ServerError, Client::GatewayError]
28
28
  end
29
29
 
30
30
  def resource_path(path = nil)
@@ -12,6 +12,11 @@ module CloudPayments
12
12
  instantiate(response[:model])
13
13
  end
14
14
 
15
+ def post3ds(attributes)
16
+ response = request(:post3ds, attributes)
17
+ instantiate(response[:model])
18
+ end
19
+
15
20
  private
16
21
 
17
22
  def instantiate(model)
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+ module CloudPayments
3
+ module Namespaces
4
+ class Kassa < Base
5
+ InnNotProvided = Class.new(StandardError)
6
+ TypeNotProvided = Class.new(StandardError)
7
+ CustomerReceiptNotProvided = Class.new(StandardError)
8
+
9
+ def self.resource_name
10
+ 'kkt'
11
+ end
12
+
13
+ def receipt(attributes)
14
+ attributes.fetch(:inn) { raise InnNotProvided.new('inn attribute is required') }
15
+ attributes.fetch(:type) { raise TypeNotProvided.new('type attribute is required') }
16
+ attributes.fetch(:customer_receipt) { raise CustomerReceiptNotProvided.new('customer_receipt is required') }
17
+
18
+ request(:receipt, attributes)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -6,6 +6,10 @@ module CloudPayments
6
6
  response = request(:create, attributes)
7
7
  Order.new(response[:model])
8
8
  end
9
+
10
+ def cancel(order_id)
11
+ request(:cancel, id: order_id)[:success]
12
+ end
9
13
  end
10
14
  end
11
15
  end
@@ -5,6 +5,8 @@ require 'cloud_payments/namespaces/tokens'
5
5
  require 'cloud_payments/namespaces/payments'
6
6
  require 'cloud_payments/namespaces/subscriptions'
7
7
  require 'cloud_payments/namespaces/orders'
8
+ require 'cloud_payments/namespaces/kassa'
9
+ require 'cloud_payments/namespaces/apple_pay'
8
10
 
9
11
  module CloudPayments
10
12
  module Namespaces
@@ -12,6 +14,10 @@ module CloudPayments
12
14
  Payments.new(self)
13
15
  end
14
16
 
17
+ def kassa
18
+ Kassa.new(self)
19
+ end
20
+
15
21
  def subscriptions
16
22
  Subscriptions.new(self)
17
23
  end
@@ -20,9 +26,13 @@ module CloudPayments
20
26
  Orders.new(self)
21
27
  end
22
28
 
29
+ def apple_pay
30
+ ApplePay.new(self)
31
+ end
32
+
23
33
  def ping
24
34
  !!(perform_request('/test').body || {})[:success]
25
- rescue ::Faraday::Error::ConnectionFailed, ::Faraday::Error::TimeoutError, CloudPayments::Client::ServerError => e
35
+ rescue ::Faraday::ConnectionFailed, ::Faraday::TimeoutError, CloudPayments::Client::ServerError => e
26
36
  false
27
37
  end
28
38
  end
@@ -1,4 +1,3 @@
1
- # frozen_string_literal: true
2
1
  module CloudPayments
3
- VERSION = '0.0.6'
2
+ VERSION = "1.1.0"
4
3
  end
@@ -8,8 +8,8 @@ module CloudPayments
8
8
 
9
9
  attr_reader :config
10
10
 
11
- def initialize
12
- @config = CloudPayments.config
11
+ def initialize(config = nil)
12
+ @config = config || CloudPayments.config
13
13
  @digest = OpenSSL::Digest.new('sha256')
14
14
  @serializer = Client::Serializer::Base.new(config)
15
15
  end
@@ -23,6 +23,10 @@ module CloudPayments
23
23
  true
24
24
  end
25
25
 
26
+ def kassa_receipt(data)
27
+ OnKassaReceipt.new(@serializer.load(data))
28
+ end
29
+
26
30
  def on_recurrent(data)
27
31
  OnRecurrent.new(@serializer.load(data))
28
32
  end
@@ -3,7 +3,6 @@ require 'date'
3
3
  require 'hashie'
4
4
  require 'faraday'
5
5
  require 'multi_json'
6
- require 'pp'
7
6
  require 'cloud_payments/version'
8
7
  require 'cloud_payments/config'
9
8
  require 'cloud_payments/namespaces'
@@ -54,7 +54,6 @@ describe CloudPayments::Subscription do
54
54
 
55
55
  it_behaves_like :raise_without_attribute, :id
56
56
  it_behaves_like :raise_without_attribute, :account_id
57
- it_behaves_like :raise_without_attribute, :description
58
57
  it_behaves_like :raise_without_attribute, :email
59
58
  it_behaves_like :raise_without_attribute, :amount
60
59
  it_behaves_like :raise_without_attribute, :currency_code
@@ -34,14 +34,17 @@ describe CloudPayments::Transaction do
34
34
  card_type: 'Visa',
35
35
  card_type_code: 0,
36
36
  card_exp_date: '10/17',
37
+ issuer: 'Sberbank of Russia',
37
38
  issuer_bank_country: 'RU',
38
39
  status: 'Completed',
39
40
  status_code: 3,
40
41
  reason: 'Approved',
41
42
  reason_code: 0,
43
+ refunded: false,
42
44
  card_holder_message: 'Payment successful',
43
45
  name: 'CARDHOLDER NAME',
44
- token: 'a4e67841-abb0-42de-a364-d1d8f9f4b3c0'
46
+ token: 'a4e67841-abb0-42de-a364-d1d8f9f4b3c0',
47
+ escrow_accumulation_id: '119d1f05-4fa8-4f35-85b6-09216a5a4fb6'
45
48
  } }
46
49
 
47
50
  specify{ expect(subject.id).to eq(504) }
@@ -72,12 +75,15 @@ describe CloudPayments::Transaction do
72
75
  specify{ expect(subject.card_type).to eq('Visa') }
73
76
  specify{ expect(subject.card_type_code).to eq(0) }
74
77
  specify{ expect(subject.card_exp_date).to eq('10/17') }
78
+ specify{ expect(subject.issuer).to eq('Sberbank of Russia') }
75
79
  specify{ expect(subject.issuer_bank_country).to eq('RU') }
76
80
  specify{ expect(subject.reason).to eq('Approved') }
77
81
  specify{ expect(subject.reason_code).to eq(0) }
78
82
  specify{ expect(subject.card_holder_message).to eq('Payment successful') }
79
83
  specify{ expect(subject.name).to eq('CARDHOLDER NAME') }
80
84
  specify{ expect(subject.token).to eq('a4e67841-abb0-42de-a364-d1d8f9f4b3c0') }
85
+ specify{ expect(subject.refunded).to eq(false) }
86
+ specify{ expect(subject.escrow_accumulation_id).to eq('119d1f05-4fa8-4f35-85b6-09216a5a4fb6') }
81
87
 
82
88
  context 'without any attributes' do
83
89
  let(:attributes){ {} }
@@ -111,9 +117,11 @@ describe CloudPayments::Transaction do
111
117
  it_behaves_like :not_raise_without_attribute, :ip_longitude, :ip_lng
112
118
  it_behaves_like :not_raise_without_attribute, :card_type_code
113
119
  it_behaves_like :not_raise_without_attribute, :card_exp_date
120
+ it_behaves_like :not_raise_without_attribute, :issuer
114
121
  it_behaves_like :not_raise_without_attribute, :issuer_bank_country
115
122
  it_behaves_like :not_raise_without_attribute, :reason
116
123
  it_behaves_like :not_raise_without_attribute, :reason_code
124
+ it_behaves_like :not_raise_without_attribute, :refunded
117
125
  it_behaves_like :not_raise_without_attribute, :card_holder_message
118
126
  it_behaves_like :not_raise_without_attribute, :name
119
127
  it_behaves_like :not_raise_without_attribute, :token
@@ -251,5 +259,22 @@ describe CloudPayments::Transaction do
251
259
  specify{ expect(subject.ip_location).to be_nil }
252
260
  end
253
261
  end
262
+
263
+ describe '#refunded?' do
264
+ context do
265
+ let(:attributes) { { refunded: false } }
266
+ specify { expect(subject.refunded?).to be_falsey }
267
+ end
268
+
269
+ context do
270
+ let(:attributes) { { refunded: true } }
271
+ specify { expect(subject.refunded?).to be_truthy }
272
+ end
273
+
274
+ context do
275
+ let(:attributes) { { refunded: nil } }
276
+ specify { expect(subject.refunded?).to be_falsey }
277
+ end
278
+ end
254
279
  end
255
280
  end
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+ # frozen_string_literal: true
4
+ require 'spec_helper'
5
+
6
+ describe CloudPayments::Namespaces::ApplePay do
7
+ subject{ described_class.new(CloudPayments.client) }
8
+
9
+ describe '#receipt' do
10
+ let(:attributes) do
11
+ {
12
+ validation_url: ''
13
+ }
14
+ end
15
+
16
+ context do
17
+ before{ attributes.delete(:validation_url) }
18
+ specify{ expect{subject.start_session(attributes)}.to raise_error(described_class::ValidationUrlMissing) }
19
+ end
20
+ end
21
+ end
@@ -14,11 +14,11 @@ describe CloudPayments::Namespaces::Cards do
14
14
  card_cryptogram_packet: '01492500008719030128SM'
15
15
  } }
16
16
 
17
- context do
17
+ describe '#charge' do
18
18
  context 'config.raise_banking_errors = false' do
19
19
  before { CloudPayments.config.raise_banking_errors = false }
20
20
 
21
- describe '#charge' do
21
+ context do
22
22
  before{ stub_api_request('cards/charge/successful').perform }
23
23
  specify{ expect(subject.charge(attributes)).to be_instance_of(CloudPayments::Transaction) }
24
24
  specify{ expect(subject.charge(attributes)).not_to be_required_secure3d }
@@ -117,4 +117,43 @@ describe CloudPayments::Namespaces::Cards do
117
117
  end
118
118
  end
119
119
  end
120
+
121
+ describe '#post3ds' do
122
+ let(:attributes){ { transaction_id: 12345, pa_res: 'AQ==' } }
123
+
124
+ context 'config.raise_banking_errors = false' do
125
+ before { CloudPayments.config.raise_banking_errors = false }
126
+
127
+ context do
128
+ before{ stub_api_request('cards/post3ds/successful').perform }
129
+ specify{ expect(subject.post3ds(attributes)).to be_instance_of(CloudPayments::Transaction) }
130
+ specify{ expect(subject.post3ds(attributes)).not_to be_required_secure3d }
131
+ specify{ expect(subject.post3ds(attributes)).to be_completed }
132
+ specify{ expect(subject.post3ds(attributes).id).to eq(12345) }
133
+ end
134
+
135
+ context do
136
+ before{ stub_api_request('cards/post3ds/failed').perform }
137
+ specify{ expect(subject.post3ds(attributes)).to be_instance_of(CloudPayments::Transaction) }
138
+ specify{ expect(subject.post3ds(attributes)).not_to be_required_secure3d }
139
+ specify{ expect(subject.post3ds(attributes)).to be_declined }
140
+ specify{ expect(subject.post3ds(attributes).id).to eq(12345) }
141
+ specify{ expect(subject.post3ds(attributes).reason).to eq('InsufficientFunds') }
142
+ end
143
+ end
144
+
145
+ context 'config.raise_banking_errors = true' do
146
+ before { CloudPayments.config.raise_banking_errors = true }
147
+
148
+ context do
149
+ before{ stub_api_request('cards/post3ds/successful').perform }
150
+ specify{ expect{ subject.post3ds(attributes) }.not_to raise_error }
151
+ end
152
+
153
+ context do
154
+ before{ stub_api_request('cards/post3ds/failed').perform }
155
+ specify{ expect{ subject.post3ds(attributes) }.to raise_error(CloudPayments::Client::GatewayErrors::InsufficientFunds) }
156
+ end
157
+ end
158
+ end
120
159
  end
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+ # frozen_string_literal: true
4
+ require 'spec_helper'
5
+
6
+ describe CloudPayments::Namespaces::Kassa do
7
+ subject{ described_class.new(CloudPayments.client) }
8
+
9
+ describe '#receipt' do
10
+ let(:attributes) do
11
+ {
12
+ inn: '7708806666',
13
+ type: 'Income',
14
+ customer_receipt: {
15
+ items: [
16
+ {
17
+ amount: '13350.00',
18
+ label: 'Good Description',
19
+ price: '13350.00',
20
+ quantity: 1.0,
21
+ vat: 0
22
+ }
23
+ ]
24
+ }
25
+ }
26
+ end
27
+
28
+ context do
29
+ before{ attributes.delete(:inn) }
30
+ specify{ expect{subject.receipt(attributes)}.to raise_error(described_class::InnNotProvided) }
31
+ end
32
+
33
+ context do
34
+ before{ attributes.delete(:type) }
35
+ specify{ expect{subject.receipt(attributes)}.to raise_error(described_class::TypeNotProvided) }
36
+ end
37
+
38
+ context do
39
+ before{ attributes.delete(:customer_receipt) }
40
+ specify{ expect{subject.receipt(attributes)}.to raise_error(described_class::CustomerReceiptNotProvided) }
41
+ end
42
+ end
43
+ end
@@ -42,4 +42,16 @@ describe CloudPayments::Namespaces::Orders do
42
42
  end
43
43
  end
44
44
  end
45
+
46
+ describe '#cancel' do
47
+ context do
48
+ before{ stub_api_request('orders/cancel/successful').perform }
49
+ specify{ expect(subject.cancel('12345')).to be_truthy }
50
+ end
51
+
52
+ context do
53
+ before{ stub_api_request('orders/cancel/failed').perform }
54
+ specify{ expect{ subject.cancel('12345') }.to raise_error(CloudPayments::Client::GatewayError, 'Error message') }
55
+ end
56
+ end
45
57
  end
@@ -123,6 +123,12 @@ describe CloudPayments::Namespaces::Payments do
123
123
  specify{ expect(subject.get(transaction_id).id).to eq(transaction_id) }
124
124
  specify{ expect(subject.get(transaction_id).reason).to eq('Approved') }
125
125
  end
126
+
127
+ context 'transaction is refunded' do
128
+ before{ stub_api_request('payments/get/refunded').perform }
129
+ specify{ expect(subject.get(transaction_id)).to be_completed }
130
+ specify{ expect(subject.get(transaction_id)).to be_refunded }
131
+ end
126
132
  end
127
133
 
128
134
  context 'config.raise_banking_errors = true' do
@@ -34,7 +34,7 @@ describe CloudPayments::Namespaces do
34
34
  end
35
35
 
36
36
  context 'when exception occurs while request' do
37
- before{ stub_api_request('ping/failed').to_raise(::Faraday::Error::ConnectionFailed) }
37
+ before{ stub_api_request('ping/failed').to_raise(::Faraday::ConnectionFailed) }
38
38
  specify{ expect(subject.ping).to be_falsy }
39
39
  end
40
40
 
@@ -227,4 +227,46 @@ describe CloudPayments::Webhooks do
227
227
  specify { expect(subject.failed_transactions).to eq 22 }
228
228
  specify { expect(subject.next_transaction_at).to eq DateTime.parse('2015-11-18 20:29:05') }
229
229
  end
230
+
231
+ describe 'on_kassa_receipt' do
232
+ let(:raw_data) do
233
+ {"Id"=>"sc_a38ca02005d40db7d32b36a0097b0",
234
+ "DocumentNumber"=>"1234",
235
+ "SessionNumber"=>"12345",
236
+ "FiscalSign"=>"signsgin",
237
+ "DeviceNumber"=>"123465",
238
+ "RegNumber"=>"12345",
239
+ "Inn"=>"0",
240
+ "Type"=>"Type",
241
+ "Ofd"=>"Ofd",
242
+ "Url"=>"http://example.com/url/",
243
+ "QrCodeUrl"=>"http://example.com/url",
244
+ "Amount"=>"11.11",
245
+ "DateTime"=>"2015-11-18 20:29:05",
246
+ "Receipt"=>"{}",
247
+ "TransactionId" => "12321123",
248
+ "InvoiceId" => "123123",
249
+ "AccountId" => "3213213"}
250
+ end
251
+
252
+ subject { CloudPayments.webhooks.kassa_receipt(raw_data) }
253
+
254
+ specify { expect(subject.id).to eq "sc_a38ca02005d40db7d32b36a0097b0" }
255
+ specify { expect(subject.document_number).to eq '1234' }
256
+ specify { expect(subject.session_number).to eq '12345' }
257
+ specify { expect(subject.fiscal_sign).to eq 'signsgin' }
258
+ specify { expect(subject.device_number).to eq '123465' }
259
+ specify { expect(subject.reg_number).to eq '12345' }
260
+ specify { expect(subject.inn).to eq '0' }
261
+ specify { expect(subject.type).to eq 'Type' }
262
+ specify { expect(subject.ofd).to eq 'Ofd' }
263
+ specify { expect(subject.url).to eq 'http://example.com/url/' }
264
+ specify { expect(subject.qr_code_url).to eq 'http://example.com/url' }
265
+ specify { expect(subject.amount).to eq 11.11 }
266
+ specify { expect(subject.date_time).to eq DateTime.parse('2015-11-18 20:29:05') }
267
+ specify { expect(subject.receipt).to eq '{}' }
268
+ specify { expect(subject.transaction_id).to eq '12321123' }
269
+ specify { expect(subject.invoice_id).to eq '123123' }
270
+ specify { expect(subject.account_id).to eq '3213213' }
271
+ end
230
272
  end
@@ -3,13 +3,32 @@ require 'spec_helper'
3
3
 
4
4
  describe CloudPayments do
5
5
  describe '#config=' do
6
- before{ @old_config = CloudPayments.config }
7
- after{ CloudPayments.config = @old_config }
8
-
9
6
  specify{ expect{ CloudPayments.config = 'config' }.to change{ CloudPayments.config }.to('config') }
10
7
  end
11
8
 
12
- describe '#config' do
13
- specify{ expect(CloudPayments.config).to be_instance_of(CloudPayments::Config) }
9
+ it 'supports global configuration' do
10
+ CloudPayments.config.secret_key = "OLD_KEY"
11
+
12
+ CloudPayments.configure do |c|
13
+ c.secret_key = "NEW_KEY"
14
+ end
15
+
16
+ expect(CloudPayments.config.secret_key).to eq "NEW_KEY"
17
+ expect(CloudPayments.client.config.secret_key).to eq "NEW_KEY"
18
+ end
19
+
20
+ it 'supports local configuration' do
21
+ CloudPayments.config.secret_key = "OLD_KEY"
22
+
23
+ config = CloudPayments::Config.new do |c|
24
+ c.secret_key = "NEW_KEY"
25
+ end
26
+ client = CloudPayments::Client.new(config)
27
+ webhooks = CloudPayments::Webhooks.new(config)
28
+
29
+ expect(CloudPayments.config.secret_key).to eq "OLD_KEY"
30
+ expect(config.secret_key).to eq "NEW_KEY"
31
+ expect(client.config.secret_key).to eq "NEW_KEY"
32
+ expect(webhooks.config.secret_key).to eq "NEW_KEY"
14
33
  end
15
34
  end
@@ -0,0 +1,45 @@
1
+ ---
2
+ :request:
3
+ :url: '/payments/cards/post3ds'
4
+ :body: '{"TransactionId":12345,"PaRes":"AQ=="}'
5
+ :response:
6
+ :body: >
7
+ {
8
+ "Model": {
9
+ "TransactionId": 12345,
10
+ "Amount": 10.0,
11
+ "Currency": "RUB",
12
+ "CurrencyCode": 0,
13
+ "PaymentAmount": 10.0,
14
+ "PaymentCurrency": "RUB",
15
+ "PaymentCurrencyCode": 0,
16
+ "InvoiceId": "1234567",
17
+ "AccountId": "user_x",
18
+ "Email": null,
19
+ "Description": "Payment for goods on example.com",
20
+ "JsonData": null,
21
+ "CreatedDate": "\/Date(1401718880000)\/",
22
+ "CreatedDateIso":"2014-08-09T11:49:41",
23
+ "TestMode": true,
24
+ "IpAddress": "195.91.194.13",
25
+ "IpCountry": "RU",
26
+ "IpCity": "Ufa",
27
+ "IpRegion": "Bashkortostan Republic",
28
+ "IpDistrict": "Volga Federal District",
29
+ "IpLatitude": 54.7355,
30
+ "IpLongitude": 55.991982,
31
+ "CardFirstSix": "411111",
32
+ "CardLastFour": "1111",
33
+ "CardType": "Visa",
34
+ "CardTypeCode": 0,
35
+ "IssuerBankCountry": "RU",
36
+ "Status": "Declined",
37
+ "StatusCode": 5,
38
+ "Reason": "InsufficientFunds",
39
+ "ReasonCode": 5051,
40
+ "CardHolderMessage": "Insufficient funds on account",
41
+ "Name": "CARDHOLDER NAME"
42
+ },
43
+ "Success": false,
44
+ "Message": null
45
+ }
@@ -0,0 +1,48 @@
1
+ ---
2
+ :request:
3
+ :url: '/payments/cards/post3ds'
4
+ :body: '{"TransactionId":12345,"PaRes":"AQ=="}'
5
+ :response:
6
+ :body: >
7
+ {
8
+ "Model":{
9
+ "TransactionId":12345,
10
+ "Amount":10.0,
11
+ "Currency":"RUB",
12
+ "CurrencyCode":0,
13
+ "InvoiceId":"1234567",
14
+ "AccountId":"user_x",
15
+ "Email":null,
16
+ "Description":"Payment for goods on example.com",
17
+ "JsonData":null,
18
+ "CreatedDate":"\/Date(1401718880000)\/",
19
+ "CreatedDateIso":"2014-08-09T11:49:41",
20
+ "AuthDate":"\/Date(1401733880523)\/",
21
+ "AuthDateIso":"2014-08-09T11:49:42",
22
+ "ConfirmDate":"\/Date(1401733880523)\/",
23
+ "ConfirmDateIso":"2014-08-09T11:49:42",
24
+ "AuthCode":"123456",
25
+ "TestMode":true,
26
+ "IpAddress":"195.91.194.13",
27
+ "IpCountry":"RU",
28
+ "IpCity":"Ufa",
29
+ "IpRegion":"Bashkortostan Republic",
30
+ "IpDistrict":"Volga Federal District",
31
+ "IpLatitude":54.7355,
32
+ "IpLongitude":55.991982,
33
+ "CardFirstSix":"411111",
34
+ "CardLastFour":"1111",
35
+ "CardType":"Visa",
36
+ "CardTypeCode":0,
37
+ "IssuerBankCountry":"RU",
38
+ "Status":"Completed",
39
+ "StatusCode":3,
40
+ "Reason":"Approved",
41
+ "ReasonCode":0,
42
+ "CardHolderMessage":"Payment successful",
43
+ "Name":"CARDHOLDER NAME",
44
+ "Token":"a4e67841-abb0-42de-a364-d1d8f9f4b3c0"
45
+ },
46
+ "Success":true,
47
+ "Message": null
48
+ }
@@ -0,0 +1,6 @@
1
+ ---
2
+ :request:
3
+ :url: '/orders/cancel'
4
+ :body: '{"Id":"12345"}'
5
+ :response:
6
+ :body: '{"Success":false,"Message":"Error message"}'
@@ -0,0 +1,6 @@
1
+ ---
2
+ :request:
3
+ :url: '/orders/cancel'
4
+ :body: '{"Id":"12345"}'
5
+ :response:
6
+ :body: '{"Success":true,"Message":null}'
@@ -37,6 +37,7 @@
37
37
  "StatusCode": 5,
38
38
  "Reason": "InsufficientFunds",
39
39
  "ReasonCode": 5051,
40
+ "Refunded": false,
40
41
  "CardHolderMessage": "Insufficient funds on account",
41
42
  "Name": "CARDHOLDER NAME"
42
43
  },
@@ -0,0 +1,49 @@
1
+ ---
2
+ :request:
3
+ :url: '/payments/get'
4
+ :body: '{"TransactionId":12345}'
5
+ :response:
6
+ :body: >
7
+ {
8
+ "Model":{
9
+ "TransactionId":12345,
10
+ "Amount":10.0,
11
+ "Currency":"RUB",
12
+ "CurrencyCode":0,
13
+ "InvoiceId":"1234567",
14
+ "AccountId":"user_x",
15
+ "Email":null,
16
+ "Description":"Payment for goods on example.com",
17
+ "JsonData":null,
18
+ "CreatedDate":"\/Date(1401718880000)\/",
19
+ "CreatedDateIso":"2014-08-09T11:49:41",
20
+ "AuthDate":"\/Date(1401733880523)\/",
21
+ "AuthDateIso":"2014-08-09T11:49:42",
22
+ "ConfirmDate":"\/Date(1401733880523)\/",
23
+ "ConfirmDateIso":"2014-08-09T11:49:42",
24
+ "AuthCode":"123456",
25
+ "TestMode":true,
26
+ "IpAddress":"195.91.194.13",
27
+ "IpCountry":"RU",
28
+ "IpCity":"Ufa",
29
+ "IpRegion":"Bashkortostan Republic",
30
+ "IpDistrict":"Volga Federal District",
31
+ "IpLatitude":54.7355,
32
+ "IpLongitude":55.991982,
33
+ "CardFirstSix":"411111",
34
+ "CardLastFour":"1111",
35
+ "CardType":"Visa",
36
+ "CardTypeCode":0,
37
+ "IssuerBankCountry":"RU",
38
+ "Status":"Completed",
39
+ "StatusCode":3,
40
+ "Reason":"Approved",
41
+ "ReasonCode":0,
42
+ "Refunded": true,
43
+ "CardHolderMessage":"Payment successful",
44
+ "Name":"CARDHOLDER NAME",
45
+ "Token":"a4e67841-abb0-42de-a364-d1d8f9f4b3c0"
46
+ },
47
+ "Success":true,
48
+ "Message": null
49
+ }
@@ -39,6 +39,7 @@
39
39
  "StatusCode":3,
40
40
  "Reason":"Approved",
41
41
  "ReasonCode":0,
42
+ "Refunded": false,
42
43
  "CardHolderMessage":"Payment successful",
43
44
  "Name":"CARDHOLDER NAME",
44
45
  "Token":"a4e67841-abb0-42de-a364-d1d8f9f4b3c0"
@@ -41,7 +41,8 @@
41
41
  "ReasonCode":0,
42
42
  "CardHolderMessage":"Payment successful",
43
43
  "Name":"CARDHOLDER NAME",
44
- "Token":"a4e67841-abb0-42de-a364-d1d8f9f4b3c0"
44
+ "Token":"a4e67841-abb0-42de-a364-d1d8f9f4b3c0",
45
+ "EscrowAccumulationId": "119d1f05-4fa8-4f35-85b6-09216a5a4fb6"
45
46
  },
46
47
  "Success":true,
47
48
  "Message": null
@@ -41,7 +41,8 @@
41
41
  "ReasonCode":0,
42
42
  "CardHolderMessage":"Payment successful",
43
43
  "Name":"CARDHOLDER NAME",
44
- "Token":"a4e67841-abb0-42de-a364-d1d8f9f4b3c0"
44
+ "Token":"a4e67841-abb0-42de-a364-d1d8f9f4b3c0",
45
+ "EscrowAccumulationId": "119d1f05-4fa8-4f35-85b6-09216a5a4fb6"
45
46
  },
46
47
  "Success":true,
47
48
  "Message": null
data/spec/spec_helper.rb CHANGED
@@ -11,15 +11,26 @@ WebMock.disable_net_connect!
11
11
 
12
12
  Dir["./spec/support/**/*.rb"].each { |f| require f }
13
13
 
14
- CloudPayments.configure do |c|
15
- c.public_key = 'user'
16
- c.secret_key = 'pass'
17
- c.host = 'http://localhost:9292'
18
- c.log = false
19
- # c.raise_banking_errors = true
20
- end
21
-
22
14
  RSpec.configure do |config|
23
15
  config.mock_with :rspec
24
16
  config.include CloudPayments::RSpec::Helpers
17
+
18
+ # these params are used in stubs, in basic auth
19
+ # see webmock_stub in spec/support/helpers.rb
20
+ def default_config
21
+ CloudPayments::Config.new do |c|
22
+ c.public_key = 'user'
23
+ c.secret_key = 'pass'
24
+ c.host = 'http://localhost:9292'
25
+ c.log = false
26
+ # c.raise_banking_errors = true
27
+ end
28
+ end
29
+
30
+ CloudPayments.config = default_config
31
+
32
+ config.after :each do
33
+ CloudPayments.config = default_config
34
+ CloudPayments.client = CloudPayments::Client.new
35
+ end
25
36
  end
metadata CHANGED
@@ -1,29 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloud_payments
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - undr
8
- autorequire:
8
+ - kirillplatonov
9
+ autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2017-08-09 00:00:00.000000000 Z
12
+ date: 2021-12-05 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: faraday
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
- - - "~>"
18
+ - - "<"
18
19
  - !ruby/object:Gem::Version
19
- version: 0.9.2
20
+ version: '2.0'
20
21
  type: :runtime
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: 0.9.2
27
+ version: '2.0'
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: multi_json
29
30
  requirement: !ruby/object:Gem::Requirement
@@ -58,32 +59,34 @@ dependencies:
58
59
  requirements:
59
60
  - - "~>"
60
61
  - !ruby/object:Gem::Version
61
- version: '10.0'
62
+ version: '13.0'
62
63
  type: :development
63
64
  prerelease: false
64
65
  version_requirements: !ruby/object:Gem::Requirement
65
66
  requirements:
66
67
  - - "~>"
67
68
  - !ruby/object:Gem::Version
68
- version: '10.0'
69
+ version: '13.0'
69
70
  - !ruby/object:Gem::Dependency
70
71
  name: rspec
71
72
  requirement: !ruby/object:Gem::Requirement
72
73
  requirements:
73
74
  - - "~>"
74
75
  - !ruby/object:Gem::Version
75
- version: '3.4'
76
+ version: '3.9'
76
77
  type: :development
77
78
  prerelease: false
78
79
  version_requirements: !ruby/object:Gem::Requirement
79
80
  requirements:
80
81
  - - "~>"
81
82
  - !ruby/object:Gem::Version
82
- version: '3.4'
83
+ version: '3.9'
83
84
  description: CloudPayments ruby client
84
85
  email:
85
86
  - undr@yandex.ru
86
- executables: []
87
+ - mail@kirillplatonov.com
88
+ executables:
89
+ - release
87
90
  extensions: []
88
91
  extra_rdoc_files: []
89
92
  files:
@@ -94,6 +97,7 @@ files:
94
97
  - LICENSE.txt
95
98
  - README.md
96
99
  - Rakefile
100
+ - bin/release
97
101
  - cloud_payments.gemspec
98
102
  - config.ru
99
103
  - lib/cloud_payments.rb
@@ -109,6 +113,7 @@ files:
109
113
  - lib/cloud_payments/models/like_subscription.rb
110
114
  - lib/cloud_payments/models/model.rb
111
115
  - lib/cloud_payments/models/on_fail.rb
116
+ - lib/cloud_payments/models/on_kassa_receipt.rb
112
117
  - lib/cloud_payments/models/on_pay.rb
113
118
  - lib/cloud_payments/models/on_recurrent.rb
114
119
  - lib/cloud_payments/models/order.rb
@@ -116,8 +121,10 @@ files:
116
121
  - lib/cloud_payments/models/subscription.rb
117
122
  - lib/cloud_payments/models/transaction.rb
118
123
  - lib/cloud_payments/namespaces.rb
124
+ - lib/cloud_payments/namespaces/apple_pay.rb
119
125
  - lib/cloud_payments/namespaces/base.rb
120
126
  - lib/cloud_payments/namespaces/cards.rb
127
+ - lib/cloud_payments/namespaces/kassa.rb
121
128
  - lib/cloud_payments/namespaces/orders.rb
122
129
  - lib/cloud_payments/namespaces/payments.rb
123
130
  - lib/cloud_payments/namespaces/subscriptions.rb
@@ -126,13 +133,14 @@ files:
126
133
  - lib/cloud_payments/webhooks.rb
127
134
  - spec/cloud_payments/client/response_spec.rb
128
135
  - spec/cloud_payments/client/serializer/multi_json_spec.rb
129
- - spec/cloud_payments/client_spec.rb
130
136
  - spec/cloud_payments/models/order_spec.rb
131
137
  - spec/cloud_payments/models/secure3d_spec.rb
132
138
  - spec/cloud_payments/models/subscription_spec.rb
133
139
  - spec/cloud_payments/models/transaction_spec.rb
140
+ - spec/cloud_payments/namespaces/apple_pay_spec.rb
134
141
  - spec/cloud_payments/namespaces/base_spec.rb
135
142
  - spec/cloud_payments/namespaces/cards_spec.rb
143
+ - spec/cloud_payments/namespaces/kassa_spec.rb
136
144
  - spec/cloud_payments/namespaces/orders_spec.rb
137
145
  - spec/cloud_payments/namespaces/payments_spec.rb
138
146
  - spec/cloud_payments/namespaces/subscriptions_spec.rb
@@ -146,6 +154,10 @@ files:
146
154
  - spec/fixtures/apis/cards/charge/failed.yml
147
155
  - spec/fixtures/apis/cards/charge/secure3d.yml
148
156
  - spec/fixtures/apis/cards/charge/successful.yml
157
+ - spec/fixtures/apis/cards/post3ds/failed.yml
158
+ - spec/fixtures/apis/cards/post3ds/successful.yml
159
+ - spec/fixtures/apis/orders/cancel/failed.yml
160
+ - spec/fixtures/apis/orders/cancel/successful.yml
149
161
  - spec/fixtures/apis/orders/create/successful.yml
150
162
  - spec/fixtures/apis/payments/confirm/failed.yml
151
163
  - spec/fixtures/apis/payments/confirm/failed_with_message.yml
@@ -155,6 +167,7 @@ files:
155
167
  - spec/fixtures/apis/payments/find/successful.yml
156
168
  - spec/fixtures/apis/payments/get/failed.yml
157
169
  - spec/fixtures/apis/payments/get/failed_with_message.yml
170
+ - spec/fixtures/apis/payments/get/refunded.yml
158
171
  - spec/fixtures/apis/payments/get/successful.yml
159
172
  - spec/fixtures/apis/payments/post3ds/failed.yml
160
173
  - spec/fixtures/apis/payments/post3ds/successful.yml
@@ -178,11 +191,11 @@ files:
178
191
  - spec/spec_helper.rb
179
192
  - spec/support/examples.rb
180
193
  - spec/support/helpers.rb
181
- homepage: ''
194
+ homepage: https://github.com/platmart/cloud_payments
182
195
  licenses:
183
196
  - MIT
184
197
  metadata: {}
185
- post_install_message:
198
+ post_install_message:
186
199
  rdoc_options: []
187
200
  require_paths:
188
201
  - lib
@@ -197,21 +210,21 @@ required_rubygems_version: !ruby/object:Gem::Requirement
197
210
  - !ruby/object:Gem::Version
198
211
  version: '0'
199
212
  requirements: []
200
- rubyforge_project:
201
- rubygems_version: 2.6.11
202
- signing_key:
213
+ rubygems_version: 3.2.22
214
+ signing_key:
203
215
  specification_version: 4
204
216
  summary: CloudPayments ruby client
205
217
  test_files:
206
218
  - spec/cloud_payments/client/response_spec.rb
207
219
  - spec/cloud_payments/client/serializer/multi_json_spec.rb
208
- - spec/cloud_payments/client_spec.rb
209
220
  - spec/cloud_payments/models/order_spec.rb
210
221
  - spec/cloud_payments/models/secure3d_spec.rb
211
222
  - spec/cloud_payments/models/subscription_spec.rb
212
223
  - spec/cloud_payments/models/transaction_spec.rb
224
+ - spec/cloud_payments/namespaces/apple_pay_spec.rb
213
225
  - spec/cloud_payments/namespaces/base_spec.rb
214
226
  - spec/cloud_payments/namespaces/cards_spec.rb
227
+ - spec/cloud_payments/namespaces/kassa_spec.rb
215
228
  - spec/cloud_payments/namespaces/orders_spec.rb
216
229
  - spec/cloud_payments/namespaces/payments_spec.rb
217
230
  - spec/cloud_payments/namespaces/subscriptions_spec.rb
@@ -225,6 +238,10 @@ test_files:
225
238
  - spec/fixtures/apis/cards/charge/failed.yml
226
239
  - spec/fixtures/apis/cards/charge/secure3d.yml
227
240
  - spec/fixtures/apis/cards/charge/successful.yml
241
+ - spec/fixtures/apis/cards/post3ds/failed.yml
242
+ - spec/fixtures/apis/cards/post3ds/successful.yml
243
+ - spec/fixtures/apis/orders/cancel/failed.yml
244
+ - spec/fixtures/apis/orders/cancel/successful.yml
228
245
  - spec/fixtures/apis/orders/create/successful.yml
229
246
  - spec/fixtures/apis/payments/confirm/failed.yml
230
247
  - spec/fixtures/apis/payments/confirm/failed_with_message.yml
@@ -234,6 +251,7 @@ test_files:
234
251
  - spec/fixtures/apis/payments/find/successful.yml
235
252
  - spec/fixtures/apis/payments/get/failed.yml
236
253
  - spec/fixtures/apis/payments/get/failed_with_message.yml
254
+ - spec/fixtures/apis/payments/get/refunded.yml
237
255
  - spec/fixtures/apis/payments/get/successful.yml
238
256
  - spec/fixtures/apis/payments/post3ds/failed.yml
239
257
  - spec/fixtures/apis/payments/post3ds/successful.yml
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
-
4
- describe CloudPayments::Client do
5
-
6
- end