nexio_activemerchant 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bdff69e02a5eb6fe1375f42e86dac022aa561861d4c2f8191d1a873c01c0883e
4
- data.tar.gz: 29dc4a0b999a16d10187c652cb29aa994fe4842771af4fe15933dcf54feb8cc2
3
+ metadata.gz: aed1e22c05eb961b28f55d0576219532c0b4077ed15f86bf39e33a45f59a42de
4
+ data.tar.gz: c9729141380772a443e1aca9bed8c88ce76c206dd46b834a9342499f242a3ea7
5
5
  SHA512:
6
- metadata.gz: 02f2accd48380497c5f74a274d95ee4cbdff355d99867b561fafbdd6f26ca1ac2e9e2f9ff8432430dcd99554ce0fc791e439ca48ede54e9f2777b414a2dca9fa
7
- data.tar.gz: 9ade7bb542af8389190b715b70c1e06512bbd06a828b697964aba05c136fa262e87dcabbec67210133962bcbba7a966064e181f2fadec1da041b9b8129f10ccb
6
+ metadata.gz: 2f8bb6a1e812b6f303a269908f997fd50ce308b219b956dceb74aadeb0f1b03d4f5b319d89af7125552d231b4ae24ae1b3624c6328a8fb0f608d367267f030e0
7
+ data.tar.gz: 88a4222587961c5a8d7d10c15c104aa2a75132e9425e8de7d3be64b9c0264c16fb5625ad0cea1dd8db52b58f7ddcfb7715a7ac044e06643eef36a9a640685440
data/.rubocop.yml CHANGED
@@ -11,6 +11,10 @@
11
11
 
12
12
  Gemspec/RequiredRubyVersion:
13
13
  Enabled: false
14
+ Metrics/AbcSize:
15
+ Enabled: false
16
+ Metrics/CyclomaticComplexity:
17
+ Enabled: false
14
18
  Metrics/ClassLength:
15
19
  Enabled: false
16
20
  Metrics/MethodLength:
@@ -19,3 +23,5 @@ Lint/AssignmentInCondition:
19
23
  Enabled: false
20
24
  Style/GuardClause:
21
25
  Enabled: false
26
+ Style/Documentation:
27
+ Enabled: false
@@ -3,7 +3,7 @@
3
3
  module ActiveMerchant
4
4
  module Billing
5
5
  class EncryptedNexioCard < CreditCard
6
- ALLOWED_CARD_BRANDS = %w(amex discover jcb mastercard visa).freeze
6
+ ALLOWED_CARD_BRANDS = %w[amex discover jcb mastercard visa].freeze
7
7
 
8
8
  attr_accessor :encrypted_number, :own_form, :one_time_token
9
9
 
@@ -18,6 +18,7 @@ module ActiveMerchant
18
18
  add_order_data(post, options)
19
19
  post[:customerRedirectUrl] = options[:callback_url] if options[:callback_url].present?
20
20
  post[:processingOptions][:saveRecurringToken] = true if options[:save_token]
21
+ post[:isAuthOnly] = true if options[:is_auth_only]
21
22
  resp = commit('token', post)
22
23
  return unless resp.success?
23
24
 
@@ -32,15 +33,16 @@ module ActiveMerchant
32
33
  def purchase(money, payment, options = {})
33
34
  post = build_payload(options)
34
35
  add_invoice(post, money, options)
35
- if payment.is_a?(Spree::PaymentSource)
36
- post[:apm] = { token: payment.gateway_payment_profile_id }
37
- else
38
- post[:apm] = { token: payment }
39
- end
36
+ post[:apm] = { token: payment.is_a?(Spree::PaymentSource) ? payment.gateway_payment_profile_id : payment }
40
37
  add_order_data(post, options)
38
+ post[:isAuthOnly] = true if options[:is_auth_only]
41
39
  commit('process', post)
42
40
  end
43
41
 
42
+ def authorize(money, payment, options = {})
43
+ purchase(money, payment, options.merge(is_auth_only: true))
44
+ end
45
+
44
46
  private
45
47
 
46
48
  def map_urls(list)
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'json'
4
+ require 'nexio_activemerchant/transaction'
4
5
 
5
6
  module ActiveMerchant
6
7
  module Billing
@@ -43,7 +44,7 @@ module ActiveMerchant
43
44
  transcript
44
45
  end
45
46
 
46
- def set_webhooks(data)
47
+ def setup_webhooks(data)
47
48
  post = { merchantId: options[:merchant_id].to_s }
48
49
  if data.is_a?(String)
