rails-gp-webpay 0.1.1 → 0.2

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: 68c5ca63691f25cc1393da75ba8d9dc4c6017cbb2afb30390b172c315c6aa2f8
4
- data.tar.gz: 01116c56a2f03dca5d85c751e161cbbb12b88bc82753492edf0a68122c3ed1ee
3
+ metadata.gz: 57cea3f8cb422bc2d6855683efe5d39130a19359d621df38e21358310218a0c9
4
+ data.tar.gz: 1286c8ab428ef6b841a0be0e25e250efbe48671e6010a041e51081ae64e77f3b
5
5
  SHA512:
6
- metadata.gz: 1bc34b6adf6f06b1501a194b115ee5d424f35444b3d578fba4e7c4f1aaf0a613f817a105763867dba0e2313df73e02b2cb47c0805260f6b76416c33e06b17a8b
7
- data.tar.gz: 4e4ba67b3332391b60ffe0e7f428562f495cc9a0602523c947b243fe81bcf671011ac4551740d5a9622112da963816c58445113eb0279c178cec98f2edeed154
6
+ metadata.gz: 3f375e6bb1f7ab747ee4c2287c3609209dd5f3302991bebb5e5f7caa5356c3ef8468e8b1d94634681a6301b107ca487db9eba8f40fde4da4ec2cf7a1c5d750d4
7
+ data.tar.gz: 35f1973debfd2cd53c7516dd790cdc2498f2cdcc20bc5a1231fa4a07d87e6a2a7be49441e70b89da43da95485ff7513522d6453ad4053e81f44856cb47850699
@@ -1,5 +1,5 @@
1
1
  class GpWebpayController < GpWebpay.config.parent_controller.constantize
2
- skip_before_action :verify_authenticity_token if defined?(verify_authenticity_token)
2
+ skip_before_action :verify_authenticity_token if defined?(:verify_authenticity_token)
3
3
  prepend_before_action :set_external_order_number
4
4
  prepend_before_action :validate_gpwebpay_response
5
5
  prepend_before_action :set_gpwebpay_response
data/changelog.md CHANGED
@@ -1,4 +1,7 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2
4
+ Add spec helpers
5
+
3
6
  ## 0.1
4
7
  Init
@@ -9,15 +9,17 @@
9
9
 
10
10
  module GpWebpay
11
11
  module Http
12
- class CreateOrder < BaseSignedRequest
13
- def initialize(attributes, locale, merchant_number: nil, url_attributes: {})
14
- super(attributes, locale, 'CREATE_ORDER', merchant_number: merchant_number, url_attributes: url_attributes)
15
- end
12
+ module Services
13
+ class CreateOrder < BaseSignedRequest
14
+ def initialize(attributes, locale, merchant_number: nil, url_attributes: {})
15
+ super(attributes, locale, 'CREATE_ORDER', merchant_number: merchant_number, url_attributes: url_attributes)
16
+ end
16
17
 
17
- protected
18
+ protected
18
19
 
19
- def callback_url
20
- GpWebpay::Engine.routes.url_helpers.gp_webpay_orders_path({ merchant_number: config.merchant_number, locale: locale }.merge(url_attributes))
20
+ def callback_url
21
+ GpWebpay::Engine.routes.url_helpers.gp_webpay_orders_url({ merchant_number: config.merchant_number, locale: locale }.merge(url_attributes))
22
+ end
21
23
  end
22
24
  end
23
25
  end
