wirecard_sepa 0.0.2 → 0.0.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/CHANGELOG.md +5 -0
- data/README.md +4 -4
- data/lib/wirecard_sepa/direct_debit/response.rb +16 -6
- data/lib/wirecard_sepa/version.rb +1 -1
- data/spec/lib/wirecard_sepa/direct_debit/response_spec.rb +29 -2
- data/spec/lib/wirecard_sepa/gateway_spec.rb +39 -43
- data/spec/spec_helper.rb +1 -1
- data/wirecard_sepa.gemspec +2 -2
- metadata +11 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aaa93141c612cc1f432a50fe6cab5c7f031bb9f6
|
4
|
+
data.tar.gz: 4016372fc3adbf2c6811a98d3f989e66d02b572c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9eefb21db2e5e4ba84f62823217b76cef25bf913f063eeea0b06e6a259840704ce250ab16a8ee835706be967cc9b05b78aafa2b00bc92df78cedff45d8ca512c
|
7
|
+
data.tar.gz: 58c5db146fea9374f7222c6022744440deac8f56c5f594e7f1ce1984d71e25ad7d016f42f25c320299c0a7117240e90f6dd5e7e77622f4a800b94fd1657d69e4
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -5,10 +5,10 @@
|
|
5
5
|
A WORK IN PROGRESS PROJECT
|
6
6
|
|
7
7
|
## TODOS
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
- [ ] Error Handling
|
9
|
+
- [ ] Maybe cache template files (are they loaded from disk each request?)
|
10
|
+
- [ ] Docs for usage in README.md
|
11
|
+
- [ ] Check Recurring Request/Response
|
12
12
|
|
13
13
|
## Contributing
|
14
14
|
1. Fork it ( https://github.com/betterplace/wirecard_sepa/fork )
|
@@ -30,31 +30,41 @@ module WirecardSepa
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def transaction_id
|
33
|
-
|
33
|
+
value_at 'transaction-id'
|
34
34
|
end
|
35
35
|
|
36
36
|
def transaction_state
|
37
|
-
|
37
|
+
value_at 'transaction-state'
|
38
38
|
end
|
39
39
|
|
40
40
|
def status_code
|
41
|
-
|
41
|
+
value_at 'status', attribute: :code
|
42
42
|
end
|
43
43
|
|
44
44
|
def status_description
|
45
|
-
|
45
|
+
value_at 'status', attribute: :description
|
46
46
|
end
|
47
47
|
|
48
48
|
def due_date
|
49
|
-
|
49
|
+
value_at 'due-date'
|
50
50
|
end
|
51
51
|
|
52
52
|
def provider_transaction_reference_id
|
53
|
-
|
53
|
+
value_at 'provider-transaction-reference-id'
|
54
54
|
end
|
55
55
|
|
56
56
|
private
|
57
57
|
|
58
|
+
# Returns the text of a node with the given position. If
|
59
|
+
# an additional attribute is given, this attribute is returned
|
60
|
+
# instead.
|
61
|
+
# This method provides mainly nil-safeness.
|
62
|
+
def value_at(position, attribute: nil)
|
63
|
+
node = xml_doc.at_css(position)
|
64
|
+
node or return
|
65
|
+
attribute ? node[attribute] : node.text
|
66
|
+
end
|
67
|
+
|
58
68
|
def xml_doc
|
59
69
|
@xml_doc ||= Nokogiri::XML xml
|
60
70
|
end
|
@@ -6,6 +6,7 @@ describe WirecardSepa::DirectDebit::Response do
|
|
6
6
|
|
7
7
|
let(:success_response) { described_class.new success_xml }
|
8
8
|
let(:failure_response) { described_class.new failure_xml }
|
9
|
+
let(:empty_response) { described_class.new '<xml/>' }
|
9
10
|
|
10
11
|
describe '.for_request(request)' do
|
11
12
|
let(:request) { double('Fake Typhoeus request', body: '</xml>') }
|
@@ -31,15 +32,41 @@ describe WirecardSepa::DirectDebit::Response do
|
|
31
32
|
it('params[:due_date]') { expect(params[:due_date]).to eq '2013-10-03' }
|
32
33
|
it('params[:reference_id]') { expect(params[:reference_id]).to eq '33F7A4D125' }
|
33
34
|
end
|
35
|
+
|
36
|
+
context 'for a failed response' do
|
37
|
+
let(:params) { failure_response.params }
|
38
|
+
|
39
|
+
it('params[:transaction_id]') { expect(params[:transaction_id]).to eq '4185215e-250f-11e3-8d4b-005056a97162' }
|
40
|
+
it('params[:transaction_state]') { expect(params[:transaction_state]).to eq 'failed' }
|
41
|
+
it('params[:status_code]') { expect(params[:status_code]).to eq '400.1007' }
|
42
|
+
it('params[:status_description]') { expect(params[:status_description]).to eq 'The account holder information has not been provided. Please check your input and try again. ' }
|
43
|
+
it('params[:due_date]') { expect(params[:due_date]).to be_nil }
|
44
|
+
it('params[:reference_id]') { expect(params[:reference_id]).to be_nil }
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'for a failed, empty response' do
|
48
|
+
let(:params) { empty_response.params }
|
49
|
+
|
50
|
+
it('params[:transaction_id]') { expect(params[:transaction_id]).to be_nil }
|
51
|
+
it('params[:transaction_state]') { expect(params[:transaction_state]).to be_nil }
|
52
|
+
it('params[:status_code]') { expect(params[:status_code]).to be_nil }
|
53
|
+
it('params[:status_description]') { expect(params[:status_description]).to be_nil }
|
54
|
+
it('params[:due_date]') { expect(params[:due_date]).to be_nil }
|
55
|
+
it('params[:reference_id]') { expect(params[:reference_id]).to be_nil }
|
56
|
+
end
|
34
57
|
end
|
35
58
|
|
36
59
|
describe '#success?' do
|
37
60
|
it 'returns true for a succesful response' do
|
38
|
-
expect(success_response
|
61
|
+
expect(success_response).to be_success
|
39
62
|
end
|
40
63
|
|
41
64
|
it 'returns false for a failure response' do
|
42
|
-
expect(failure_response
|
65
|
+
expect(failure_response).not_to be_success
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'returns false for a malformed, empty response' do
|
69
|
+
expect(empty_response).not_to be_success
|
43
70
|
end
|
44
71
|
end
|
45
72
|
end
|
@@ -1,65 +1,61 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
+
# TODOs
|
4
|
+
# [] Record response from wirecard w/ VCR
|
3
5
|
describe WirecardSepa::Gateway do
|
4
6
|
let(:gateway) { described_class.new(sandbox_gateway_config) }
|
7
|
+
let(:debit_params) do
|
8
|
+
{
|
9
|
+
requested_amount: '12.12',
|
10
|
+
account_holder_first_name: 'John',
|
11
|
+
account_holder_last_name: 'Doe',
|
12
|
+
bank_account_iban: 'DE42512308000000060004',
|
13
|
+
bank_account_bic: 'WIREDEMMXXX',
|
14
|
+
mandate_id: '1235678',
|
15
|
+
mandate_signed_date: '2013-09-24',
|
16
|
+
}
|
17
|
+
end
|
18
|
+
let(:recurring_init_params) do
|
19
|
+
{
|
20
|
+
requested_amount: '15.00',
|
21
|
+
account_holder_first_name: 'Bob',
|
22
|
+
account_holder_last_name: 'Hawk',
|
23
|
+
bank_account_iban: 'DE42512308000000060004',
|
24
|
+
bank_account_bic: 'WIREDEMMXXX',
|
25
|
+
mandate_id: '2356789',
|
26
|
+
mandate_signed_date: '2013-08-11',
|
27
|
+
}
|
28
|
+
end
|
5
29
|
|
6
30
|
describe '#debit(params)' do
|
7
|
-
let(:params) do
|
8
|
-
{
|
9
|
-
requested_amount: '12.12',
|
10
|
-
account_holder_first_name: 'John',
|
11
|
-
account_holder_last_name: 'Doe',
|
12
|
-
bank_account_iban: 'DE42512308000000060004',
|
13
|
-
bank_account_bic: 'WIREDEMMXXX',
|
14
|
-
mandate_id: '1235678',
|
15
|
-
mandate_signed_date: '2013-09-24',
|
16
|
-
}
|
17
|
-
end
|
18
|
-
|
19
31
|
it 'posts the correct XML' do
|
20
32
|
# TODO: Record response from wirecard
|
21
|
-
response = gateway.debit(
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
# expect(response).to be_success
|
26
|
-
expect(response.request.headers['Content-Type']).to eq 'application/xml;charset=UTF-8'
|
33
|
+
response = gateway.debit(debit_params)
|
34
|
+
expect(response).to be_success
|
35
|
+
expect(response.params).to_not be_empty
|
36
|
+
expect(response.transaction_id).to_not be_empty
|
27
37
|
end
|
28
38
|
end
|
29
39
|
|
30
40
|
describe '#recurring_init(params)' do
|
31
|
-
let(:params) do
|
32
|
-
{
|
33
|
-
requested_amount: '15.00',
|
34
|
-
account_holder_first_name: 'Bob',
|
35
|
-
account_holder_last_name: 'Hawk',
|
36
|
-
bank_account_iban: 'DE11512308000000060002',
|
37
|
-
bank_account_bic: 'WIREDEMMXXX',
|
38
|
-
mandate_id: '2356789',
|
39
|
-
mandate_signed_date: '2013-08-11',
|
40
|
-
}
|
41
|
-
end
|
42
|
-
|
43
41
|
it 'posts the correct XML' do
|
44
|
-
response
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
42
|
+
# TODO: Record response from wirecard
|
43
|
+
response = gateway.recurring_init(recurring_init_params)
|
44
|
+
expect(response).to be_success
|
45
|
+
expect(response.params).to_not be_empty
|
46
|
+
expect(response.transaction_id).to_not be_empty
|
49
47
|
end
|
50
48
|
end
|
51
49
|
|
52
50
|
describe '#recurring_process(params)' do
|
53
|
-
let(:
|
54
|
-
|
55
|
-
end
|
51
|
+
let(:init_response) { gateway.recurring_init(recurring_init_params) }
|
52
|
+
let(:parent_transaction_id) { init_response.transaction_id }
|
56
53
|
|
57
54
|
it 'posts the correct XML' do
|
58
|
-
response = gateway.recurring_process(
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
# expect(response).to be_success
|
55
|
+
response = gateway.recurring_process({ parent_transaction_id: parent_transaction_id })
|
56
|
+
expect(response).to be_success
|
57
|
+
expect(response.params).to_not be_empty
|
58
|
+
expect(response.transaction_id).to_not be_empty
|
63
59
|
end
|
64
60
|
end
|
65
61
|
end
|
data/spec/spec_helper.rb
CHANGED
data/wirecard_sepa.gemspec
CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^spec/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "typhoeus"
|
22
|
-
spec.add_dependency "nokogiri"
|
21
|
+
spec.add_dependency "typhoeus", "~> 0.7"
|
22
|
+
spec.add_dependency "nokogiri", "~> 1.6"
|
23
23
|
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.7"
|
25
25
|
spec.add_development_dependency "rake", "~> 10.4"
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wirecard_sepa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- betterplace developers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: typhoeus
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
19
|
+
version: '0.7'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
26
|
+
version: '0.7'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: nokogiri
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '1.6'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '1.6'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -118,6 +118,7 @@ files:
|
|
118
118
|
- ".gitignore"
|
119
119
|
- ".rspec"
|
120
120
|
- ".travis.yml"
|
121
|
+
- CHANGELOG.md
|
121
122
|
- Gemfile
|
122
123
|
- LICENSE
|
123
124
|
- README.md
|