rails-gp-webpay 0.1.1 → 0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/gp_webpay_controller.rb +1 -1
- data/changelog.md +3 -0
- 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 +102 -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 +9 -1
- 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/rails-gp-webpay.rb +2 -2
- metadata +5 -4
- 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: 57cea3f8cb422bc2d6855683efe5d39130a19359d621df38e21358310218a0c9
|
4
|
+
data.tar.gz: 1286c8ab428ef6b841a0be0e25e250efbe48671e6010a041e51081ae64e77f3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
@@ -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,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
|
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,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 [
|
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
|
data/lib/rails-gp-webpay.rb
CHANGED
@@ -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'
|
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-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/
|
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
|