pagopa-soap 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|