sepa 0.0.14 → 0.0.15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +11 -3
- data/lib/sepa/base.rb +14 -11
- data/lib/sepa/direct_debit_order.rb +4 -3
- data/lib/sepa/version.rb +1 -1
- data/spec/sepa/direct_debit_order_spec.rb +10 -7
- data/spec/sepa/expected-simple.xml +1 -1
- data/spec/sepa/expected_customer_direct_debit_initiation_v02.xml +2 -2
- data/spec/sepa/expected_customer_direct_debit_initiation_v04.xml +1 -1
- data/spec/sepa/expected_customer_direct_debit_initiation_v04_with_org_id.xml +1 -1
- data/spec/sepa/payments_initiation/pain00800104/customer_direct_debit_initiation_spec.rb +6 -5
- data/spec/spec_helper.rb +34 -0
- metadata +63 -98
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA512:
|
3
|
+
metadata.gz: d57cc7203c00c3f47dc18189cca69b7b7397c424d0cf390f3fd9d4a948cbd9cbcefffe9efbbad0338ccc202c10c9d9199b051b874e99e3b2fd13e5fd37062752
|
4
|
+
data.tar.gz: f7a93dafda118a000313bbf186f35fbcdeab9f9d53892cf06dccf6bd1f422019269293f6f1e92035b49b48ee9f1384c97307bbc6c8adffc2706bc1cbcd425847
|
5
|
+
SHA1:
|
6
|
+
metadata.gz: a02ba9d2473675049d7bcba39addd3e4513d69bd
|
7
|
+
data.tar.gz: fba85ca92384748652582373d4d235315969e988
|
data/README.md
CHANGED
@@ -3,16 +3,16 @@
|
|
3
3
|
An implementation of pain.008.001 CustomerDirectDebitInitiation - versions 02 and 04. WARNING:
|
4
4
|
NO WARRANTY, USE AT YOUR OWN RISK AND PERIL. By using this software, you warrant and represent
|
5
5
|
and declare that having studied and examined and tested the source, you are satisfied, sure, and
|
6
|
-
certain that the version you use does exactly what you want it to do. This
|
6
|
+
certain that the version you use does exactly what you want it to do. This
|
7
7
|
|
8
8
|
MORE WARNING: This is alpha-quality software. The API is not yet stable. New versions will break
|
9
9
|
compatibility in unpredictable ways. Use at your own risk and peril.
|
10
10
|
|
11
11
|
ANOTHER WARNING: While I aim for ISO-20022 compatibility in all its glorious detail, this gem
|
12
12
|
implements only a subset of ISO-20022, and possibly does so incorrectly. On top of that, your
|
13
|
-
bank's interpretation of ISO-20022 may differ from mine, may require some fields that are
|
13
|
+
bank's interpretation of ISO-20022 may differ from mine, may require some fields that are
|
14
14
|
optional in the ISO specification, and may ignore some other fields that are mandatory in the
|
15
|
-
specification.
|
15
|
+
specification.
|
16
16
|
|
17
17
|
I wanted to make it as easy as possible to define message types and components so this library
|
18
18
|
will be easy to grow to implement the entire standard.
|
@@ -73,6 +73,9 @@ a message-id.
|
|
73
73
|
The last line returns a string that you will then need to send to your bank one way or another. For example, you might use an EBICS client. Or your bank might provide
|
74
74
|
software to send the file. Or perhaps you can upload it via their website.
|
75
75
|
|
76
|
+
## History
|
77
|
+
|
78
|
+
0.0.15 Ruby 1.8.7 compatibility
|
76
79
|
|
77
80
|
## Contributing
|
78
81
|
|
@@ -83,3 +86,8 @@ Other message types are totally welcome.
|
|
83
86
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
84
87
|
4. Push to the branch (`git push origin my-new-feature`)
|
85
88
|
5. Create new Pull Request
|
89
|
+
|
90
|
+
## Contributors
|
91
|
+
|
92
|
+
Author: [Conan Dalton](http://www.conandalton.net), aka [conanite](https://github.com/conanite)
|
93
|
+
With thanks to [corny](https://github.com/corny), [TheConstructor](https://github.com/TheConstructor)
|
data/lib/sepa/base.rb
CHANGED
@@ -3,7 +3,7 @@ module Sepa
|
|
3
3
|
class Base
|
4
4
|
include Aduki::Initializer
|
5
5
|
|
6
|
-
@@attribute_defs = Hash.new { |h,k| h[k] =
|
6
|
+
@@attribute_defs = Hash.new { |h,k| h[k] = [] }
|
7
7
|
|
8
8
|
def build_xml_attributes names
|
9
9
|
result = { }
|
@@ -19,13 +19,16 @@ module Sepa
|
|
19
19
|
|
20
20
|
def normalize str
|
21
21
|
return str if str.is_a? Fixnum
|
22
|
-
return str if str.is_a? Float
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
}
|
22
|
+
return ("%.2f" % str) if str.is_a? Float
|
23
|
+
replacements = {
|
24
|
+
'à' => 'a', 'é' => 'e', 'è' => 'e',
|
25
|
+
'û' => 'u', 'î' => 'i', 'ô' => 'o', 'ü' => 'u', 'ï' => 'i', 'ö' => 'o',
|
26
|
+
'ÿ' => 'y', 'ç' => 'c', 'Ç' => 'C', 'É' => 'E', 'È' => 'E', 'á' => 'a',
|
27
|
+
'À' => 'A', 'Á' => 'A', 'Ü' => 'U', 'Ï' => 'I', 'Ö' => 'O', 'ß' => 'ss'
|
28
|
+
}
|
29
|
+
str = replacements.to_a.
|
30
|
+
inject(str) { |s, kv| s.gsub(kv[0], kv[1]) }.
|
31
|
+
gsub(/[^a-zA-Z0-9_@ \.,()'+\/\?-]/, '')
|
29
32
|
end
|
30
33
|
|
31
34
|
def to_xml builder
|
@@ -79,18 +82,18 @@ module Sepa
|
|
79
82
|
typed_attribute name, tag, type, options
|
80
83
|
else
|
81
84
|
attr_accessor name
|
82
|
-
attribute_defs[name
|
85
|
+
attribute_defs << [name, { :tag => tag, :type => type, :options => options }]
|
83
86
|
end
|
84
87
|
end
|
85
88
|
|
86
89
|
def self.typed_attribute name, tag, type, options
|
87
|
-
attribute_defs[name
|
90
|
+
attribute_defs << [name, { :tag => tag, :type => type, :options => options }]
|
88
91
|
attr_accessor name
|
89
92
|
aduki name => type
|
90
93
|
end
|
91
94
|
|
92
95
|
def self.array_attribute name, tag, member_type=nil, options={ }
|
93
|
-
attribute_defs[name
|
96
|
+
attribute_defs << [name, { :tag => tag, :type => :[], :member_type => member_type, :options => options }]
|
94
97
|
attr_accessor name
|
95
98
|
aduki(name => member_type) if member_type
|
96
99
|
end
|
@@ -84,7 +84,7 @@ class Sepa::DirectDebitOrder
|
|
84
84
|
"group_header.control_sum" => creditor_payments.inject(0) { |sum, cp| sum + cp.control_sum },
|
85
85
|
}
|
86
86
|
|
87
|
-
hsh = hsh.merge initiating_party.to_properties("group_header.initiating_party", opts.merge({context
|
87
|
+
hsh = hsh.merge initiating_party.to_properties("group_header.initiating_party", opts.merge({:context => :initiating_party}))
|
88
88
|
|
89
89
|
cps = []
|
90
90
|
if opts[:pain_008_001_version] == "02"
|
@@ -181,7 +181,8 @@ class Sepa::DirectDebitOrder
|
|
181
181
|
seq_types[dd.sequence_type] << dd
|
182
182
|
end
|
183
183
|
|
184
|
-
|
184
|
+
%w{FRST RCUR FNAL OOFF}.each do |seq_type|
|
185
|
+
dds = seq_types[seq_type]
|
185
186
|
next if dds.empty?
|
186
187
|
ncp = CreditorPayment.new(creditor, creditor_account, "#{id}-#{seq_type}", collection_date, sepa_identification, dds)
|
187
188
|
ncp.sequence_type = seq_type
|
@@ -213,7 +214,7 @@ class Sepa::DirectDebitOrder
|
|
213
214
|
hsh["#{prefix}.payment_type_information.sequence_type"] = sequence_type
|
214
215
|
end
|
215
216
|
|
216
|
-
hsh = hsh.merge creditor.to_properties("#{prefix}.creditor", opts.merge({ context
|
217
|
+
hsh = hsh.merge creditor.to_properties("#{prefix}.creditor", opts.merge({ :context => :creditor }))
|
217
218
|
hsh = hsh.merge creditor_account.to_properties("#{prefix}.creditor", opts)
|
218
219
|
hsh = hsh.merge sepa_identification.to_properties("#{prefix}.creditor_scheme_identification", opts)
|
219
220
|
|
data/lib/sepa/version.rb
CHANGED
@@ -24,7 +24,7 @@ describe Sepa::DirectDebitOrder do
|
|
24
24
|
dd20 = Sepa::DirectDebitOrder::DirectDebit.new debtor2, bank_account2, "MONECOLE REG F13793 PVT 3", 1935.35, "EUR", mandate2
|
25
25
|
dd21 = Sepa::DirectDebitOrder::DirectDebit.new debtor2, bank_account2, "MONECOLE REG F13794 PVT 3", 1236.36, "EUR", mandate2
|
26
26
|
|
27
|
-
sepa_now = Time.
|
27
|
+
sepa_now = Time.local(1992, 2, 28, 18, 30, 0, 0, 0)
|
28
28
|
Time.stub(:now).and_return sepa_now
|
29
29
|
|
30
30
|
creditor = Sepa::DirectDebitOrder::Party.new "Mon École", "3, Livva de Getamire", nil, "75022", "Paris", "Frankreich", "M. le Directeur", "+33 999 999 999", "directeur@monecole.softify.com"
|
@@ -39,25 +39,28 @@ describe Sepa::DirectDebitOrder do
|
|
39
39
|
|
40
40
|
it "should produce v02 xml corresponding to the given inputs" do
|
41
41
|
o = order Sepa::DirectDebitOrder::PrivateSepaIdentifier
|
42
|
-
xml = o.to_xml pain_008_001_version
|
42
|
+
xml = o.to_xml :pain_008_001_version => "02"
|
43
|
+
xml = check_doc_header_02 xml
|
43
44
|
expected = File.read(File.expand_path("../expected_customer_direct_debit_initiation_v02.xml", __FILE__))
|
44
|
-
expected.force_encoding(Encoding::UTF_8)
|
45
|
+
expected.force_encoding(Encoding::UTF_8) if expected.respond_to? :force_encoding
|
45
46
|
xml.should == expected
|
46
47
|
end
|
47
48
|
|
48
49
|
it "should produce v04 xml corresponding to the given inputs" do
|
49
50
|
o = order Sepa::DirectDebitOrder::PrivateSepaIdentifier
|
50
|
-
xml = o.to_xml pain_008_001_version
|
51
|
+
xml = o.to_xml :pain_008_001_version => "04"
|
52
|
+
xml = check_doc_header_04 xml
|
51
53
|
expected = File.read(File.expand_path("../expected_customer_direct_debit_initiation_v04.xml", __FILE__))
|
52
|
-
expected.force_encoding(Encoding::UTF_8)
|
54
|
+
expected.force_encoding(Encoding::UTF_8) if expected.respond_to? :force_encoding
|
53
55
|
xml.should == expected
|
54
56
|
end
|
55
57
|
|
56
58
|
it "should produce v04 xml corresponding to the given inputs with an organisation identifier for the creditor" do
|
57
59
|
o = order Sepa::DirectDebitOrder::OrganisationSepaIdentifier
|
58
|
-
xml = o.to_xml pain_008_001_version
|
60
|
+
xml = o.to_xml :pain_008_001_version => "04"
|
61
|
+
xml = check_doc_header_04 xml
|
59
62
|
expected = File.read(File.expand_path("../expected_customer_direct_debit_initiation_v04_with_org_id.xml", __FILE__))
|
60
|
-
expected.force_encoding(Encoding::UTF_8)
|
63
|
+
expected.force_encoding(Encoding::UTF_8) if expected.respond_to? :force_encoding
|
61
64
|
xml.should == expected
|
62
65
|
end
|
63
66
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<Document
|
2
|
+
<Document>
|
3
3
|
<CstmrDrctDbtInitn>
|
4
4
|
<GrpHdr>
|
5
5
|
<MsgId>MSG0001</MsgId>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<Document
|
2
|
+
<Document>
|
3
3
|
<CstmrDrctDbtInitn>
|
4
4
|
<GrpHdr>
|
5
5
|
<MsgId>MSG0001</MsgId>
|
@@ -121,7 +121,7 @@
|
|
121
121
|
<PmtInfId>MONECOLE_PAYMENTS_20130703-RCUR</PmtInfId>
|
122
122
|
<PmtMtd>DD</PmtMtd>
|
123
123
|
<NbOfTxs>4</NbOfTxs>
|
124
|
-
<CtrlSum>5536.
|
124
|
+
<CtrlSum>5536.35</CtrlSum>
|
125
125
|
<PmtTpInf>
|
126
126
|
<SvcLvl>
|
127
127
|
<Cd>SEPA</Cd>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<Document
|
2
|
+
<Document>
|
3
3
|
<CstmrDrctDbtInitn>
|
4
4
|
<GrpHdr>
|
5
5
|
<MsgId>MSG0001</MsgId>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<Document
|
2
|
+
<Document>
|
3
3
|
<CstmrDrctDbtInitn>
|
4
4
|
<GrpHdr>
|
5
5
|
<MsgId>MSG0001</MsgId>
|
@@ -68,16 +68,17 @@ describe Sepa::PaymentsInitiation::Pain00800104::CustomerDirectDebitInitiation d
|
|
68
68
|
|
69
69
|
it "should raise an error unless the version is '02' or '04'" do
|
70
70
|
pain = Sepa::PaymentsInitiation::Pain00800104::CustomerDirectDebitInitiation.new(props)
|
71
|
-
expect { pain.generate_xml(pain_008_001_version
|
72
|
-
expect { pain.generate_xml(pain_008_001_version
|
73
|
-
expect { pain.generate_xml(pain_008_001_version
|
71
|
+
expect { pain.generate_xml(:pain_008_001_version => '2') }.to raise_error
|
72
|
+
expect { pain.generate_xml(:pain_008_001_version => 2) }.to raise_error
|
73
|
+
expect { pain.generate_xml(:pain_008_001_version => "") }.to raise_error
|
74
74
|
expect { pain.generate_xml({ }) }.to raise_error
|
75
75
|
end
|
76
76
|
|
77
77
|
it "should produce xml corresponding to the given inputs" do
|
78
|
-
xml = Sepa::PaymentsInitiation::Pain00800104::CustomerDirectDebitInitiation.new(props).generate_xml(pain_008_001_version
|
78
|
+
xml = Sepa::PaymentsInitiation::Pain00800104::CustomerDirectDebitInitiation.new(props).generate_xml(:pain_008_001_version => '04')
|
79
|
+
xml = check_doc_header_04 xml
|
79
80
|
expected = File.read(File.expand_path("../../../expected-simple.xml", __FILE__))
|
80
|
-
expected.force_encoding(Encoding::UTF_8)
|
81
|
+
expected.force_encoding(Encoding::UTF_8) if expected.respond_to? :force_encoding
|
81
82
|
xml.should == expected
|
82
83
|
end
|
83
84
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,41 @@
|
|
1
1
|
require 'sepa'
|
2
2
|
|
3
|
+
#
|
4
|
+
# Ruby 1.8 hashes are unordered, which results in xml tag attributes appearing in arbitrary order, so
|
5
|
+
# we can't just do a plain string compare of output.
|
6
|
+
# XmlHelper replaces <Document blah blah blah> with <Document>, and checks that the "blah blah blah"
|
7
|
+
# part is still correct
|
8
|
+
#
|
9
|
+
module XmlHelper
|
10
|
+
XMLNSXSI = 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'
|
11
|
+
XMLNS_02 = 'xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02"'
|
12
|
+
XSI_02 = 'xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.008.001.02 pain.008.001.02.xsd"'
|
13
|
+
|
14
|
+
XMLNS_04 = 'xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.001.04"'
|
15
|
+
XSI_04 = 'xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.008.001.04 pain.008.001.04.xsd"'
|
16
|
+
|
17
|
+
DOCUMENT_TAG = /<Document [^>]+>/
|
18
|
+
|
19
|
+
def check_doc_header_02 xml
|
20
|
+
document_tag = xml.match(DOCUMENT_TAG).to_s
|
21
|
+
document_tag.should include XMLNSXSI
|
22
|
+
document_tag.should include XMLNS_02
|
23
|
+
document_tag.should include XSI_02
|
24
|
+
xml.sub(DOCUMENT_TAG, '<Document>')
|
25
|
+
end
|
26
|
+
|
27
|
+
def check_doc_header_04 xml
|
28
|
+
document_tag = xml.match(DOCUMENT_TAG).to_s
|
29
|
+
document_tag.should include XMLNSXSI
|
30
|
+
document_tag.should include XMLNS_04
|
31
|
+
document_tag.should include XSI_04
|
32
|
+
xml.sub(DOCUMENT_TAG, '<Document>')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
3
36
|
RSpec.configure do |config|
|
4
37
|
config.treat_symbols_as_metadata_keys_with_true_values = true
|
5
38
|
config.run_all_when_everything_filtered = true
|
6
39
|
config.order = 'random'
|
40
|
+
config.include XmlHelper
|
7
41
|
end
|
metadata
CHANGED
@@ -1,105 +1,73 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: sepa
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.15
|
6
5
|
platform: ruby
|
7
|
-
authors:
|
6
|
+
authors:
|
8
7
|
- Conan Dalton
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
|
12
|
+
date: 2013-12-31 00:00:00 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
15
|
name: builder
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0'
|
22
|
-
type: :runtime
|
23
16
|
prerelease: false
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version:
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: aduki
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ! '>='
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
17
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- &id002
|
20
|
+
- ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: "0"
|
38
23
|
type: :runtime
|
24
|
+
version_requirements: *id001
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: aduki
|
39
27
|
prerelease: false
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
- - ! '>='
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: countries
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ~>
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: 0.9.3
|
28
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- *id002
|
54
31
|
type: :runtime
|
32
|
+
version_requirements: *id003
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: countries
|
55
35
|
prerelease: false
|
56
|
-
|
57
|
-
|
58
|
-
requirements:
|
36
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
59
38
|
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
39
|
+
- !ruby/object:Gem::Version
|
61
40
|
version: 0.9.3
|
62
|
-
|
41
|
+
type: :runtime
|
42
|
+
version_requirements: *id004
|
43
|
+
- !ruby/object:Gem::Dependency
|
63
44
|
name: rspec
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ~>
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '2.9'
|
70
|
-
type: :development
|
71
45
|
prerelease: false
|
72
|
-
|
73
|
-
|
74
|
-
requirements:
|
46
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
75
48
|
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version:
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: rspec_numbering_formatter
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ! '>='
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: '0'
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: "2.9"
|
86
51
|
type: :development
|
52
|
+
version_requirements: *id005
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: rspec_numbering_formatter
|
87
55
|
prerelease: false
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
and pain.008.001.04 CustomerDirectDebitInitiation for now. WARNING: NO WARRANTY,
|
96
|
-
USE AT YOUR OWN RISK AND PERIL. '
|
97
|
-
email:
|
56
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- *id002
|
59
|
+
type: :development
|
60
|
+
version_requirements: *id006
|
61
|
+
description: " Generate ISO20022 XML messages. Implements a subset of pain.008.001.02 and pain.008.001.04 CustomerDirectDebitInitiation for now. WARNING: NO WARRANTY, USE AT YOUR OWN RISK AND PERIL. "
|
62
|
+
email:
|
98
63
|
- conan@conandalton.net
|
99
64
|
executables: []
|
65
|
+
|
100
66
|
extensions: []
|
67
|
+
|
101
68
|
extra_rdoc_files: []
|
102
|
-
|
69
|
+
|
70
|
+
files:
|
103
71
|
- .gitignore
|
104
72
|
- .rspec
|
105
73
|
- Gemfile
|
@@ -157,32 +125,29 @@ files:
|
|
157
125
|
- spec/sepa/payments_initiation/pain00800104/customer_direct_debit_initiation_spec.rb
|
158
126
|
- spec/spec_helper.rb
|
159
127
|
homepage: https://github.com/conanite/sepa
|
160
|
-
licenses:
|
128
|
+
licenses:
|
161
129
|
- MIT
|
130
|
+
metadata: {}
|
131
|
+
|
162
132
|
post_install_message:
|
163
133
|
rdoc_options: []
|
164
|
-
|
134
|
+
|
135
|
+
require_paths:
|
165
136
|
- lib
|
166
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
|
-
none: false
|
174
|
-
requirements:
|
175
|
-
- - ! '>='
|
176
|
-
- !ruby/object:Gem::Version
|
177
|
-
version: '0'
|
137
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
138
|
+
requirements:
|
139
|
+
- *id002
|
140
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- *id002
|
178
143
|
requirements: []
|
144
|
+
|
179
145
|
rubyforge_project:
|
180
|
-
rubygems_version:
|
146
|
+
rubygems_version: 2.0.14
|
181
147
|
signing_key:
|
182
|
-
specification_version:
|
183
|
-
summary:
|
184
|
-
|
185
|
-
test_files:
|
148
|
+
specification_version: 4
|
149
|
+
summary: "pain.008.001.04 and pain.008.001.02 CustomerDirectDebitInitiation ISO20022 XML. WARNING: NO WARRANTY, USE AT YOUR OWN RISK AND PERIL."
|
150
|
+
test_files:
|
186
151
|
- spec/sepa/direct_debit_order_spec.rb
|
187
152
|
- spec/sepa/direct_debit_properties.yml
|
188
153
|
- spec/sepa/expected-simple.xml
|