rails-gp-webpay 0.1.0 → 0.2.3
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/app/controllers/gp_webpay_controller.rb +1 -1
- data/changelog.md +6 -0
- data/lib/gp_webpay/configuration.rb +12 -2
- data/lib/gp_webpay/http/{create_order.rb → services/create_order.rb} +9 -7
- data/lib/gp_webpay/http/services/verify_card.rb +20 -0
- data/lib/gp_webpay/mock/spec_helper.rb +104 -0
- data/lib/gp_webpay/version.rb +1 -1
- data/lib/gp_webpay/ws/base_signed_request.rb +1 -1
- data/lib/gp_webpay/ws/services/get_master_payment_status.rb +1 -1
- data/lib/gp_webpay/ws/services/get_payment_status.rb +1 -1
- data/lib/gp_webpay/ws/services/get_token_status.rb +1 -1
- data/lib/gp_webpay/ws/services/process_cancel_capture.rb +1 -1
- data/lib/gp_webpay/ws/services/process_capture_reverse.rb +1 -1
- data/lib/gp_webpay/ws/services/process_card_on_file_payment.rb +11 -3
- data/lib/gp_webpay/ws/services/process_master_payment_revoke.rb +1 -1
- data/lib/gp_webpay/ws/services/process_recurring_payment.rb +1 -1
- data/lib/gp_webpay/ws/services/process_refund_payment.rb +1 -1
- data/lib/gp_webpay/ws/services/process_token_payment.rb +3 -4
- data/lib/gp_webpay/ws/services/process_token_revoke.rb +1 -1
- data/lib/gp_webpay/ws/services/process_usage_based_payment.rb +9 -1
- data/lib/gp_webpay/ws/ws_response.rb +0 -2
- data/lib/{gp_webpay.rb → rails-gp-webpay.rb} +2 -2
- metadata +6 -5
- data/lib/gp_webpay/http/verify_card.rb +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5dc1dfcd0fd2a4f7fcb8cb988aab6d4fe9a97c25c583bae6b1152cc60a96d351
|
4
|
+
data.tar.gz: 30b30ee89e2fff8b84f33e60f34c321c647b479b2c7605e2766213a3f334df53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c161135d1e53f089f7d85f9bb564630c61aec1389fd5d2b8a4a3bcbe3fa222780b34f3b674682cb050aa6c605e37e75105aa93690d996b4ea4af284fb8a0f116
|
7
|
+
data.tar.gz: d12a30aea8d02467d5e489b2bc819368b3ac9e6bd96265ce233ed377651a885006816b4baa2ecc979a5c5c51374fd7f07249d26ed56e89ffceca13fafcb4d022
|
@@ -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
@@ -15,7 +15,17 @@ module GpWebpay
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def [](config_name)
|
18
|
-
|
18
|
+
return if config_name.blank?
|
19
|
+
|
20
|
+
@configurations[config_name] || find_configuration_by_merchant_number(config_name)
|
21
|
+
end
|
22
|
+
|
23
|
+
def find_configuration_by_merchant_number(merchant_number)
|
24
|
+
|
25
|
+
config = @configurations.find { |_key, value| puts _key;value.merchant_number.to_s == merchant_number.to_s }
|
26
|
+
return nil if config.blank?
|
27
|
+
|
28
|
+
config[-1]
|
19
29
|
end
|
20
30
|
|
21
31
|
def add_configuration(merchant_number:, default: false)
|
@@ -25,7 +35,7 @@ module GpWebpay
|
|
25
35
|
end
|
26
36
|
|
27
37
|
def remove_configuration(merchant_number:)
|
28
|
-
@configurations
|
38
|
+
@configurations.delete(merchant_number)
|
29
39
|
@configurations[:default] = @configurations[@configurations.keys[0]]
|
30
40
|
end
|
31
41
|
|
@@ -9,15 +9,17 @@
|
|
9
9
|
|
10
10
|
module GpWebpay
|
11
11
|
module Http
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
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
|
-
|
18
|
+
protected
|
18
19
|
|
19
|
-
|
20
|
-
|
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,104 @@
|
|
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,
|
40
|
+
valid?: valid, success?: success, status: status,
|
41
|
+
params: { sub_status: sub_status }))
|
42
|
+
end
|
43
|
+
|
44
|
+
def stub_usage_based_payment(attributes, merchant_number:, valid: true, success: true, status: '', result_text: 'OK', response_token_data: nil)
|
45
|
+
allow(GpWebpay::Ws::Services::ProcessUsageBasedPayment)
|
46
|
+
.to receive(:call).with(
|
47
|
+
hash_including(
|
48
|
+
{
|
49
|
+
message_id: anything,
|
50
|
+
payment_number: anything,
|
51
|
+
order_number: anything,
|
52
|
+
currency_code: anything,
|
53
|
+
capture_flag: '1'
|
54
|
+
}.merge(attributes)
|
55
|
+
),
|
56
|
+
merchant_number: merchant_number,
|
57
|
+
).and_return(instance_double(GpWebpay::Ws::WsResponse,
|
58
|
+
valid?: valid, success?: success, status: status, result_text: result_text,
|
59
|
+
pr_code: success ? '0' : '123', sr_code: success ? '0' : '4',
|
60
|
+
params: { token_data: response_token_data || attributes[:token_data] }))
|
61
|
+
end
|
62
|
+
|
63
|
+
def stub_token_revoke(token, valid: true, success: true, status: 'REVOKED', result_text: 'OK')
|
64
|
+
allow(GpWebpay::Ws::Services::ProcessTokenRevoke)
|
65
|
+
.to receive(:call).with(
|
66
|
+
hash_including({ message_id: anything }.merge(token_data: token))
|
67
|
+
).and_return(instance_double(GpWebpay::Ws::WsResponse,
|
68
|
+
valid?: valid, success?: success, status: status, result_text: result_text,
|
69
|
+
pr_code: success ? '0' : '123', sr_code: success ? '0' : '4'))
|
70
|
+
end
|
71
|
+
|
72
|
+
def stub_refund_payment(attributes, valid: true, success: true, status: '', result_text: 'OK')
|
73
|
+
allow(GpWebpay::Ws::Services::ProcessRefundPayment)
|
74
|
+
.to receive(:call).with(
|
75
|
+
hash_including({ message_id: anything }.merge(attributes))
|
76
|
+
).and_return(instance_double(GpWebpay::Ws::WsResponse,
|
77
|
+
valid?: valid, success?: success, status: status, result_text: result_text,
|
78
|
+
pr_code: success ? '0' : '123', sr_code: success ? '0' : '4'))
|
79
|
+
end
|
80
|
+
|
81
|
+
def stub_capture_reverse(attributes, valid: true, success: true, status: '', result_text: 'OK')
|
82
|
+
allow(GpWebpay::Ws::Services::ProcessCaptureReverse)
|
83
|
+
.to receive(:call).with(
|
84
|
+
hash_including({ message_id: anything }.merge(attributes))
|
85
|
+
).and_return(instance_double(GpWebpay::Ws::WsResponse,
|
86
|
+
valid?: valid, success?: success, status: status, result_text: result_text,
|
87
|
+
pr_code: success ? '0' : '123', sr_code: success ? '0' : '4'))
|
88
|
+
end
|
89
|
+
|
90
|
+
def stub_cancel_capture(attributes, valid: true, success: true, status: '', result_text: 'OK')
|
91
|
+
allow(GpWebpay::Ws::Services::ProcessCancelCapture)
|
92
|
+
.to receive(:call).with(
|
93
|
+
hash_including({ message_id: anything }.merge(attributes))
|
94
|
+
).and_return(instance_double(GpWebpay::Ws::WsResponse,
|
95
|
+
valid?: valid, success?: success, status: status, result_text: result_text,
|
96
|
+
pr_code: success ? '0' : '123', sr_code: success ? '0' : '4'))
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def gp_webpay
|
101
|
+
@gp_webpay ||= Interface.new
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
data/lib/gp_webpay/version.rb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
#
|
5
5
|
# @param [Hash] attributes for GP Webpay
|
6
6
|
#
|
7
|
-
# @return [
|
7
|
+
# @return [GpWebpay::Ws::WsResponse] response value object
|
8
8
|
|
9
9
|
module GpWebpay
|
10
10
|
module Ws
|
@@ -16,14 +16,22 @@ 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
|
|
22
30
|
if response.valid? && response.params[:authentication_link].present?
|
23
31
|
raise GpWebpayConfirmationRequired.new('GP Webpay requires authentication', response.params[:authentication_link])
|
24
|
-
else
|
25
|
-
response
|
26
32
|
end
|
33
|
+
|
34
|
+
response
|
27
35
|
end
|
28
36
|
|
29
37
|
class GpWebpayConfirmationRequired < GpWebpay::Error
|
@@ -4,7 +4,7 @@
|
|
4
4
|
#
|
5
5
|
# @param [Hash] attributes for GP Webpay
|
6
6
|
#
|
7
|
-
# @return [
|
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 [
|
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
|
@@ -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.
|
4
|
+
version: 0.2.3
|
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
|
11
|
+
date: 2021-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -74,17 +74,17 @@ files:
|
|
74
74
|
- config/wsdl/GPwebpayAdditionalInfoResponse_v1.xsd
|
75
75
|
- config/wsdl/cws_v1.wsdl
|
76
76
|
- config/wsdl/swaref.xsd
|
77
|
-
- lib/gp_webpay.rb
|
78
77
|
- lib/gp_webpay/configuration.rb
|
79
78
|
- lib/gp_webpay/engine.rb
|
80
79
|
- lib/gp_webpay/error.rb
|
81
80
|
- lib/gp_webpay/http/base_signed_request.rb
|
82
|
-
- lib/gp_webpay/http/create_order.rb
|
83
81
|
- lib/gp_webpay/http/external_url.rb
|
84
82
|
- lib/gp_webpay/http/http_request.rb
|
85
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
|
86
86
|
- lib/gp_webpay/http/validate_result.rb
|
87
|
-
- lib/gp_webpay/
|
87
|
+
- lib/gp_webpay/mock/spec_helper.rb
|
88
88
|
- lib/gp_webpay/openssl_security.rb
|
89
89
|
- lib/gp_webpay/response.rb
|
90
90
|
- lib/gp_webpay/service.rb
|
@@ -106,6 +106,7 @@ files:
|
|
106
106
|
- lib/gp_webpay/ws/validate_result.rb
|
107
107
|
- lib/gp_webpay/ws/ws_request.rb
|
108
108
|
- lib/gp_webpay/ws/ws_response.rb
|
109
|
+
- lib/rails-gp-webpay.rb
|
109
110
|
homepage: https://github.com/lubosch/gp_webpay
|
110
111
|
licenses:
|
111
112
|
- MIT
|
@@ -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
|