@@ -0,0 +1,20 @@
1
+ ##
2
+ # Service object creates request data for GP Webpay CARD_VERIFICATION operation.
3
+
4
+ module GpWebpay
5
+ module Http
6
+ module Services
7
+ class VerifyCard < BaseSignedRequest
8
+ def initialize(attributes, locale, merchant_number: nil, url_attributes: {})
9
+ super(attributes, locale, 'CARD_VERIFICATION', merchant_number: merchant_number, url_attributes: url_attributes)
10
+ end
11
+
12
+ protected
13
+
14
+ def callback_url
15
+ GpWebpay::Engine.routes.url_helpers.gp_webpay_cards_url({ merchant_number: config.merchant_number, locale: locale }.merge(url_attributes))
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,102 @@
1
+ require 'savon/mock/spec_helper'
2
+
3
+ module GpWebpay
4
+ module SpecHelper
5
+ class Interface
6
+ include Savon::SpecHelper
7
+ include RSpec::Mocks::ExampleMethods
8
+
9
+ def params_with_digest(params, merchant_number = :default)
10
+ config = GpWebpay.config[merchant_number] || GpWebpay.config.default
11
+ params.merge(
12
+ 'DIGEST' => GpWebpay::OpensslSecurity.generate_digest(config, params.values.join('|'))
13
+ )
14
+ end
15
+
16
+ def params_with_both_digests(params, merchant_number = :default)
17
+ config = GpWebpay.config[merchant_number] || GpWebpay.config.default
18
+ params.merge(
19
+ 'DIGEST' => GpWebpay::OpensslSecurity.generate_digest(config, params.values.join('|')),
20
+ 'DIGEST1' => GpWebpay::OpensslSecurity.generate_digest(config, "#{params.values.join('|')}|#{config.merchant_number}")
21
+ )
22
+ end
23
+
24
+ def stub_card_token(token, status: 'VERIFIED', success: true, valid: true)
25
+ allow(GpWebpay::Ws::Services::GetTokenStatus)
26
+ .to receive(:call).with(hash_including(token_data: token, message_id: anything))
27
+ .and_return(instance_double(GpWebpay::Ws::WsResponse, valid?: valid, success?: success, status: status))
28
+ end
29
+
30
+ def stub_master_payment_status(payment_number, status: 'OK', success: true, valid: true)
31
+ allow(GpWebpay::Ws::Services::GetMasterPaymentStatus)
32
+ .to receive(:call).with(hash_including(payment_number: payment_number, message_id: anything))
33
+ .and_return(instance_double(GpWebpay::Ws::WsResponse, valid?: valid, success?: success, status: status))
34
+ end
35
+
36
+ def stub_payment_status(payment_number, status: 'VERIFIED', sub_status: 'SETTLED', success: true, valid: true)
37
+ allow(GpWebpay::Ws::Services::GetPaymentStatus)
38
+ .to receive(:call).with(hash_including(payment_number: payment_number, message_id: anything))
39
+ .and_return(instance_double(GpWebpay::Ws::WsResponse, valid?: valid, success?: success, status: status,
40
+ params: { sub_status: sub_status }))
41
+ end
42
+
43
+ def stub_usage_based_payment(attributes, valid: true, success: true, status: '', result_text: 'OK', response_token_data: nil)
44
+ allow(GpWebpay::Ws::Services::ProcessUsageBasedPayment)
45
+ .to receive(:call).with(
46
+ hash_including(
47
+ {
48
+ message_id: anything,
49
+ payment_number: anything,
50
+ order_number: anything,
51
+ currency_code: anything,
52
+ capture_flag: '1'
53
+ }.merge(attributes)
54
+ )
55
+ ).and_return(instance_double(GpWebpay::Ws::WsResponse,
56
+ valid?: valid, success?: success, status: status, result_text: result_text,
57
+ pr_code: success ? '0' : '123', sr_code: success ? '0' : '4',
58
+ params: { token_data: response_token_data || attributes[:token_data] }))
59
+ end
60
+
61
+ def stub_token_revoke(token, valid: true, success: true, status: 'REVOKED', result_text: 'OK')
62
+ allow(GpWebpay::Ws::Services::ProcessTokenRevoke)
63
+ .to receive(:call).with(
64
+ hash_including({ message_id: anything }.merge(token_data: token))
65
+ ).and_return(instance_double(GpWebpay::Ws::WsResponse,
66
+ valid?: valid, success?: success, status: status, result_text: result_text,
67
+ pr_code: success ? '0' : '123', sr_code: success ? '0' : '4'))
68
+ end
69
+
70
+ def stub_refund_payment(attributes, valid: true, success: true, status: '', result_text: 'OK')
71
+ allow(GpWebpay::Ws::Services::ProcessRefundPayment)
72
+ .to receive(:call).with(
73
+ hash_including({ message_id: anything }.merge(attributes))
74
+ ).and_return(instance_double(GpWebpay::Ws::WsResponse,
75
+ valid?: valid, success?: success, status: status, result_text: result_text,
76
+ pr_code: success ? '0' : '123', sr_code: success ? '0' : '4'))
77
+ end
78
+
79
+ def stub_capture_reverse(attributes, valid: true, success: true, status: '', result_text: 'OK')
80
+ allow(GpWebpay::Ws::Services::ProcessCaptureReverse)
81
+ .to receive(:call).with(
82
+ hash_including({ message_id: anything }.merge(attributes))
83
+ ).and_return(instance_double(GpWebpay::Ws::WsResponse,
84
+ valid?: valid, success?: success, status: status, result_text: result_text,
85
+ pr_code: success ? '0' : '123', sr_code: success ? '0' : '4'))
86
+ end
87
+
88
+ def stub_cancel_capture(attributes, valid: true, success: true, status: '', result_text: 'OK')
89
+ allow(GpWebpay::Ws::Services::ProcessCancelCapture)
90
+ .to receive(:call).with(
91
+ hash_including({ message_id: anything }.merge(attributes))
92
+ ).and_return(instance_double(GpWebpay::Ws::WsResponse,
93
+ valid?: valid, success?: success, status: status, result_text: result_text,
94
+ pr_code: success ? '0' : '123', sr_code: success ? '0' : '4'))
95
+ end
96
+ end
97
+
98
+ def gp_webpay
99
+ @gp_webpay ||= Interface.new
100
+ end
101
+ end
102
+ end
@@ -1,3 +1,3 @@
1
1
  module GpWebpay
