sw-sdk-ruby 0.0.2.2.pre

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 84a76dd98feda41bc5a481b9bbeee672f16f49e8312a30dad22cdee6c066fad5
4
+ data.tar.gz: a1b5ea10e0e97669266eb15d05ab4f7b58503895c0ccb5b1eff28c71e7ebbab1
5
+ SHA512:
6
+ metadata.gz: 70261ad1f5c360bf9f21eac2734b3a62895fd2c66741661cac962d96315e6796af9d8b2844b66bad37e35ef7012143d0744c353a10f6b96f44803b491a14b0c1
7
+ data.tar.gz: 2854d41336fa6b3721185e96c4a47b369641ce27f53f6fb4819b251be6b58031f44d7d9641e65bbdd923bd53d732620f7bd178ac5c0db45bac3122e28b71b42b
data/README.md ADDED
@@ -0,0 +1,470 @@
1
+ [![Ruby](http://sw.com.mx/images/logo.png)](http://sw.com.mx/)
2
+ # Requerimientos #
3
+
4
+ **Ruby 2.1** o superior.
5
+
6
+ [Net/Http](https://rubygems.org/gems/net-http-persistent/versions/3.0.0)
7
+
8
+ [URI](https://rubygems.org/gems/uri-handler/versions/1.0.2)
9
+
10
+ **Instalación con RubyGems**
11
+
12
+ Ejecutar los comandos directamente en la consola tal cual aparecen en la página de rubygems, en este caso:
13
+
14
+ >- gem install net-http-persistent
15
+ >- gem install uri-handler
16
+
17
+ # Consumo #
18
+
19
+ Para efectos prácticos, usaremos el siguiente array asociativo como conjunto de parámetros utilizados por los servicios.
20
+
21
+ > params = {"url" => 'http://services.test.sw.com.mx', "user" => 'demo', "password" => '123456789'}
22
+
23
+ ## Authentication ##
24
+
25
+ Parámetros necesarios: url, user y password.
26
+
27
+ La clase de authentication, nos sirve para obtener un token de 2 hrs de duración. Podrá ser utilizado en los siguientes servicios para consumo.
28
+
29
+ **Funciones disponibles**
30
+
31
+ - set(Params)
32
+ - authentication
33
+
34
+ Importar la clase al comienzo de nuestro programa de la siguiente manera
35
+
36
+ ```rb
37
+ require 'Authentication/auth.rb'
38
+ ```
39
+
40
+ **Ejemplo de uso**
41
+
42
+ ```rb
43
+ Auth::set(params)
44
+ token = Auth::authentication.get_token
45
+ ```
46
+
47
+ Las funciones utilizables para el objeto obtenido son las siguientes
48
+
49
+ **En caso de éxito**
50
+ >- *get_status*
51
+ >- *get_data*
52
+ >- *get_response*
53
+ >- *get_time_expire*
54
+ >- *get_token*
55
+ >- *get_status_code*
56
+
57
+ **En caso de error**
58
+ >- *get_message*
59
+ >- *get_messageDetail*
60
+
61
+ ## Balance ##
62
+
63
+ Parámetros necesarios: [url, user y password] o [url y token].
64
+
65
+ La clase de Balance nos ayuda a obtener información referente a nuestra cuenta. Así sabremos cuando nos quedan pocos timbres o cuantos tenemos asignados, etc.
66
+
67
+ Importar la clase al comienzo de nuestro programa de la siguiente manera
68
+
69
+ ```rb
70
+ require 'Authentication/auth.rb'
71
+ require 'Balance/balance.rb'
72
+ ```
73
+
74
+ **Ejemplo de uso**
75
+
76
+ ```rb
77
+ Balance::set(params)
78
+ response = Balance::account_balance
79
+ timbres = response.get_data['saldoTimbres']
80
+ ```
81
+
82
+ Las funciones utilizables para el objeto obtenido son las siguientes
83
+
84
+ **En caso de éxito**
85
+ >- *get_status*
86
+ >- *get_data*
87
+ >- *get_response*
88
+ >- *get_status_code*
89
+
90
+ **En caso de error**
91
+ >- *get_message*
92
+ >- *get_messageDetail*
93
+
94
+ ## Cancelación ##
95
+
96
+ Parámetros necesarios: [url, user y password] o [url y token]. Además de los parámetros que nos sean necesarios dependiendo del tipo de cancelación a usar.
97
+
98
+ La clase de Cancelation nos servirá para cancelar algún comprobante anteriormente ya timbrado, teniendo diversas opciones para poder cancelar dicho documento.
99
+
100
+ **Funciones disponibles**
101
+
102
+ - cancel_csd(uuid, rfc, password_csd, b64_csd, b64_key)
103
+ - cancel_uuid(uuid, rfc)
104
+ - cancel_pfx(uuid, rfc, password_csd, b64_pfx)
105
+ - cancel_xml(xml_cancel)
106
+
107
+ Importar la clase al comienzo de nuestro programa de la siguiente manera
108
+
109
+ ```rb
110
+ require 'Authentication/auth.rb'
111
+ require 'Cancelation/cancelation.rb'
112
+ ```
113
+
114
+ **Ejemplo de uso**
115
+
116
+ ```rb
117
+ Cancelation::set(params)
118
+ response_csd = Cancelation::cancel_csd(uuid, rfc, password_csd, b64_csd, b64_key)
119
+ response_uuid = Cancelation::cancel_uuid(uuid, rfc)
120
+ response_pfx = Cancelation::cancel_pfx(uuid, rfc, password_csd, b64_pfx)
121
+ response_xml = Cancelation::cancel_xml(xml_cancel)
122
+ ```
123
+
124
+ Las funciones utilizables para estos objetos de cancelación son los siguientes
125
+
126
+ **En caso de éxito**
127
+ >- *get_status*
128
+ >- *get_data*
129
+ >- *get_response*
130
+ >- *get_status_code*
131
+
132
+ **En caso de error**
133
+ >- *get_message*
134
+ >- *get_messageDetail*
135
+
136
+ ## Issue ##
137
+
138
+ Parámetros necesarios: [user, password y url] o [token y url], así como el XML a timbrar utilizando emisión-timbrado.
139
+
140
+ La clase Issue nos ayudará a timbrar nuestros documentos XML por medio de emisión-timbrado. A diferencia de la clase Stamp, esta clase además de timbrar el documento le pondrá el sello.
141
+ Nota: Para realizar el sellado, los certificados del **rfc emisor** deberán estar almacenados en el administrador de timbres.
142
+
143
+ **Funciones disponibles**
144
+
145
+ - set(params)
146
+ - issue_v1(xml, b64)
147
+ - issue_v2(xml, b64)
148
+ - issue_v3(xml, b64)
149
+ - issue_v4(xml, b64)
150
+ - > **b64** es un parámetro opcional y se debe indicar en *true* si el XML va encodeado en base64. De no indicarse por defecto se tomará el valor de *false*
151
+
152
+ Importar la clase al comienzo de nuestro programa de la siguiente manera
153
+
154
+ ```rb
155
+ require 'Authentication/auth.rb'
156
+ require 'Issue/issue.rb'
157
+ ```
158
+
159
+ **Ejemplo de uso**
160
+
161
+ ```rb
162
+ Issue::set(params)
163
+ response = Issue::issue_v4(xml,false)
164
+ File.open(response.get_data['uuid']+'.xml', 'w') { |file| file.write(response.get_data['cfdi']) }
165
+ ```
166
+
167
+ Las funciones correspondientes al objeto que regresan estas funciones son las siguientes
168
+
169
+ **En caso de éxito**
170
+ >- *get_status*
171
+ >- *get_data*
172
+ >- *get_response*
173
+ >- *get_status_code*
174
+
175
+ **En caso de error**
176
+ >- *get_message*
177
+ >- *get_messageDetail*
178
+
179
+ ## IssueJson ##
180
+
181
+ Parámetros necesarios: [user, password y url] o [token y url], así como el JSON a timbrar utilizando emisión-timbrado.
182
+
183
+ La clase Issue nos ayudará a timbrar nuestros documentos JSON por medio de emisión-timbrado.
184
+
185
+ **Funciones disponibles**
186
+
187
+ - set(params)
188
+ - issue_JSON_v1(json)
189
+ - issue_JSON_v2(json)
190
+ - issue_JSON_v3(json)
191
+ - issue_JSON_v4(json)
192
+
193
+ Importar la clase al comienzo de nuestro programa de la siguiente manera
194
+
195
+ ```rb
196
+ require 'Authentication/auth.rb'
197
+ require 'Issue/issue.rb'
198
+ ```
199
+
200
+ **Ejemplo de uso**
201
+
202
+ ```rb
203
+ Issue::set(params)
204
+ response = Issue::issue_JSON_v4(json)
205
+ File.open(response.get_data['uuid']+'.xml', 'w') { |file| file.write(response.get_data['cfdi']) }
206
+ ```
207
+
208
+ Las funciones correspondientes al objeto que regresan estas funciones son las siguientes
209
+
210
+ **En caso de éxito**
211
+ >- *get_status*
212
+ >- *get_data*
213
+ >- *get_response*
214
+ >- *get_status_code*
215
+
216
+ **En caso de error**
217
+ >- *get_message*
218
+ >- *get_messageDetail*
219
+
220
+ ## Stamp ##
221
+
222
+ Parámetros necesarios: [user, password y url] o [token y url], así como el XML a timbrar.
223
+
224
+ La clase Stamp se utiliza para el timbrado de documentos XML. El documento deberá venir ya con el sello.
225
+
226
+ **Funciones disponibles**
227
+
228
+ - set(params)
229
+ - stamp_v1(xml, b64)
230
+ - stamp_v2(xml, b64)
231
+ - stamp_v3(xml, b64)
232
+ - stamp_v4(xml, b64)
233
+ > **b64** es un parámetro opcional y se debe indicar en *true* si el XML va encodeado en base 64. De no indicarse por defecto se tomará el valor de *false*
234
+
235
+ Importar la clase al comienzo de nuestro programa de la siguiente manera
236
+
237
+ ```rb
238
+ require 'Authentication/auth.rb'
239
+ require 'Stamp/stamp.rb'
240
+ ```
241
+
242
+ Ejemplo de uso
243
+
244
+ ```rb
245
+ Stamp::set(params)
246
+ response = Stamp::stamp_v4(xml)
247
+ File.open(response.get_data['uuid']+'.xml', 'w') { |file| file.write(response.get_data['cfdi']) }
248
+ ```
249
+ Las funciones correspondientes al objeto que regresan estas funciones son las siguientes
250
+
251
+ **En caso de éxito**
252
+ >- *get_status*
253
+ >- *get_data*
254
+ >- *get_response*
255
+ >- *get_status_code*
256
+
257
+ **En caso de error**
258
+ >- *get_message*
259
+ >- *get_messageDetail*
260
+ ## Validación ##
261
+
262
+ Parámetros necesarios: [user, password y url] o [token y url]. Además de parámetros adicionales según sea el caso.
263
+
264
+ La clase Validation servirá para validar que algunas cosas se encuentren de manera correcta antes de proceder al timbrado del mismo. Por ejemplo, nos pueden ayudar a decir si nuestro XML no tiene algún error, o consultar algún RFC de la lista de contribuyentes obligados.
265
+
266
+ Funciones disponibles
267
+
268
+ - set(params)
269
+ - validate_xml(xml)
270
+ - validate_LRFC(rfc)
271
+ - validate_LCO(no_cert)
272
+
273
+ Importar la clase al comienzo de nuestro programa de la siguiente manera
274
+
275
+ ```rb
276
+ require 'Authentication/auth.rb'
277
+ require 'Validation/validate.rb'
278
+ ```
279
+
280
+ Ejemplo de uso
281
+
282
+ ```rb
283
+ Validate::set(params)
284
+ response_xml = Validate::validateXml(xml)
285
+ puts response_xml.get_response
286
+ response_LRFC = Validate::validate_LRFC(rfc)
287
+ puts response_LRFC.get_data
288
+ response_LCO = Validate::validate_LCO(no_cert)
289
+ puts responseNoCert.get_data
290
+ ```
291
+
292
+ Las funciones correspondientes al objeto que regresan estas funciones son las siguientes
293
+
294
+ **En caso de éxito**
295
+ >- *get_status*
296
+ >- *get_data*
297
+ >- *get_response*
298
+ >- *get_status_code*
299
+
300
+ **En caso de error**
301
+ >- *get_message*
302
+ >- *get_messageDetail*
303
+
304
+ ## Pendings ##
305
+
306
+ Parámetros necesarios: [user, password y url] o [token y url]. Además de el RFC del cual consultaremos los UUID's pendientes.
307
+
308
+ La clase Pendings servirá para obtener una lista de UUID's que tenga pendientes el RFC.
309
+
310
+ **Funciones disponibles**
311
+
312
+ - set(params)
313
+ - get_pendings(rfc)
314
+
315
+ Importar la clase al comienzo de nuestro programa de la siguiente manera
316
+
317
+ ```rb
318
+ require 'Authentication/auth.rb'
319
+ require 'Pendings/pendings.rb'
320
+ ```
321
+
322
+ **Ejemplo de uso**
323
+
324
+ ```rb
325
+ rfc = 'LAN7008173R5'
326
+ Pendings::set(params)
327
+ reponse = Pendings::get_pendings(rfc)
328
+ ```
329
+
330
+ Las funciones correspondientes al objeto que regresan estas funciones son las siguientes
331
+
332
+ **En caso de éxito**
333
+ >- *get_status*
334
+ >- *get_data*
335
+ >- *get_response*
336
+ >- *get_status_code*
337
+
338
+ **En caso de error**
339
+ >- *get_message*
340
+ >- *get_messageDetail*
341
+
342
+ ## AcceptReject ##
343
+
344
+ Parámetros necesarios: [user, password y url] o [token y url]. Además de parámetros adicionales según sea el caso.
345
+
346
+ La clase AcceptReject servirá para aceptar o rechazar alguna factura que tenga pendiente el RFC asociado.
347
+
348
+ **Funciones disponibles**
349
+
350
+ - set(params)
351
+ - accept_reject_csd(uuids, rfc, password, csd, key)
352
+ - accept_reject_pfx(uuids, rfc, password, pfx)
353
+ - accept_reject_uuid(uuid, rfc, action)
354
+ - accept_reject_xml(xml)
355
+ > Action puede ser "aceptacion" o "rechazo"
356
+
357
+ Importar la clase al comienzo de nuestro programa de la siguiente manera
358
+
359
+ ```rb
360
+ require 'Authentication/auth.rb'
361
+ require 'AcceptReject/accept_reject.rb'
362
+ ```
363
+
364
+ **Ejemplo de uso**
365
+
366
+ ```rb
367
+ b64_csd = read_file('../../resources/b64CSD.txt')
368
+ b64_key = read_file('../../resources/b64Key.txt')
369
+ password_csd = '12345678a'
370
+ uuids = []
371
+ uuids << {"uuid" => "6b02b155-25fd-488d-862b-5a5dc5694b62", "action" => "Rechazo"}
372
+ uuids << {"uuid" => "ef47cd9e-b495-483d-b7ad-7f374fe8e353", "action" => "Rechazo"}
373
+ rfc = 'LAN7008173R5'
374
+ AcceptReject::set(params)
375
+ response = AcceptReject::accept_reject_csd(uuids, rfc, password_csd, b64_csd, b64_key)
376
+ puts response.get_response
377
+ ```
378
+
379
+ Las funciones correspondientes al objeto que regresan estas funciones son las siguientes
380
+
381
+ **En caso de éxito**
382
+ >- *get_status*
383
+ >- *get_data*
384
+ >- *get_response*
385
+ >- *get_status_code*
386
+
387
+ **En caso de error**
388
+ >- *get_message*
389
+ >- *get_messageDetail*
390
+
391
+ ## Relations ##
392
+
393
+ Parámetros necesarios: [user, password y url] o [token y url]. Además de parámetros adicionales según sea el caso.
394
+
395
+ La clase Relations servirá para consultar las facturas que se encuentren relacionadas a un UUID.
396
+
397
+ **Funciones disponibles**
398
+
399
+ - set(params)
400
+ - relations_csd(uuid, rfc, passwordcsd, b64CSD, b64Key)
401
+ - relations_pfx(uuid, rfc, passwordcsd, b64PFX)
402
+ - relations_uuid(uuid, rfc)
403
+ - relations_xml(xml)
404
+ Importar la clase al comienzo de nuestro programa de la siguiente manera
405
+
406
+ ```rb
407
+ require 'Authentication/Auth.rb'
408
+ require 'Relations/relations.rb'
409
+ ```
410
+
411
+ **Ejemplo de uso**
412
+
413
+ ```rb
414
+ b64_csd = read_file('../../resources/b64CSD.txt')
415
+ b64_key = read_file('../../resources/b64Key.txt')
416
+ password_csd = '12345678a'
417
+ uuid = "77e5ee7e-518e-48d1-b719-2562eaf9cb1f"
418
+ rfc = 'LAN7008173R5'
419
+ Relations::set(params)
420
+ response = Relations::relations_csd(uuid, rfc, password_csd, b64_csd, b64_key)
421
+ ```
422
+
423
+ Las funciones correspondientes al objeto que regresan estas funciones son las siguientes
424
+
425
+ **En caso de éxito**
426
+ >- *get_status*
427
+ >- *get_data*
428
+ >- *get_response*
429
+ >- *get_status_code*
430
+
431
+ **En caso de error**
432
+ >- *get_message*
433
+ >- *get_messageDetail*
434
+
435
+ ## Status Cfdi ##
436
+
437
+ Parámetros necesarios: [url de consulta, action], así como parámetros correspondientes a la factura como son: rfcEmisor, rfcReceptor, total, y uuid.
438
+
439
+ La clase Status Cfdi servirá para consultar el estatus de cancelación, si es cancelable, vigente o cancelada de nuestras facturas.
440
+
441
+ **Funciones disponibles**
442
+
443
+ - status(rfc_emisor, rfc_receptor, total, uuid, url, action)
444
+
445
+ Importar la clase al comienzo de nuestro programa de la siguiente manera
446
+
447
+ ```rb
448
+ require_relative 'StatusCfdi/status_cfdi.rb'
449
+ ```
450
+
451
+ **Ejemplo de uso**
452
+
453
+ ```rb
454
+ url = 'https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc'
455
+ action = 'http://tempuri.org/IConsultaCFDIService/Consulta'
456
+ rfc_emisor = 'LAN7008173R5'
457
+ rfc_receptor = 'LAN8507268IA'
458
+ total = '5800.00'
459
+ uuid = 'a9143107-25c5-4fb9-b0eb-2fcbcb855967'
460
+ response = StatusCfdi::status(rfc_emisor, rfc_receptor, total, uuid, url, action)
461
+ ```
462
+
463
+ Las funciones correspondientes al objeto que regresan estas funciones son las siguientes
464
+
465
+ >- *get_status_code*
466
+ >- *get_response*
467
+ >- *get_codigoEstatus*
468
+ >- *get_esCancelable*
469
+ >- *get_estado*
470
+ >- *get_estatusCancelacion*