citybox_api 0.1.0 → 0.9.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 +8 -8
- data/.gitignore +1 -0
- data/lib/citybox_api/branch_offices.rb +6 -9
- data/lib/citybox_api/regions.rb +6 -9
- data/lib/citybox_api/shipments.rb +141 -0
- data/lib/citybox_api/take_ups.rb +56 -0
- data/lib/citybox_api/tariff.rb +149 -0
- data/lib/citybox_api/utilities.rb +148 -0
- data/lib/citybox_api/version.rb +1 -1
- data/lib/citybox_api.rb +18 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NmFhOWYwMmI4NDQ2YzA0NTdjMmVjNGI3M2NlM2QyNzFhMGY0YTVlOQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NzdkZDQ0ZWM2YWI4OWEwNWE3MDQxYzA5N2IzZjliZDUzZjJkN2UyMA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NzM0NjNmNWJjMGRmMTE4NDJhODc0Zjk4NjU0YTA5YWE3YjI5N2QwNTg2Yjkx
|
10
|
+
ODVhYTI1M2IzZGQ4NGMzODM5NmMzYWZmMjI5MGJlMWQzMTRlMjI4MzBlMThi
|
11
|
+
Yjg2MjhlNmU5NWMzYmExNTZjODk4YjRmNmJiNzMxNzg4NDI1ZTY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YTlmZTAzYjAyODE3YTEyZDQ0MWVjNWFmZjA4ZjY5ZjdjMzZhY2Q4ZTkyYTE5
|
14
|
+
ZTAzNmE1YmQ2Y2I2ZDg3YjY3NmQ1MTVjMDQwYWMzZjhlZjJiM2Y5ZThlNTU5
|
15
|
+
YzkxZjUyODA4MDg3NjJhMmMwNDFkNjg4YmM4MTUzZDc0YWJjYmY=
|
data/.gitignore
CHANGED
@@ -23,9 +23,8 @@ module CityboxApi
|
|
23
23
|
xml_response = RestClient.post @server_url, xml, content_type: "text/xml"
|
24
24
|
json_response = Crack::XML.parse(xml_response)
|
25
25
|
json_response["soap:Envelope"]["soap:Body"]["listarTodasLasSucursalesResponse"]["listarTodasLasSucursalesResult"]["SucursalTO"]
|
26
|
-
rescue =>
|
27
|
-
|
28
|
-
return nil
|
26
|
+
rescue => error
|
27
|
+
return CityboxApi.catch_error(error)
|
29
28
|
end
|
30
29
|
end
|
31
30
|
|
@@ -46,9 +45,8 @@ module CityboxApi
|
|
46
45
|
xml_response = RestClient.post @server_url, xml, content_type: "text/xml"
|
47
46
|
json_response = Crack::XML.parse(xml_response)
|
48
47
|
json_response["soap:Envelope"]["soap:Body"]["listarSucursalesSegunComunaResponse"]["listarSucursalesSegunComunaResult"]["SucursalTO"]
|
49
|
-
rescue =>
|
50
|
-
|
51
|
-
return nil
|
48
|
+
rescue => error
|
49
|
+
return CityboxApi.catch_error(error)
|
52
50
|
end
|
53
51
|
end
|
54
52
|
|
@@ -76,9 +74,8 @@ module CityboxApi
|
|
76
74
|
xml_response = RestClient.post @server_url, xml, content_type: "text/xml"
|
77
75
|
json_response = Crack::XML.parse(xml_response)
|
78
76
|
json_response["soap:Envelope"]["soap:Body"]["consultaSucursalMasCercanaResponse"]["consultaSucursalMasCercanaResult"]
|
79
|
-
rescue =>
|
80
|
-
|
81
|
-
return nil
|
77
|
+
rescue => error
|
78
|
+
return CityboxApi.catch_error(error)
|
82
79
|
end
|
83
80
|
end
|
84
81
|
end
|
data/lib/citybox_api/regions.rb
CHANGED
@@ -24,9 +24,8 @@ module CityboxApi
|
|
24
24
|
xml_response = RestClient.post @server_url, xml, content_type: "text/xml"
|
25
25
|
json_response = Crack::XML.parse(xml_response)
|
26
26
|
json_response["soap:Envelope"]["soap:Body"]["listarTodasLasRegionesResponse"]["listarTodasLasRegionesResult"]["RegionTO"]
|
27
|
-
rescue =>
|
28
|
-
|
29
|
-
return nil
|
27
|
+
rescue => error
|
28
|
+
return CityboxApi.catch_error(error)
|
30
29
|
end
|
31
30
|
end
|
32
31
|
|
@@ -46,9 +45,8 @@ module CityboxApi
|
|
46
45
|
xml_response = RestClient.post @server_url, xml, content_type: "text/xml"
|
47
46
|
json_response = Crack::XML.parse(xml_response)
|
48
47
|
json_response["soap:Envelope"]["soap:Body"]["listarTodasLasComunasResponse"]["listarTodasLasComunasResult"]["ComunaTO"]
|
49
|
-
rescue =>
|
50
|
-
|
51
|
-
return nil
|
48
|
+
rescue => error
|
49
|
+
return CityboxApi.catch_error(error)
|
52
50
|
end
|
53
51
|
end
|
54
52
|
|
@@ -69,9 +67,8 @@ module CityboxApi
|
|
69
67
|
xml_response = RestClient.post @server_url, xml, content_type: "text/xml"
|
70
68
|
json_response = Crack::XML.parse(xml_response)
|
71
69
|
json_response["soap:Envelope"]["soap:Body"]["listarComunasSegunRegionResponse"]["listarComunasSegunRegionResult"]["ComunaTO"]
|
72
|
-
rescue =>
|
73
|
-
|
74
|
-
return nil
|
70
|
+
rescue => error
|
71
|
+
return CityboxApi.catch_error(error)
|
75
72
|
end
|
76
73
|
end
|
77
74
|
end
|
@@ -0,0 +1,141 @@
|
|
1
|
+
module CityboxApi
|
2
|
+
# module for shipments services
|
3
|
+
class Shipments
|
4
|
+
def initialize
|
5
|
+
raise CityboxApi::INVALID_CREDENTIALS if CityboxApi.configuration.key == nil
|
6
|
+
@user = CityboxApi.configuration.user
|
7
|
+
@password = CityboxApi.configuration.key
|
8
|
+
end
|
9
|
+
|
10
|
+
# sent an allow shipping request
|
11
|
+
def allow_shipment opts={}
|
12
|
+
server_url = "http://b2b.correos.cl:8008/ServicioAdmisionCEPExterno/cch/ws/enviosCEP/externo/implementacion/ServicioExternoAdmisionCEP.asmx"
|
13
|
+
opts = check_shipment_opts opts
|
14
|
+
xml = shipment_xml "admitirEnvio", opts
|
15
|
+
|
16
|
+
begin
|
17
|
+
xml_response = RestClient.post server_url, xml, content_type: "text/xml"
|
18
|
+
json_response = Crack::XML.parse(xml_response)
|
19
|
+
json_response["soap:Envelope"]["soap:Body"]["admitirEnvioResponse"]["admitirEnvioResult"]
|
20
|
+
rescue => error
|
21
|
+
return CityboxApi.catch_error(error)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
def validate_shipment opts={}
|
27
|
+
server_url = "http://b2b.correos.cl:8008/ServicioValidacionAdmisionCEPExterno/cch/ws/enviosCEP/externo/implementacion/ServicioExternoValidaAdmisionCEP.asmx"
|
28
|
+
opts = check_shipment_opts opts
|
29
|
+
xml = shipment_xml "validarEnvio", opts
|
30
|
+
|
31
|
+
begin
|
32
|
+
xml_response = RestClient.post server_url, xml, content_type: "text/xml"
|
33
|
+
json_response = Crack::XML.parse(xml_response)
|
34
|
+
json_response["soap:Envelope"]["soap:Body"]["validarEnvioResponse"]["validarEnvioResult"]
|
35
|
+
rescue => error
|
36
|
+
return CityboxApi.catch_error(error)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def cancel_shipment opts={}
|
41
|
+
server_url = "http://b2b.correos.cl:8008/ServicioAnulacionExterno/cch/ws/enviosCEP/externo/implementacion/ServicioExternoAnulacionEnvio.asmx"
|
42
|
+
|
43
|
+
#check params
|
44
|
+
CityboxApi.check_params [ :shipment_number, :admission_code, :sender_code ], opts
|
45
|
+
|
46
|
+
|
47
|
+
xml = "<?xml version='1.0' encoding='utf-8'?>
|
48
|
+
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
|
49
|
+
<soap:Body>
|
50
|
+
<anularEnvio xmlns='http://tempuri.org/'>
|
51
|
+
<usuario>#{@user}</usuario>
|
52
|
+
<contrasena>#{@password}</contrasena>
|
53
|
+
<numeroEnvio>#{opts[:shipment_number]}</numeroEnvio>
|
54
|
+
<codigoAdmision>#{opts[:admission_code]}</codigoAdmision>
|
55
|
+
<clienteRemitente>#{opts[:sender_code]}</clienteRemitente>
|
56
|
+
</anularEnvio>
|
57
|
+
</soap:Body>
|
58
|
+
</soap:Envelope>"
|
59
|
+
|
60
|
+
begin
|
61
|
+
xml_response = RestClient.post server_url, xml, content_type: "text/xml"
|
62
|
+
json_response = Crack::XML.parse(xml_response)
|
63
|
+
json_response["soap:Envelope"]["soap:Body"]["anularEnvioResponse"]["anularEnvioResult"]
|
64
|
+
rescue => error
|
65
|
+
return CityboxApi.catch_error(error)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
private
|
70
|
+
|
71
|
+
def check_shipment_opts opts
|
72
|
+
#default values
|
73
|
+
opts[:sender_country] ||= "056" #chile
|
74
|
+
opts[:receiver_country] ||= "056" #chile
|
75
|
+
opts[:declared_import_value] ||= "NO"
|
76
|
+
opts[:destination_email] ||= "NO"
|
77
|
+
opts[:success_return] ||= "N"
|
78
|
+
opts[:documents_number] ||= 0
|
79
|
+
opts[:secure_payment] ||= "N"
|
80
|
+
|
81
|
+
#check params
|
82
|
+
CityboxApi.check_params [
|
83
|
+
:admission_code, :sender_code, :sender_street, :sender_commune, :sender_contact_person, :receiver_name,
|
84
|
+
:receiver_street, :receiver_commune, :service_code, :pieces_number, :kilograms, :reference_number,
|
85
|
+
:declared_import_value, :payment_type
|
86
|
+
], opts
|
87
|
+
|
88
|
+
return opts
|
89
|
+
end
|
90
|
+
|
91
|
+
def shipment_xml service_name, opts={}
|
92
|
+
"<?xml version='1.0' encoding='utf-8'?>
|
93
|
+
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
|
94
|
+
<soap:Body>
|
95
|
+
<#{service_name} xmlns='http://tempuri.org/'>
|
96
|
+
<usuario>#{@user}</usuario>
|
97
|
+
<contrasena>#{@password}</contrasena>
|
98
|
+
<admisionTo>
|
99
|
+
<ExtensionData />
|
100
|
+
<CodigoAdmision>#{opts[:admission_code]}</CodigoAdmision>
|
101
|
+
<ClienteRemitente>#{opts[:sender_code]}</ClienteRemitente>
|
102
|
+
<NombreRemitente>#{opts[:sender_name]}</NombreRemitente>
|
103
|
+
<DireccionRemitente>#{opts[:sender_street]}</DireccionRemitente>
|
104
|
+
<PaisRemitente>#{opts[:sender_country]}</PaisRemitente>
|
105
|
+
<CodigoPostalRemitente></CodigoPostalRemitente>
|
106
|
+
<ComunaRemitente>#{opts[:sender_commune]}</ComunaRemitente>
|
107
|
+
<RutRemitente>#{opts[:sender_rut]}</RutRemitente>
|
108
|
+
<PersonaContactoRemitente>#{opts[:sender_contact_person]}</PersonaContactoRemitente>
|
109
|
+
<TelefonoContactoRemitente>#{opts[:sender_contact_phone]}</TelefonoContactoRemitente>
|
110
|
+
<ClienteDestinatario></ClienteDestinatario>
|
111
|
+
<CentroDestinatario></CentroDestinatario>
|
112
|
+
<NombreDestinatario>#{opts[:receiver_name]}</NombreDestinatario>
|
113
|
+
<DireccionDestinatario>#{opts[:receiver_street]}</DireccionDestinatario>
|
114
|
+
<PaisDestinatario>#{opts[:receiver_country]}</PaisDestinatario>
|
115
|
+
<CodigoPostalDestinatario></CodigoPostalDestinatario>
|
116
|
+
<ComunaDestinatario>#{opts[:receiver_commune]}</ComunaDestinatario>
|
117
|
+
<RutDestinatario>#{opts[:receiver_rut]}</RutDestinatario>
|
118
|
+
<PersonaContactoDestinatario>#{opts[:receiver_contact_person]}</PersonaContactoDestinatario>
|
119
|
+
<TelefonoContactoDestinatario>#{opts[:receiver_contact_phone].to_i}</TelefonoContactoDestinatario>
|
120
|
+
<CodigoServicio>#{opts[:service_code]}</CodigoServicio>
|
121
|
+
<NumeroTotalPiezas>#{opts[:pieces_number].to_i}</NumeroTotalPiezas>
|
122
|
+
<Kilos>#{opts[:kilograms]}</Kilos>
|
123
|
+
<Volumen>#{opts[:volume].to_i}</Volumen>
|
124
|
+
<NumeroReferencia>#{opts[:reference_number]}</NumeroReferencia>
|
125
|
+
<ImporteReembolso>0</ImporteReembolso>
|
126
|
+
<ImporteValorDeclarado>#{opts[:declared_import_value].to_i}</ImporteValorDeclarado>
|
127
|
+
<TipoPortes>#{opts[:payment_type]}</TipoPortes>
|
128
|
+
<Observaciones>#{opts[:observations]}</Observaciones>
|
129
|
+
<Observaciones2></Observaciones2>
|
130
|
+
<EmailDestino>#{opts[:destination_email]}</EmailDestino>
|
131
|
+
<TipoMercancia>#{opts[:commodity_type]}</TipoMercancia>
|
132
|
+
<DevolucionConforme>#{opts[:success_return]}</DevolucionConforme>
|
133
|
+
<NumeroDocumentos>#{opts[:documents_number].to_i}</NumeroDocumentos>
|
134
|
+
<PagoSeguro>#{opts[:secure_payment]}</PagoSeguro>
|
135
|
+
</admisionTo>
|
136
|
+
</#{service_name}>
|
137
|
+
</soap:Body>
|
138
|
+
</soap:Envelope>"
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module CityboxApi
|
2
|
+
# module for take ups services
|
3
|
+
class TakeUps
|
4
|
+
def initialize
|
5
|
+
raise CityboxApi::INVALID_CREDENTIALS if CityboxApi.configuration.key == nil
|
6
|
+
@user = CityboxApi.configuration.user
|
7
|
+
@password = CityboxApi.configuration.key
|
8
|
+
@server_url = "http://b2b.correos.cl:8008/ServicioRetiroEnvioExterno/cch/ws/retirosCEP/externo/implementacion/ServicioExternoRetiro.asmx"
|
9
|
+
end
|
10
|
+
|
11
|
+
def register opts={}
|
12
|
+
# default values
|
13
|
+
opts[:sender_country] ||= "056"
|
14
|
+
|
15
|
+
# check params
|
16
|
+
CityboxApi.check_params [ :admission_code, :sender_code, :sender_contact_person, :sender_contact_phone, :take_up_date,
|
17
|
+
:take_up_from_hour, :take_up_to_hour ], opts
|
18
|
+
|
19
|
+
# format for date: aaaa-mm-dd
|
20
|
+
xml = "<?xml version='1.0' encoding='utf-8'?>
|
21
|
+
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
|
22
|
+
<soap:Body>
|
23
|
+
<registrarRetiro xmlns='http://tempuri.org/'>
|
24
|
+
<usuario>#{@user}</usuario>
|
25
|
+
<contrasena>#{@password}</contrasena>
|
26
|
+
<retiroTO>
|
27
|
+
<ExtensionData />
|
28
|
+
<CodigoAdmision>#{opts[:admission_code]}</CodigoAdmision>
|
29
|
+
<ClienteRemitente>#{opts[:sender_code]}</ClienteRemitente>
|
30
|
+
<CentroRemitente></CentroRemitente>
|
31
|
+
<NombreRemitente>#{opts[:sender_name]}</NombreRemitente>
|
32
|
+
<DireccionRemitente>#{opts[:sender_address]}</DireccionRemitente>
|
33
|
+
<PaisRemitente>#{opts[:sender_country]}</PaisRemitente>
|
34
|
+
<CodigoPostalRemitente>#{opts[:sender_postal_code]}</CodigoPostalRemitente>
|
35
|
+
<ComunaRemitente>#{opts[:sender_commune]}</ComunaRemitente>
|
36
|
+
<RutRemitente>#{opts[:sender_rut]}</RutRemitente>
|
37
|
+
<PersonaContactoRemitente>#{opts[:sender_contact_person]}</PersonaContactoRemitente>
|
38
|
+
<TelefonoContactoRemitente>#{opts[:sender_contact_phone]}</TelefonoContactoRemitente>
|
39
|
+
<FechaRetiro>#{opts[:take_up_date]}</FechaRetiro>
|
40
|
+
<HoraDesde>#{opts[:take_up_from_hour]}</HoraDesde>
|
41
|
+
<HoraHasta>#{opts[:take_up_to_hour]}</HoraHasta>
|
42
|
+
</retiroTO>
|
43
|
+
</registrarRetiro>
|
44
|
+
</soap:Body>
|
45
|
+
</soap:Envelope>"
|
46
|
+
|
47
|
+
begin
|
48
|
+
xml_response = RestClient.post @server_url, xml, content_type: "text/xml"
|
49
|
+
json_response = Crack::XML.parse(xml_response)
|
50
|
+
json_response["soap:Envelope"]["soap:Body"]["registrarRetiroResponse"]["registrarRetiroResult"]
|
51
|
+
rescue => error
|
52
|
+
return CityboxApi.catch_error(error)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,149 @@
|
|
1
|
+
module CityboxApi
|
2
|
+
# module for tariff services
|
3
|
+
class Tariff
|
4
|
+
def initialize
|
5
|
+
raise CityboxApi::INVALID_CREDENTIALS if CityboxApi.configuration.key == nil
|
6
|
+
@user = CityboxApi.configuration.user
|
7
|
+
@password = CityboxApi.configuration.key
|
8
|
+
@server_url = "http://b2b.correos.cl:8008/ServicioTarificacionCEPEmpresasExterno/cch/ws/tarificacionCEP/externo/implementacion/ExternoTarificacion.asmx"
|
9
|
+
end
|
10
|
+
|
11
|
+
def apply_tariff_to_person opts={}
|
12
|
+
server_url = "http://b2b.correos.cl:8008/ServicioTarificadorPersonasExterno/cch/ws/tarificacion/externo/implementacion/ServicioExternoTarificadorPersonas.asmx"
|
13
|
+
|
14
|
+
# default values
|
15
|
+
opts[:scope] ||= "1" # national scope
|
16
|
+
|
17
|
+
# check_params
|
18
|
+
CityboxApi.check_params [ :origin_iata, :destination_iata, :scope, :weight ], opts
|
19
|
+
|
20
|
+
xml = "<?xml version='1.0' encoding='utf-8'?>
|
21
|
+
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
|
22
|
+
<soap:Body>
|
23
|
+
<aplicarTarifaPersona xmlns='http://tempuri.org/'>
|
24
|
+
<usuario>#{@user}</usuario>
|
25
|
+
<contrasena>#{@password}</contrasena>
|
26
|
+
<iataOrigen>#{opts[:origin_iata]}</iataOrigen>
|
27
|
+
<iataDestino>#{opts[:destination_iata]}</iataDestino>
|
28
|
+
<cobertura>#{opts[:scope]}</cobertura>
|
29
|
+
<peso>#{opts[:weight].to_f}</peso>
|
30
|
+
</aplicarTarifaPersona>
|
31
|
+
</soap:Body>
|
32
|
+
</soap:Envelope>"
|
33
|
+
begin
|
34
|
+
xml_response = RestClient.post server_url, xml, content_type: "text/xml"
|
35
|
+
json_response = Crack::XML.parse(xml_response)
|
36
|
+
json_response["soap:Envelope"]["soap:Body"]["aplicarTarifaPersonaResponse"]["aplicarTarifaPersonaResult"]
|
37
|
+
rescue => error
|
38
|
+
return CityboxApi.catch_error(error)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def see_scope opts={}
|
43
|
+
# default values
|
44
|
+
opts[:sender_country] ||= "056" # chilean by default
|
45
|
+
opts[:receiver_country] ||= "056" # chilean by default
|
46
|
+
opts[:insured_import_value] ||= "NO"
|
47
|
+
|
48
|
+
# check params
|
49
|
+
CityboxApi.check_params [ :sender_country, :sender_commune, :receiver_country, :receiver_commune, :payment_type, :number_of_pieces, :kilograms ], opts
|
50
|
+
|
51
|
+
xml = "<?xml version='1.0' encoding='utf-8'?>
|
52
|
+
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
|
53
|
+
<soap:Body>
|
54
|
+
<consultaCobertura xmlns='http://tempuri.org/'>
|
55
|
+
<usuario>#{@user}</usuario>
|
56
|
+
<contrasena>#{@password}</contrasena>
|
57
|
+
<consultaCobertura>
|
58
|
+
<ExtensionData />
|
59
|
+
<CodigoPostalDestinatario>#{opts[:receiver_postal_code]}</CodigoPostalDestinatario>
|
60
|
+
<CodigoPostalRemitente>#{opts[:sender_postal_code]}</CodigoPostalRemitente>
|
61
|
+
<ComunaDestino>#{opts[:receiver_commune]}</ComunaDestino>
|
62
|
+
<ComunaRemitente>#{opts[:sender_commune]}</ComunaRemitente>
|
63
|
+
<ImporteReembolso>#{opts[:import_refund]}</ImporteReembolso>
|
64
|
+
<ImporteValorAsegurado>#{opts[:insured_import_value]}</ImporteValorAsegurado>
|
65
|
+
<Kilos>#{opts[:kilograms]}</Kilos>
|
66
|
+
<NumeroTotalPieza>#{opts[:number_of_pieces]}</NumeroTotalPieza>
|
67
|
+
<PaisDestinatario>#{opts[:receiver_country]}</PaisDestinatario>
|
68
|
+
<PaisRemitente>#{opts[:sender_country]}</PaisRemitente>
|
69
|
+
<TipoPortes>#{opts[:payment_type]}</TipoPortes>
|
70
|
+
<Volumen>#{opts[:volume]}</Volumen>
|
71
|
+
</consultaCobertura>
|
72
|
+
</consultaCobertura>
|
73
|
+
</soap:Body>
|
74
|
+
</soap:Envelope>"
|
75
|
+
|
76
|
+
begin
|
77
|
+
xml_response = RestClient.post @server_url, xml, content_type: "text/xml"
|
78
|
+
json_response = Crack::XML.parse(xml_response)
|
79
|
+
json_response["soap:Envelope"]["soap:Body"]["consultaCoberturaResponse"]["consultaCoberturaResult"]["ServicioTO"]
|
80
|
+
rescue => error
|
81
|
+
return CityboxApi.catch_error(error)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def see_scope_by_product opts={}
|
86
|
+
# default values
|
87
|
+
opts[:sender_country] ||= "056" # chilean by default
|
88
|
+
opts[:receiver_country] ||= "056" # chilean by default
|
89
|
+
opts[:insured_import_value] ||= "NO"
|
90
|
+
|
91
|
+
# check params
|
92
|
+
CityboxApi.check_params [ :service_code, :sender_country, :sender_commune, :receiver_country, :receiver_commune, :payment_type, :number_of_pieces, :kilograms ], opts
|
93
|
+
|
94
|
+
xml = "<?xml version='1.0' encoding='utf-8'?>
|
95
|
+
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
|
96
|
+
<soap:Body>
|
97
|
+
<consultaCoberturaPorProducto xmlns='http://tempuri.org/'>
|
98
|
+
<usuario>#{@user}</usuario>
|
99
|
+
<contrasena>#{@password}</contrasena>
|
100
|
+
<consultaCobertura>
|
101
|
+
<ExtensionData />
|
102
|
+
<CodigoPostalDestinatario>#{opts[:receiver_postal_code]}</CodigoPostalDestinatario>
|
103
|
+
<CodigoPostalRemitente>#{opts[:sender_postal_code]}</CodigoPostalRemitente>
|
104
|
+
<CodigoServicio>#{opts[:service_code]}</CodigoServicio>
|
105
|
+
<ComunaDestino>#{opts[:receiver_commune]}</ComunaDestino>
|
106
|
+
<ComunaRemitente>#{opts[:sender_commune]}</ComunaRemitente>
|
107
|
+
<ImporteReembolso>#{opts[:import_refund]}</ImporteReembolso>
|
108
|
+
<ImporteValorAsegurado>#{opts[:insured_import_value]}</ImporteValorAsegurado>
|
109
|
+
<Kilos>#{opts[:kilograms]}</Kilos>
|
110
|
+
<NumeroTotalPieza>#{opts[:number_of_pieces]}</NumeroTotalPieza>
|
111
|
+
<PaisDestinatario>#{opts[:receiver_country]}</PaisDestinatario>
|
112
|
+
<PaisRemitente>#{opts[:sender_country]}</PaisRemitente>
|
113
|
+
<TipoPortes>#{opts[:payment_type]}</TipoPortes>
|
114
|
+
<Volumen>#{opts[:volume]}</Volumen>
|
115
|
+
</consultaCobertura>
|
116
|
+
</consultaCoberturaPorProducto>
|
117
|
+
</soap:Body>
|
118
|
+
</soap:Envelope>"
|
119
|
+
|
120
|
+
begin
|
121
|
+
xml_response = RestClient.post @server_url, xml, content_type: "text/xml"
|
122
|
+
json_response = Crack::XML.parse(xml_response)
|
123
|
+
json_response["soap:Envelope"]["soap:Body"]["consultaCoberturaPorProductoResponse"]["consultaCoberturaPorProductoResult"]
|
124
|
+
rescue => error
|
125
|
+
return CityboxApi.catch_error(error)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
def see_products_by_client
|
130
|
+
xml = "<?xml version='1.0' encoding='utf-8'?>
|
131
|
+
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
|
132
|
+
<soap:Body>
|
133
|
+
<consultaProductosPorCliente xmlns='http://tempuri.org/'>
|
134
|
+
<usuario>#{@user}</usuario>
|
135
|
+
<contrasena>#{@password}</contrasena>
|
136
|
+
</consultaProductosPorCliente>
|
137
|
+
</soap:Body>
|
138
|
+
</soap:Envelope>"
|
139
|
+
|
140
|
+
begin
|
141
|
+
xml_response = RestClient.post @server_url, xml, content_type: "text/xml"
|
142
|
+
json_response = Crack::XML.parse(xml_response)
|
143
|
+
json_response["soap:Envelope"]["soap:Body"]["consultaProductosPorClienteResponse"]["consultaProductosPorClienteResult"]["ProductoTo"]
|
144
|
+
rescue => error
|
145
|
+
return CityboxApi.catch_error(error)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
@@ -0,0 +1,148 @@
|
|
1
|
+
module CityboxApi
|
2
|
+
# module formany getter utilities
|
3
|
+
class Utilities
|
4
|
+
def initialize
|
5
|
+
raise CityboxApi::INVALID_CREDENTIALS if CityboxApi.configuration.key == nil
|
6
|
+
@user = CityboxApi.configuration.user
|
7
|
+
@password = CityboxApi.configuration.key
|
8
|
+
end
|
9
|
+
|
10
|
+
def list_cityboxes
|
11
|
+
server_url = "http://b2b.correos.cl:8008/ServicioCityboxExterno/cch/ws/citybox/externo/implementacion/ServicioCityboxExterno.asmx"
|
12
|
+
xml = "<?xml version='1.0' encoding='utf-8'?>
|
13
|
+
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
|
14
|
+
<soap:Body>
|
15
|
+
<listarCityboxDisponibles xmlns='http://tempuri.org/'>
|
16
|
+
<usuario>#{@user}</usuario>
|
17
|
+
<contrasena>#{@password}</contrasena>
|
18
|
+
</listarCityboxDisponibles>
|
19
|
+
</soap:Body>
|
20
|
+
</soap:Envelope>"
|
21
|
+
|
22
|
+
begin
|
23
|
+
xml_response = RestClient.post server_url, xml, content_type: "text/xml"
|
24
|
+
json_response = Crack::XML.parse(xml_response)
|
25
|
+
json_response["soap:Envelope"]["soap:Body"]["listarCityboxDisponiblesResponse"]["listarCityboxDisponiblesResult"]["CityboxTO"]
|
26
|
+
rescue => error
|
27
|
+
return CityboxApi.catch_error(error)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def list_master_products
|
32
|
+
server_url = "http://b2b.correos.cl:8008/ServicioProductosCorreosExterno/cch/ws/ProductosCorreos/externo/implementacion/ServicioExternoProductoCorreos.asmx"
|
33
|
+
xml = "<?xml version='1.0' encoding='utf-8'?>
|
34
|
+
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
|
35
|
+
<soap:Body>
|
36
|
+
<listarMaestroProductos xmlns='http://tempuri.org/'>
|
37
|
+
<usuario>#{@user}</usuario>
|
38
|
+
<contrasena>#{@password}</contrasena>
|
39
|
+
</listarMaestroProductos>
|
40
|
+
</soap:Body>
|
41
|
+
</soap:Envelope>"
|
42
|
+
|
43
|
+
begin
|
44
|
+
xml_response = RestClient.post server_url, xml, content_type: "text/xml"
|
45
|
+
json_response = Crack::XML.parse(xml_response)
|
46
|
+
json_response["soap:Envelope"]["soap:Body"]["listarMaestroProductosResponse"]["listarMaestroProductosResult"]["ProductoTO"]
|
47
|
+
rescue => error
|
48
|
+
return CityboxApi.catch_error(error)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def see_scl_documents shipment_number
|
53
|
+
server_url = "http://b2b.correos.cl:8008/ServicioConsultaAvisoDocumentoSCLExterno/cch/ws/externo/implementacion/ServicioExternoConsultaAvisoDocumentoSCL.asmx"
|
54
|
+
xml = "<?xml version='1.0' encoding='utf-8'?>
|
55
|
+
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
|
56
|
+
<soap:Body>
|
57
|
+
<consultaDocumentosSCL xmlns='http://tempuri.org/'>
|
58
|
+
<usuario>#{@user}</usuario>
|
59
|
+
<contrasena>#{@password}</contrasena>
|
60
|
+
<numeroEnvio>#{shipment_number}</numeroEnvio>
|
61
|
+
</consultaDocumentosSCL>
|
62
|
+
</soap:Body>
|
63
|
+
</soap:Envelope>"
|
64
|
+
|
65
|
+
begin
|
66
|
+
xml_response = RestClient.post server_url, xml, content_type: "text/xml"
|
67
|
+
json_response = Crack::XML.parse(xml_response)
|
68
|
+
json_response["soap:Envelope"]["soap:Body"]["consultaDocumentosSCLResponse"]["consultaDocumentosSCLResult"]["DocumentoSclTO"]
|
69
|
+
rescue => error
|
70
|
+
return CityboxApi.catch_error(error)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def see_fivps shipment_number
|
75
|
+
server_url = "http://b2b.correos.cl:8008/ServicioConsultaFivpsExterno/cch/ws/aduana/externo/implementacion/ServicioExternoConsultaFivps.asmx"
|
76
|
+
xml = "<?xml version='1.0' encoding='utf-8'?>
|
77
|
+
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
|
78
|
+
<soap:Body>
|
79
|
+
<consultaFIVPS xmlns='http://tempuri.org/'>
|
80
|
+
<usuario>#{@user}</usuario>
|
81
|
+
<contrasena>#{@password}</contrasena>
|
82
|
+
<numeroEnvio>#{shipment_number}</numeroEnvio>
|
83
|
+
</consultaFIVPS>
|
84
|
+
</soap:Body>
|
85
|
+
</soap:Envelope>"
|
86
|
+
|
87
|
+
begin
|
88
|
+
xml_response = RestClient.post server_url, xml, content_type: "text/xml"
|
89
|
+
json_response = Crack::XML.parse(xml_response)
|
90
|
+
json_response["soap:Envelope"]["soap:Body"]["consultaFIVPSResponse"]["consultaFIVPSResult"]["FivpsTO"]
|
91
|
+
rescue => error
|
92
|
+
return CityboxApi.catch_error(error)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def normalize_address opts={}
|
97
|
+
server_url = "http://b2b.correos.cl:8008/ServicioNormalizacionExterno/cch/ws/distribucionGeografica/externo/implementacion/ServicioExternoNormalizacion.asmx"
|
98
|
+
# default values
|
99
|
+
opts[:request_id] ||= rand(10000)
|
100
|
+
|
101
|
+
# check params
|
102
|
+
CityboxApi.check_params [:full_address, :commune], opts
|
103
|
+
|
104
|
+
xml = "<?xml version='1.0' encoding='utf-8'?>
|
105
|
+
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
|
106
|
+
<soap:Body>
|
107
|
+
<normalizarDireccion xmlns='http://tempuri.org/'>
|
108
|
+
<usuario>#{@user}</usuario>
|
109
|
+
<contrasena>#{@password}</contrasena>
|
110
|
+
<id>#{opts[:request_id]}</id>
|
111
|
+
<direccion>#{opts[:full_address]}</direccion>
|
112
|
+
<comuna>#{opts[:commune]}</comuna>
|
113
|
+
</normalizarDireccion>
|
114
|
+
</soap:Body>
|
115
|
+
</soap:Envelope>"
|
116
|
+
|
117
|
+
begin
|
118
|
+
xml_response = RestClient.post server_url, xml, content_type: "text/xml"
|
119
|
+
json_response = Crack::XML.parse(xml_response)
|
120
|
+
json_response["soap:Envelope"]["soap:Body"]["normalizarDireccionResponse"]["normalizarDireccionResult"]
|
121
|
+
rescue => error
|
122
|
+
return CityboxApi.catch_error(error)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def claim_status claim_number
|
127
|
+
server_url = "http://b2b.correos.cl:8008/ServicioEstadoDeReclamosExterno/cch/ws/reclamos/implementacion/ServicioExternoEstadoDeReclamos.asmx"
|
128
|
+
xml = "<?xml version='1.0' encoding='utf-8'?>
|
129
|
+
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
|
130
|
+
<soap:Body>
|
131
|
+
<consultaEstadoDeReclamo xmlns='http://tempuri.org/'>
|
132
|
+
<usuario>#{@user}</usuario>
|
133
|
+
<contrasena>#{@password}</contrasena>
|
134
|
+
<numero>#{claim_number}</numero>
|
135
|
+
</consultaEstadoDeReclamo>
|
136
|
+
</soap:Body>
|
137
|
+
</soap:Envelope>"
|
138
|
+
|
139
|
+
begin
|
140
|
+
xml_response = RestClient.post server_url, xml, content_type: "text/xml"
|
141
|
+
json_response = Crack::XML.parse(xml_response)
|
142
|
+
json_response["soap:Envelope"]["soap:Body"]["consultaEstadoDeReclamoResponse"]["consultaEstadoDeReclamoResult"]
|
143
|
+
rescue => error
|
144
|
+
return CityboxApi.catch_error(error)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
data/lib/citybox_api/version.rb
CHANGED
data/lib/citybox_api.rb
CHANGED
@@ -5,10 +5,27 @@ require 'crack'
|
|
5
5
|
require 'citybox_api/regions'
|
6
6
|
require 'citybox_api/branch_offices'
|
7
7
|
require 'citybox_api/configuration'
|
8
|
-
|
8
|
+
require 'citybox_api/shipments'
|
9
|
+
require 'citybox_api/take_ups'
|
10
|
+
require 'citybox_api/tariff'
|
11
|
+
require 'citybox_api/utilities'
|
9
12
|
|
10
13
|
module CityboxApi
|
11
14
|
# Credentials for API
|
12
15
|
INVALID_CREDENTIALS = "Key cant be blank!"
|
13
16
|
CityboxApi.configure
|
17
|
+
|
18
|
+
def self.catch_error error
|
19
|
+
puts error
|
20
|
+
json_response = Crack::XML.parse(error.response)
|
21
|
+
fault_code = json_response["soap:Envelope"]["soap:Body"]["soap:Fault"]["faultcode"]
|
22
|
+
fault_string = json_response["soap:Envelope"]["soap:Body"]["soap:Fault"]["faultstring"]
|
23
|
+
fault = {faultCode: fault_code, fault_string: fault_string}
|
24
|
+
puts fault
|
25
|
+
return nil
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.check_params params, opts
|
29
|
+
params.each{|p| raise "#{p} can't be blank" unless opts[p]}
|
30
|
+
end
|
14
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: citybox_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joaquin Nuñez
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -103,6 +103,10 @@ files:
|
|
103
103
|
- lib/citybox_api/branch_offices.rb
|
104
104
|
- lib/citybox_api/configuration.rb
|
105
105
|
- lib/citybox_api/regions.rb
|
106
|
+
- lib/citybox_api/shipments.rb
|
107
|
+
- lib/citybox_api/take_ups.rb
|
108
|
+
- lib/citybox_api/tariff.rb
|
109
|
+
- lib/citybox_api/utilities.rb
|
106
110
|
- lib/citybox_api/version.rb
|
107
111
|
homepage: https://github.com/joacong/citybox_api
|
108
112
|
licenses:
|