2
- VERSION = '0.1.1'.freeze
2
+ VERSION = '0.2'.freeze
3
3
  end
@@ -11,7 +11,7 @@
11
11
  #
12
12
  # @param [Hash] attributes for GP Webpay
13
13
  #
14
- # @return [GpwebpayWsResponse] response value object
14
+ # @return [GpWebpay::Ws::WsResponse] response value object
15
15
 
16
16
  module GpWebpay
17
17
  module Ws
@@ -5,7 +5,7 @@
5
5
  #
6
6
  # @param [Hash] attributes for GP Webpay
7
7
  #
8
- # @return [GpwebpayWsResponse] response value object
8
+ # @return [GpWebpay::Ws::WsResponse] response value object
9
9
 
10
10
  module GpWebpay
11
11
  module Ws
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # @param [Hash] attributes for GP Webpay
5
5
  #
6
- # @return [GpwebpayWsResponse] response value object
6
+ # @return [GpWebpay::Ws::WsResponse] response value object
7
7
 
8
8
  module GpWebpay
9
9
  module Ws
@@ -5,7 +5,7 @@
5
5
  #
6
6
  # @param [Hash] attributes for GP Webpay
7
7
  #
8
- # @return [GpwebpayWsResponse] response value object
8
+ # @return [GpWebpay::Ws::WsResponse] response value object
9
9
 
10
10
  module GpWebpay
11
11
  module Ws
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # @param [Hash] attributes for GP Webpay
6
6
  #
7
- # @return [GpwebpayWsResponse] response value object
7
+ # @return [GpWebpay::Ws::WsResponse] response value object
8
8
 
9
9
  module GpWebpay
10
10
  module Ws
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # @param [Hash] attributes for GP Webpay
6
6
  #
7
- # @return [GpwebpayWsResponse] response value object
7
+ # @return [GpWebpay::Ws::WsResponse] response value object
8
8
 
9
9
  module GpWebpay
10
10
  module Ws
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # @param [Hash] attributes for GP Webpay
6
6
  #
7
- # @return [GpwebpayWsResponse] response value object
7
+ # @return [GpWebpay::Ws::WsResponse] response value object
8
8
 
9
9
  module GpWebpay
10
10
  module Ws
@@ -16,6 +16,14 @@ module GpWebpay
16
16
  RESPONSE_ENTITY_NAME = :card_on_file_payment_response
17
17
  SERVICE_EXCEPTION = :card_on_file_payment_service_exception
18
18
 
19
+ def initialize(attributes, merchant_number: :default)
20
+ config = GpWebpay.config[merchant_number] || GpWebpay.config.default
21
+ merged_attributes = {
22
+ return_url: GpWebpay::Engine.routes.url_helpers.gp_webpay_orders_url({ merchant_number: config.merchant_number })
23
+ }.merge(attributes)
24
+ super(merged_attributes, merchant_number: merchant_number)
25
+ end
26
+
19
27
  def rescue_from_soap(exception)
20
28
  response = WsResponse.from_fault_error(exception.to_hash, self.class::SERVICE_EXCEPTION, config.merchant_number)
21
29
 
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # @param [Hash] attributes for GP Webpay
6
6
  #
7
- # @return [GpwebpayWsResponse] response value object
7
+ # @return [GpWebpay::Ws::WsResponse] response value object
8
8
 
9
9
  module GpWebpay
10
10
  module Ws
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # @param [Hash] attributes for GP Webpay
6
6
  #
7
- # @return [GpwebpayWsResponse] response value object
7
+ # @return [GpWebpay::Ws::WsResponse] response value object
8
8
 
9
9
  module GpWebpay
10
10
  module Ws
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # @param [Hash] attributes for GP Webpay
6
6
  #
7
- # @return [GpwebpayWsResponse] response value object
7
+ # @return [GpWebpay::Ws::WsResponse] response value object
8
8
 
9
9
  module GpWebpay
10
10
  module Ws
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # @param [Hash] attributes for GP Webpay
6
6
  #
7
- # @return [GpwebpayWsResponse] response value object
7
+ # @return [GpWebpay::Ws::WsResponse] response value object
8
8
 
9
9
  module GpWebpay
10
10
  module Ws