49
50
  post[:webhooks] = {
@@ -65,6 +66,13 @@ module ActiveMerchant
65
66
  commit('secret', { merchantId: options[:merchant_id].to_s }).params['secret']
66
67
  end
67
68
 
69
+ def get_transaction(id)
70
+ data = parse(ssl_get(action_url("/transaction/v3/paymentId/#{id}"), base_headers))
71
+ ::NexioActivemerchant::Transaction.new(data)
72
+ rescue ResponseError
73
+ nil
74
+ end
75
+
68
76
  private
69
77
 
70
78
  def build_payload(params)
@@ -176,11 +184,11 @@ module ActiveMerchant
176
184
 
177
185
  def commit_action_url(action, _parameters)
178
186
  path = case action
179
- when 'webhook' then '/webhook/v3/config'
180
- when 'secret' then '/webhook/v3/secret'
181
- else
182
- "#{self.class.base_path}/#{action}"
183
- end
187
+ when 'webhook' then '/webhook/v3/config'
188
+ when 'secret' then '/webhook/v3/secret'
189
+ else
190
+ "#{self.class.base_path}/#{action}"
191
+ end
184
192
  action_url(path)
185
193
  end
186
194
 
@@ -189,12 +197,14 @@ module ActiveMerchant
189
197
  end
190
198
 
191
199
  def base_headers(custom = {})
192
- { Authorization: "Basic #{options[:auth_token]}" }
200
+ { Authorization: "Basic #{options[:auth_token]}" }.merge(custom)
193
201
  end
194
202
 
203
+ SUCCESS_PROCESS_STATUSES = %w[authOnlyPending authorizedPending pending authOnly settled].freeze
204
+
195
205
  def response_status(action, payload)
196
206
  case action
197
- when 'process' then %w(authOnlyPending authorizedPending pending authOnly settled).include?(payload['transactionStatus'])
207
+ when 'process' then SUCCESS_PROCESS_STATUSES.include?(payload['transactionStatus'])
198
208
  else
199
209
  true
200
210
  end
@@ -13,7 +13,7 @@ module ActiveMerchant
13
13
 
14
14
  def generate_token(options = {})
15
15
  post = build_payload(options)
16
- post[:data][:allowedCardTypes] = %w(amex discover jcb mastercard visa)
16
+ post[:data][:allowedCardTypes] = %w[amex discover jcb mastercard visa]
17
17
  add_currency(post, options)
18
18
  add_order_data(post, options)
19
19
  add_card_data(post, options)
@@ -55,11 +55,6 @@ module ActiveMerchant
55
55
  resp.params.fetch('token', {}).fetch('token', nil)
56
56
  end
57
57
 
58
- def get_transaction(id)
59
- parse(ssl_get(action_url("/transaction/v3/paymentId/#{id}"), base_headers))
60
- rescue ResponseError => e
61
- end
62
-
63
58
  private
64
59
 
65
60
  def add_payment(post, payment, options)
@@ -71,7 +66,9 @@ module ActiveMerchant
71
66
  }.merge!(post.fetch(:card, {}))
72
67
  end
73
68
  post[:processingOptions][:saveCardToken] = options[:save_credit_card] if options.key?(:save_credit_card)
74
- post[:processingOptions][:customerRedirectUrl] = options[:three_d_callback_url] if options[:three_d_callback_url].present?
69
+ if options[:three_d_callback_url].present?
70
+ post[:processingOptions][:customerRedirectUrl] = options[:three_d_callback_url]
71
+ end
75
72
  post[:processingOptions][:check3ds] = options[:three_d_secure]
76
73
  post[:processingOptions][:paymentType] = options[:payment_type] if options[:payment_type].present?
77
74
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NexioActivemerchant
4
+ Transaction = Struct.new(:data) do
5
+ def status
6
+ data['transactionStatus']
7
+ end
8
+
9
+ def amount
10
+ data['amount'].to_d
11
+ end
12
+ end
13
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NexioActivemerchant
4
- VERSION = '0.3.0'
4
+ VERSION = '0.3.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nexio_activemerchant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Whitespectre
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-09 00:00:00.000000000 Z
11
+ date: 2021-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemerchant
@@ -61,6 +61,7 @@ files:
61
61
  - lib/active_merchant/billing/gateways/nexio_base_gateway.rb
62
62
  - lib/active_merchant/billing/gateways/nexio_gateway.rb
63
63
  - lib/nexio_activemerchant.rb
64
+ - lib/nexio_activemerchant/transaction.rb
64
65
  - lib/nexio_activemerchant/version.rb
65
66
  - nexio_activemerchant.gemspec
66
67
  homepage: https://github.com/whitespectre/nexio_activemerchant