pagopa-soap 0.1.0
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 +7 -0
- data/.gitignore +8 -0
- data/.rubocop.yml +137 -0
- data/.travis.yml +14 -0
- data/CODE_OF_CONDUCT.md +75 -0
- data/Gemfile +9 -0
- data/LICENSE.txt +29 -0
- data/README.md +229 -0
- data/Rakefile +13 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/diagrams/diagrammi-psp.jpg +0 -0
- data/diagrams/diagrammi-revoca.jpg +0 -0
- data/diagrams/diagrammi-wisp.jpg +0 -0
- data/lib/pago_pa.rb +14 -0
- data/lib/pago_pa/soap.rb +17 -0
- data/lib/pago_pa/soap/configurable.rb +38 -0
- data/lib/pago_pa/soap/message/domain.rb +31 -0
- data/lib/pago_pa/soap/message/institution.rb +42 -0
- data/lib/pago_pa/soap/message/payer.rb +42 -0
- data/lib/pago_pa/soap/message/payment.rb +61 -0
- data/lib/pago_pa/soap/message/rpt.rb +86 -0
- data/lib/pago_pa/soap/message/rt.rb +43 -0
- data/lib/pago_pa/soap/message/single_payment.rb +18 -0
- data/lib/pago_pa/soap/version.rb +8 -0
- data/lib/pago_pa/soap/wsdl_loader.rb +66 -0
- data/lib/soap.rb +126 -0
- data/lib/soap/parser.rb +74 -0
- data/lib/soap/parser/binding.rb +53 -0
- data/lib/soap/parser/message.rb +27 -0
- data/lib/soap/parser/port_type.rb +42 -0
- data/lib/soap/parser/service.rb +25 -0
- data/lib/soap/parser/types.rb +97 -0
- data/lib/soap/string.rb +33 -0
- data/lib/soap/webservice.rb +4 -0
- data/lib/soap/webservice/client.rb +37 -0
- data/lib/soap/webservice/error.rb +17 -0
- data/lib/soap/webservice/fault_error.rb +12 -0
- data/lib/soap/webservice/request.rb +118 -0
- data/lib/soap/webservice/response.rb +88 -0
- data/pagopa-soap.gemspec +45 -0
- data/resources/PaPerNodo.wsdl +214 -0
- data/resources/PaPerNodoChiediElencoAvvisiDigitali.wsdl +93 -0
- data/resources/PaPerNodoPagamentoPsp.wsdl +241 -0
- data/resources/PaPerNodoRichiestaAvvisi.wsdl +202 -0
- data/resources/pagopa_avvisi.wsdl +98 -0
- data/resources/pagopa_base.wsdl +869 -0
- metadata +245 -0
data/lib/soap/string.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Soap; end
|
4
|
+
|
5
|
+
module Soap::String
|
6
|
+
def self.snakecase(str)
|
7
|
+
str = str.dup
|
8
|
+
str.gsub!(/::/, "/")
|
9
|
+
str.gsub!(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
10
|
+
str.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
|
11
|
+
str.tr!(".", "_")
|
12
|
+
str.tr!("-", "_")
|
13
|
+
str.downcase!
|
14
|
+
str
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.camelcase(str)
|
18
|
+
str.split("_").collect(&:capitalize).join
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.wsdl_camelcase(str)
|
22
|
+
str_split = str.split("_")
|
23
|
+
return str_split.first if str_split.count == 1
|
24
|
+
first_split = str_split.delete_at(0)
|
25
|
+
last_split = str_split.delete_at(str_split.count - 1)
|
26
|
+
if last_split.length <= 3
|
27
|
+
last_split.upcase!
|
28
|
+
else
|
29
|
+
last_split.capitalize!
|
30
|
+
end
|
31
|
+
"#{first_split}#{str_split.collect(&:capitalize).join}#{last_split}"
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "savon"
|
4
|
+
|
5
|
+
module Soap; end
|
6
|
+
module Soap::Webservice; end
|
7
|
+
|
8
|
+
class Soap::Webservice::Client
|
9
|
+
class << self
|
10
|
+
def endpoint
|
11
|
+
"#{namespace}#{action}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def client
|
16
|
+
@client ||=
|
17
|
+
Savon.client(
|
18
|
+
endpoint: self.class.endpoint,
|
19
|
+
namespace: self.class.namespace,
|
20
|
+
convert_request_keys_to: :none,
|
21
|
+
pretty_print_xml: true,
|
22
|
+
follow_redirects: true,
|
23
|
+
headers: {
|
24
|
+
"User-Agent" =>
|
25
|
+
"Ruby Wrapper for pagoPA (#{PagoPA::SOAP::VERSION})",
|
26
|
+
"Cache-Control" => "no-cache",
|
27
|
+
"Accept-Encoding" => "gzip, deflate"
|
28
|
+
}
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
32
|
+
def send(request)
|
33
|
+
response.new(
|
34
|
+
client.call(Soap.to_snakecase(self.class.action), request.to_message)
|
35
|
+
)
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Soap; end
|
4
|
+
module Soap::Webservice; end
|
5
|
+
|
6
|
+
class Soap::Webservice::Error < StandardError
|
7
|
+
attr_reader :response
|
8
|
+
|
9
|
+
def initialize(response)
|
10
|
+
@reseponse = response
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Soap::Webservice::GenericError < StandardError
|
15
|
+
def initialize
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Soap; end
|
4
|
+
module Soap::Webservice; end
|
5
|
+
|
6
|
+
class Soap::Webservice::Request
|
7
|
+
class << self
|
8
|
+
def header_attributes; {} end
|
9
|
+
|
10
|
+
def body_attributes; {} end
|
11
|
+
end
|
12
|
+
|
13
|
+
attr_reader :attributes
|
14
|
+
|
15
|
+
def initialize(attributes = {})
|
16
|
+
@attributes = attributes
|
17
|
+
validate_header_attrs!
|
18
|
+
validate_body_attrs!
|
19
|
+
end
|
20
|
+
|
21
|
+
def validate_header_attrs!
|
22
|
+
return if required_header.empty?
|
23
|
+
if !required_header.empty? && attributes.empty?
|
24
|
+
raise "Required attributes are missing: #{required_header}"
|
25
|
+
end
|
26
|
+
|
27
|
+
if !(required_header - attributes.keys).empty?
|
28
|
+
raise "Attribute #{required_header - attributes.keys} must be present"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def validate_body_attrs!
|
33
|
+
return if required_body.empty?
|
34
|
+
if !required_body.empty? && attributes.empty?
|
35
|
+
raise "Required attributes are missing: #{required_body}"
|
36
|
+
end
|
37
|
+
|
38
|
+
if !(required_body - attributes.keys).empty?
|
39
|
+
raise "Attribute #{required_body - attributes.keys} must be present"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def body_params
|
44
|
+
return {} if self.class.body_attributes.nil?
|
45
|
+
self.class.body_attributes.each.with_object({}) do |attr, attrs|
|
46
|
+
name = Soap.to_snakecase(attr[:name]).to_sym
|
47
|
+
value = attributes[name]
|
48
|
+
attrs[name] = value if value
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def header_params
|
53
|
+
return {} if self.class.header_attributes.nil?
|
54
|
+
self.class.header_attributes.each.with_object({}) do |attr, attrs|
|
55
|
+
name = Soap.to_snakecase(attr[:name]).to_sym
|
56
|
+
value = attributes[name]
|
57
|
+
attrs[name] = value if value
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def to_message
|
62
|
+
{
|
63
|
+
soap_header: header_params,
|
64
|
+
message: body_params
|
65
|
+
}
|
66
|
+
end
|
67
|
+
|
68
|
+
def to_xml
|
69
|
+
Gyoku.xml(
|
70
|
+
to_message,
|
71
|
+
key_converter: lambda { |key| Soap.to_camelcase(key) }
|
72
|
+
)
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def list_header_attrs
|
78
|
+
return {} if self.class.header_attributes.nil?
|
79
|
+
self.class.header_attributes.each.with_object(
|
80
|
+
required: [],
|
81
|
+
optional: []
|
82
|
+
) do |attr, attrs|
|
83
|
+
name = Soap.to_snakecase(attr[:name]).to_sym
|
84
|
+
if attr[:attributes].empty?
|
85
|
+
attrs[:required] << name
|
86
|
+
else
|
87
|
+
attrs[:optional] << name
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def list_body_attrs
|
93
|
+
return {} if self.class.body_attributes.nil?
|
94
|
+
self.class.body_attributes.each.with_object(
|
95
|
+
required: [],
|
96
|
+
optional: []
|
97
|
+
) do |attr, attrs|
|
98
|
+
name = Soap.to_snakecase(attr[:name]).to_sym
|
99
|
+
if attr[:attributes].empty?
|
100
|
+
attrs[:required] << name
|
101
|
+
else
|
102
|
+
attrs[:optional] << name
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def required_header
|
108
|
+
list_header_attrs[:required] || []
|
109
|
+
end
|
110
|
+
|
111
|
+
def required_body
|
112
|
+
list_body_attrs[:required] || []
|
113
|
+
end
|
114
|
+
|
115
|
+
def required_attrs
|
116
|
+
required_header + required_body
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Soap; end
|
4
|
+
module Soap::Webservice; end
|
5
|
+
|
6
|
+
class Soap::Webservice::Response
|
7
|
+
class << self
|
8
|
+
def header_attributes; {} end
|
9
|
+
|
10
|
+
def body_attributes; {} end
|
11
|
+
end
|
12
|
+
|
13
|
+
attr_reader :response
|
14
|
+
attr_reader :errors
|
15
|
+
|
16
|
+
def initialize(response)
|
17
|
+
@response = response
|
18
|
+
@errors = []
|
19
|
+
|
20
|
+
validate_errors!
|
21
|
+
validate_body_attrs!
|
22
|
+
end
|
23
|
+
|
24
|
+
# rubocop:disable all
|
25
|
+
def validate_errors!
|
26
|
+
case response.http.code
|
27
|
+
when 200
|
28
|
+
errors << Soap::Webservice::FaultError.new(response)
|
29
|
+
when 500
|
30
|
+
errors << Soap::Webservice::Error.new(response)
|
31
|
+
else
|
32
|
+
errors << Soap::Webservice::GenericError.new(response)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
# rubocop:enable all
|
36
|
+
|
37
|
+
def validate_body_attrs!
|
38
|
+
return if required_body.empty?
|
39
|
+
if !required_body.empty? && attributes.empty?
|
40
|
+
raise "Required attributes are missing #{required_body}"
|
41
|
+
end
|
42
|
+
|
43
|
+
if !(required_body - attributes.keys).empty?
|
44
|
+
raise "Attribute #{required_body - attributes.keys} must be present"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def header
|
49
|
+
response.header
|
50
|
+
end
|
51
|
+
|
52
|
+
def body
|
53
|
+
response.body
|
54
|
+
end
|
55
|
+
|
56
|
+
def decoded_body
|
57
|
+
response.body
|
58
|
+
end
|
59
|
+
|
60
|
+
def to_xml
|
61
|
+
response.to_xml
|
62
|
+
end
|
63
|
+
|
64
|
+
private
|
65
|
+
|
66
|
+
def list_body_attrs
|
67
|
+
return {} if self.class.body_attributes.nil?
|
68
|
+
self.class.body_attributes.each.with_object(
|
69
|
+
required: [],
|
70
|
+
optional: []
|
71
|
+
) do |attr, attrs|
|
72
|
+
name = Soap.to_snakecase(attr[:name]).to_sym
|
73
|
+
if attr[:attributes].empty?
|
74
|
+
attrs[:required] << name
|
75
|
+
else
|
76
|
+
attrs[:optional] << name
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def required_body
|
82
|
+
list_body_attrs[:required] || []
|
83
|
+
end
|
84
|
+
|
85
|
+
def required_attrs
|
86
|
+
required_body
|
87
|
+
end
|
88
|
+
end
|
data/pagopa-soap.gemspec
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path("lib", __dir__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
require "pago_pa/soap/version"
|
6
|
+
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = "pagopa-soap"
|
9
|
+
spec.version = PagoPA::SOAP::VERSION
|
10
|
+
spec.authors = ["Damiano Giacomello"]
|
11
|
+
spec.email = ["giacomello.damiano@gmail.com"]
|
12
|
+
|
13
|
+
spec.summary = "Ruby Wrapper for pagoPA SOAP API"
|
14
|
+
spec.description = "Ruby Wrapper for pagoPA SOAP API based on Savon"
|
15
|
+
spec.homepage = "https://github.com/italia/pagopa-soap-ruby"
|
16
|
+
spec.license = "MIT"
|
17
|
+
|
18
|
+
if spec.respond_to?(:metadata)
|
19
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
20
|
+
else
|
21
|
+
raise "RubyGems 2.0 or newer is required to protect against " \
|
22
|
+
"public gem pushes."
|
23
|
+
end
|
24
|
+
|
25
|
+
spec.required_ruby_version = ">= 2.3.0"
|
26
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
27
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(spec)/}) }
|
28
|
+
end
|
29
|
+
spec.bindir = "exe"
|
30
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
|
+
spec.require_paths = ["lib"]
|
32
|
+
|
33
|
+
spec.add_dependency "gyoku", "~> 1.3.1"
|
34
|
+
spec.add_dependency "nori", "~> 2.6"
|
35
|
+
spec.add_dependency "savon", "~> 2.12.0"
|
36
|
+
|
37
|
+
spec.add_development_dependency "bundler", "~> 1.16"
|
38
|
+
spec.add_development_dependency "coveralls", "~> 0"
|
39
|
+
spec.add_development_dependency "pry", "~> 0"
|
40
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
41
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
42
|
+
spec.add_development_dependency "rubocop", "0.57.2"
|
43
|
+
spec.add_development_dependency "rubocop-rspec", "1.27.0"
|
44
|
+
spec.add_development_dependency "webmock", ">= 3.4.2"
|
45
|
+
end
|
@@ -0,0 +1,214 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!--
|
3
|
+
Questo WSDL rappresenta l'interfaccia esposta dalla PAA
|
4
|
+
per la ricezione delle Ricevute Telematiche
|
5
|
+
-->
|
6
|
+
<wsdl:definitions
|
7
|
+
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
|
8
|
+
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
|
9
|
+
xmlns:ppt="http://ws.pagamenti.telematici.gov/"
|
10
|
+
xmlns:ppthead="http://ws.pagamenti.telematici.gov/ppthead"
|
11
|
+
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
12
|
+
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
|
13
|
+
xmlns:tns="http://NodoPagamentiSPC.spcoop.gov.it/servizi/PagamentiTelematiciRT"
|
14
|
+
name="PPT"
|
15
|
+
targetNamespace="http://NodoPagamentiSPC.spcoop.gov.it/servizi/PagamentiTelematiciRT">
|
16
|
+
<wsdl:types>
|
17
|
+
<xsd:schema version="2.1" targetNamespace="http://ws.pagamenti.telematici.gov/ppthead">
|
18
|
+
<xsd:simpleType name="stText35">
|
19
|
+
<xsd:restriction base="xsd:string">
|
20
|
+
<xsd:minLength value="1" />
|
21
|
+
<xsd:maxLength value="35" />
|
22
|
+
</xsd:restriction>
|
23
|
+
</xsd:simpleType>
|
24
|
+
<xsd:element name="intestazionePPT">
|
25
|
+
<xsd:complexType>
|
26
|
+
<xsd:sequence>
|
27
|
+
<xsd:element name="identificativoIntermediarioPA" type="ppthead:stText35" />
|
28
|
+
<xsd:element name="identificativoStazioneIntermediarioPA" type="ppthead:stText35" />
|
29
|
+
<xsd:element name="identificativoDominio" type="ppthead:stText35" />
|
30
|
+
<xsd:element name="identificativoUnivocoVersamento" type="ppthead:stText35" />
|
31
|
+
<xsd:element name="codiceContestoPagamento" type="ppthead:stText35" />
|
32
|
+
</xsd:sequence>
|
33
|
+
</xsd:complexType>
|
34
|
+
</xsd:element>
|
35
|
+
</xsd:schema>
|
36
|
+
<xsd:schema version="1.0" targetNamespace="http://ws.pagamenti.telematici.gov/">
|
37
|
+
<xsd:simpleType name="stText35">
|
38
|
+
<xsd:restriction base="xsd:string">
|
39
|
+
<xsd:minLength value="1" />
|
40
|
+
<xsd:maxLength value="35" />
|
41
|
+
</xsd:restriction>
|
42
|
+
</xsd:simpleType>
|
43
|
+
<!-- Wrapper Elements -->
|
44
|
+
<xsd:element name="paaInviaRT" type="ppt:paaInviaRT" />
|
45
|
+
<xsd:element name="paaInviaRTRisposta" type="ppt:paaInviaRTRisposta" />
|
46
|
+
|
47
|
+
<xsd:element name="paaInviaEsitoStorno" type="ppt:paaInviaEsitoStorno" />
|
48
|
+
<xsd:element name="paaInviaEsitoStornoRisposta" type="ppt:paaInviaEsitoStornoRisposta" />
|
49
|
+
|
50
|
+
<xsd:element name="paaInviaRichiestaRevoca" type="ppt:paaInviaRichiestaRevoca" />
|
51
|
+
<xsd:element name="paaInviaRichiestaRevocaRisposta" type="ppt:paaInviaRichiestaRevocaRisposta" />
|
52
|
+
|
53
|
+
<!-- Element Definition -->
|
54
|
+
<xsd:complexType name="paaInviaRT">
|
55
|
+
<xsd:sequence>
|
56
|
+
<xsd:element name="tipoFirma" type="xsd:string" />
|
57
|
+
<xsd:element name="rt" type="xsd:base64Binary" />
|
58
|
+
</xsd:sequence>
|
59
|
+
</xsd:complexType>
|
60
|
+
<xsd:complexType name="paaInviaRTRisposta">
|
61
|
+
<xsd:sequence>
|
62
|
+
<xsd:element name="paaInviaRTRisposta" type="ppt:esitoPaaInviaRT" />
|
63
|
+
</xsd:sequence>
|
64
|
+
</xsd:complexType>
|
65
|
+
<xsd:complexType name="esitoPaaInviaRT">
|
66
|
+
<xsd:complexContent>
|
67
|
+
<xsd:extension base="ppt:risposta">
|
68
|
+
<xsd:sequence>
|
69
|
+
<xsd:element name="esito" type="xsd:string" minOccurs="0" />
|
70
|
+
</xsd:sequence>
|
71
|
+
</xsd:extension>
|
72
|
+
</xsd:complexContent>
|
73
|
+
</xsd:complexType>
|
74
|
+
<xsd:complexType name="risposta">
|
75
|
+
<xsd:sequence>
|
76
|
+
<xsd:element name="fault" type="ppt:faultBean" minOccurs="0" />
|
77
|
+
</xsd:sequence>
|
78
|
+
</xsd:complexType>
|
79
|
+
<xsd:complexType name="faultBean">
|
80
|
+
<xsd:sequence>
|
81
|
+
<xsd:element name="faultCode" type="xsd:string" />
|
82
|
+
<xsd:element name="faultString" type="xsd:string" />
|
83
|
+
<xsd:element name="id" type="xsd:string" />
|
84
|
+
<xsd:element name="description" type="xsd:string" minOccurs="0" />
|
85
|
+
<xsd:element name="serial" type="xsd:int" minOccurs="0" />
|
86
|
+
<xsd:element name="originalFaultCode" type="xsd:string" minOccurs="0" />
|
87
|
+
<xsd:element name="originalFaultString" type="xsd:string" minOccurs="0" />
|
88
|
+
<xsd:element name="originalDescription" type="xsd:string" minOccurs="0" />
|
89
|
+
</xsd:sequence>
|
90
|
+
</xsd:complexType>
|
91
|
+
|
92
|
+
<xsd:complexType name="paaInviaEsitoStorno">
|
93
|
+
<xsd:sequence>
|
94
|
+
<xsd:element name="identificativoIntermediarioPA" type="ppt:stText35" />
|
95
|
+
<xsd:element name="identificativoStazioneIntermediarioPA" type="ppt:stText35" />
|
96
|
+
<xsd:element name="identificativoDominio" type="ppt:stText35" />
|
97
|
+
<xsd:element name="identificativoUnivocoVersamento" type="ppt:stText35" />
|
98
|
+
<xsd:element name="codiceContestoPagamento" type="ppt:stText35" />
|
99
|
+
<xsd:element name="er" type="xsd:base64Binary" />
|
100
|
+
</xsd:sequence>
|
101
|
+
</xsd:complexType>
|
102
|
+
|
103
|
+
<xsd:complexType name="paaInviaEsitoStornoRisposta">
|
104
|
+
<xsd:sequence>
|
105
|
+
<xsd:element name="paaInviaEsitoStornoRisposta" type="ppt:tipoInviaEsitoStornoRisposta" />
|
106
|
+
</xsd:sequence>
|
107
|
+
</xsd:complexType>
|
108
|
+
|
109
|
+
<xsd:complexType name="tipoInviaEsitoStornoRisposta">
|
110
|
+
<xsd:complexContent>
|
111
|
+
<xsd:extension base="ppt:risposta">
|
112
|
+
<xsd:sequence>
|
113
|
+
<xsd:element name="esito" type="xsd:string" minOccurs="0" />
|
114
|
+
</xsd:sequence>
|
115
|
+
</xsd:extension>
|
116
|
+
</xsd:complexContent>
|
117
|
+
</xsd:complexType>
|
118
|
+
|
119
|
+
<xsd:complexType name="paaInviaRichiestaRevoca">
|
120
|
+
<xsd:sequence>
|
121
|
+
<xsd:element name="identificativoDominio" type="ppt:stText35" />
|
122
|
+
<xsd:element name="identificativoUnivocoVersamento" type="ppt:stText35" />
|
123
|
+
<xsd:element name="codiceContestoPagamento" type="ppt:stText35" />
|
124
|
+
<xsd:element name="rr" type="xsd:base64Binary" />
|
125
|
+
</xsd:sequence>
|
126
|
+
</xsd:complexType>
|
127
|
+
|
128
|
+
<xsd:complexType name="paaInviaRichiestaRevocaRisposta">
|
129
|
+
<xsd:sequence>
|
130
|
+
<xsd:element name="paaInviaRichiestaRevocaRisposta" type="ppt:tipoInviaRichiestaRevocaRisposta" />
|
131
|
+
</xsd:sequence>
|
132
|
+
</xsd:complexType>
|
133
|
+
|
134
|
+
<xsd:complexType name="tipoInviaRichiestaRevocaRisposta">
|
135
|
+
<xsd:complexContent>
|
136
|
+
<xsd:extension base="ppt:risposta">
|
137
|
+
<xsd:sequence>
|
138
|
+
<xsd:element name="esito" type="xsd:string" minOccurs="0" />
|
139
|
+
</xsd:sequence>
|
140
|
+
</xsd:extension>
|
141
|
+
</xsd:complexContent>
|
142
|
+
</xsd:complexType>
|
143
|
+
</xsd:schema>
|
144
|
+
</wsdl:types>
|
145
|
+
<wsdl:message name="paaInviaRT">
|
146
|
+
<wsdl:part name="bodyrichiesta" element="ppt:paaInviaRT" />
|
147
|
+
<wsdl:part name="header" element="ppthead:intestazionePPT" />
|
148
|
+
</wsdl:message>
|
149
|
+
<wsdl:message name="paaInviaRTResponse">
|
150
|
+
<wsdl:part name="bodyrisposta" element="ppt:paaInviaRTRisposta" />
|
151
|
+
</wsdl:message>
|
152
|
+
<wsdl:message name="paaInviaEsitoStorno">
|
153
|
+
<wsdl:part name="bodyrichiesta" element="ppt:paaInviaEsitoStorno" />
|
154
|
+
</wsdl:message>
|
155
|
+
<wsdl:message name="paaInviaEsitoStornoResponse">
|
156
|
+
<wsdl:part name="bodyrisposta" element="ppt:paaInviaEsitoStornoRisposta" />
|
157
|
+
</wsdl:message>
|
158
|
+
<wsdl:message name="paaInviaRichiestaRevoca">
|
159
|
+
<wsdl:part name="bodyrichiesta" element="ppt:paaInviaRichiestaRevoca" />
|
160
|
+
</wsdl:message>
|
161
|
+
<wsdl:message name="paaInviaRichiestaRevocaResponse">
|
162
|
+
<wsdl:part name="bodyrisposta" element="ppt:paaInviaRichiestaRevocaRisposta" />
|
163
|
+
</wsdl:message>
|
164
|
+
<wsdl:portType name="PagamentiTelematiciRT">
|
165
|
+
<wsdl:operation name="paaInviaRT">
|
166
|
+
<wsdl:input message="tns:paaInviaRT" wsam:Action="http://ws.pagamenti.telematici.gov/PPT/paaInviaRTRichiesta" />
|
167
|
+
<wsdl:output message="tns:paaInviaRTResponse" wsam:Action="http://ws.pagamenti.telematici.gov/PPT/paaInviaRTRisposta" />
|
168
|
+
</wsdl:operation>
|
169
|
+
<wsdl:operation name="paaInviaEsitoStorno">
|
170
|
+
<wsdl:input message="tns:paaInviaEsitoStorno" wsam:Action="http://ws.pagamenti.telematici.gov/PPT/paaInviaEsitoStornoRichiesta" />
|
171
|
+
<wsdl:output message="tns:paaInviaEsitoStornoResponse" wsam:Action="http://ws.pagamenti.telematici.gov/PPT/paaInviaEsitoStornoRisposta" />
|
172
|
+
</wsdl:operation>
|
173
|
+
<wsdl:operation name="paaInviaRichiestaRevoca">
|
174
|
+
<wsdl:input message="tns:paaInviaRichiestaRevoca" wsam:Action="http://ws.pagamenti.telematici.gov/PPT/paaInviaRichiestaRevocaRichiesta" />
|
175
|
+
<wsdl:output message="tns:paaInviaRichiestaRevocaResponse" wsam:Action="http://ws.pagamenti.telematici.gov/PPT/paaInviaRichiestaRevocaRisposta" />
|
176
|
+
</wsdl:operation>
|
177
|
+
</wsdl:portType>
|
178
|
+
<wsdl:binding name="PagamentiTelematiciRTbinding" type="tns:PagamentiTelematiciRT">
|
179
|
+
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
|
180
|
+
<wsdl:operation name="paaInviaRT">
|
181
|
+
<soap:operation soapAction="paaInviaRT" />
|
182
|
+
<wsdl:input>
|
183
|
+
<soap:body parts="bodyrichiesta" use="literal" />
|
184
|
+
<soap:header message="tns:paaInviaRT" part="header" use="literal" />
|
185
|
+
</wsdl:input>
|
186
|
+
<wsdl:output>
|
187
|
+
<soap:body use="literal" />
|
188
|
+
</wsdl:output>
|
189
|
+
</wsdl:operation>
|
190
|
+
<wsdl:operation name="paaInviaEsitoStorno">
|
191
|
+
<soap:operation soapAction="paaInviaEsitoStorno" />
|
192
|
+
<wsdl:input>
|
193
|
+
<soap:body use="literal" />
|
194
|
+
</wsdl:input>
|
195
|
+
<wsdl:output>
|
196
|
+
<soap:body use="literal" />
|
197
|
+
</wsdl:output>
|
198
|
+
</wsdl:operation>
|
199
|
+
<wsdl:operation name="paaInviaRichiestaRevoca">
|
200
|
+
<soap:operation soapAction="paaInviaRichiestaRevoca" />
|
201
|
+
<wsdl:input>
|
202
|
+
<soap:body use="literal" />
|
203
|
+
</wsdl:input>
|
204
|
+
<wsdl:output>
|
205
|
+
<soap:body use="literal" />
|
206
|
+
</wsdl:output>
|
207
|
+
</wsdl:operation>
|
208
|
+
</wsdl:binding>
|
209
|
+
<wsdl:service name="PagamentiTelematiciRTservice">
|
210
|
+
<wsdl:port name="PPTPort" binding="tns:PagamentiTelematiciRTbinding">
|
211
|
+
<soap:address location="http://NodoPagamentiSPC.spcoop.gov.it/" />
|
212
|
+
</wsdl:port>
|
213
|
+
</wsdl:service>
|
214
|
+
</wsdl:definitions>
|