@@ -16,9 +16,8 @@ module GpWebpay
16
16
  RESPONSE_ENTITY_NAME = :token_payment_response
17
17
  SERVICE_EXCEPTION = :payment_service_exception
18
18
 
19
- def initialize(attributes)
20
- super
21
- @attributes = attributes.except(:return_url)
19
+ def initialize(attributes, merchant_number: :default)
20
+ super(attributes.except(:return_url), merchant_number: merchant_number)
22
21
  end
23
22
  end
24
23
  end
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # @param [Hash] attributes for GP Webpay
6
6
  #
7
- # @return [GpwebpayWsResponse] response value object
7
+ # @return [GpWebpay::Ws::WsResponse] response value object
8
8
 
9
9
  module GpWebpay
10
10
  module Ws
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # @param [Hash] attributes for GP Webpay
6
6
  #
7
- # @return [GpwebpayWsResponse] response value object
7
+ # @return [GpWebpay::Ws::WsResponse] response value object
8
8
 
9
9
  module GpWebpay
10
10
  module Ws
@@ -15,6 +15,14 @@ module GpWebpay
15
15
  RESPONSE_NAME = :process_usage_based_payment_response
16
16
  RESPONSE_ENTITY_NAME = :usage_based_payment_response
17
17
  SERVICE_EXCEPTION = :payment_service_exception
18
+
19
+ def initialize(attributes, merchant_number: :default)
20
+ config = GpWebpay.config[merchant_number] || GpWebpay.config.default
21
+ merged_attributes = {
22
+ return_url: GpWebpay::Engine.routes.url_helpers.gp_webpay_orders_url({ merchant_number: config.merchant_number })
23
+ }.merge(attributes)
24
+ super(merged_attributes, merchant_number: merchant_number)
25
+ end
18
26
  end
19
27
  end
20
28
  end
@@ -1,8 +1,6 @@
1
1
  module GpWebpay
2
2
  module Ws
3
3
  class WsResponse < Response
4
- attr_accessor :validation_response
5
-
6
4
  def self.from_success(hash, response_name, response_entity_name, merchant_number)
7
5
  validation_response = hash.dig(response_name, response_entity_name)
8
6
  new(
@@ -15,9 +15,9 @@ require 'gp_webpay/http/base_signed_request'
15
15
  require 'gp_webpay/http/external_url'
16
16
  require 'gp_webpay/http/http_response'
17
17
  require 'gp_webpay/http/http_request'
18
- require 'gp_webpay/http/create_order'
19
- require 'gp_webpay/http/verify_card'
20
18
  require 'gp_webpay/http/validate_result'
19
+ require 'gp_webpay/http/services/verify_card'
20
+ require 'gp_webpay/http/services/create_order'
21
21
 
22
22
  require 'gp_webpay/ws/ws_request'
23
23
  require 'gp_webpay/ws/validate_result'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-gp-webpay
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: '0.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lubomir Vnenk
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-04-21 00:00:00.000000000 Z
11
+ date: 2021-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -78,12 +78,13 @@ files:
78
78
  - lib/gp_webpay/engine.rb
79
79
  - lib/gp_webpay/error.rb
80
80
  - lib/gp_webpay/http/base_signed_request.rb
81
- - lib/gp_webpay/http/create_order.rb
82
81
  - lib/gp_webpay/http/external_url.rb
83
82
  - lib/gp_webpay/http/http_request.rb
84
83
  - lib/gp_webpay/http/http_response.rb
84
+ - lib/gp_webpay/http/services/create_order.rb
85
+ - lib/gp_webpay/http/services/verify_card.rb
85
86
  - lib/gp_webpay/http/validate_result.rb
86
- - lib/gp_webpay/http/verify_card.rb
87
+ - lib/gp_webpay/mock/spec_helper.rb
87
88
  - lib/gp_webpay/openssl_security.rb
88
89
  - lib/gp_webpay/response.rb
89
90
  - lib/gp_webpay/service.rb
@@ -1,18 +0,0 @@
1
- ##
2
- # Service object creates request data for GP Webpay CARD_VERIFICATION operation.
3
-
4
- module GpWebpay
5
- module Http
6
- class VerifyCard < BaseSignedRequest
7
- def initialize(attributes, locale, merchant_number: nil, url_attributes: {})
8
- super(attributes, locale, 'CARD_VERIFICATION', merchant_number: merchant_number, url_attributes: url_attributes)
9
- end
10
-
11
- protected
12
-
13
- def callback_url
14
- GpWebpay::Engine.routes.url_helpers.gp_webpay_cards_path({ merchant_number: config.merchant_number, locale: locale }.merge(url_attributes))
15
- end
16
- end
17
- end
18
- end