transbank-sdk 1.5.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (155) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -0
  3. data/README.md +0 -2
  4. data/lib/transbank/sdk/common/api_constants.rb +23 -0
  5. data/lib/transbank/sdk/common/base_transaction.rb +18 -0
  6. data/lib/transbank/sdk/common/integration_api_keys.rb +9 -0
  7. data/lib/transbank/sdk/common/integration_commerce_codes.rb +68 -0
  8. data/lib/transbank/sdk/common/validation.rb +19 -0
  9. data/lib/transbank/sdk/patpass/patpass_by_webpay/transaction.rb +33 -85
  10. data/lib/transbank/sdk/patpass/patpass_comercio/inscription.rb +48 -71
  11. data/lib/transbank/sdk/shared/request_service.rb +93 -0
  12. data/lib/transbank/sdk/shared/transbank_error.rb +5 -0
  13. data/lib/transbank/sdk/version.rb +1 -1
  14. data/lib/transbank/sdk/webpay/oneclick/mall_inscription.rb +52 -0
  15. data/lib/transbank/sdk/webpay/oneclick/mall_transaction.rb +66 -0
  16. data/lib/transbank/sdk/webpay/transaccion_completa/mall_transaction.rb +67 -0
  17. data/lib/transbank/sdk/webpay/transaccion_completa/transaction.rb +70 -0
  18. data/lib/transbank/sdk/webpay/webpay_plus/mall_transaction.rb +79 -0
  19. data/lib/transbank/sdk/webpay/webpay_plus/transaction.rb +59 -73
  20. data/lib/transbank/sdk/webpay/webpay_plus_modal/transaction.rb +62 -0
  21. data/lib/transbank/sdk.rb +16 -16
  22. metadata +15 -135
  23. data/lib/transbank/sdk/oneclick/base.rb +0 -64
  24. data/lib/transbank/sdk/oneclick/errors/oneclick_error.rb +0 -16
  25. data/lib/transbank/sdk/oneclick/inscription/errors/mall_inscription_delete_error.rb +0 -16
  26. data/lib/transbank/sdk/oneclick/inscription/errors/mall_inscription_finish_error.rb +0 -16
  27. data/lib/transbank/sdk/oneclick/inscription/errors/mall_inscription_start_error.rb +0 -16
  28. data/lib/transbank/sdk/oneclick/inscription/errors/oneclick_mall_inscription_errors.rb +0 -3
  29. data/lib/transbank/sdk/oneclick/inscription/inscription.rb +0 -3
  30. data/lib/transbank/sdk/oneclick/inscription/responses/mall_inscription_delete_response.rb +0 -18
  31. data/lib/transbank/sdk/oneclick/inscription/responses/mall_inscription_finish_response.rb +0 -15
  32. data/lib/transbank/sdk/oneclick/inscription/responses/mall_inscription_start_response.rb +0 -14
  33. data/lib/transbank/sdk/oneclick/inscription/responses/oneclick_mall_inscription_responses.rb +0 -3
  34. data/lib/transbank/sdk/oneclick/mall/errors/mall_transaction_authorize_error.rb +0 -16
  35. data/lib/transbank/sdk/oneclick/mall/errors/mall_transaction_refund_error.rb +0 -16
  36. data/lib/transbank/sdk/oneclick/mall/errors/mall_transaction_status_error.rb +0 -16
  37. data/lib/transbank/sdk/oneclick/mall/errors/oneclick_mall_errors.rb +0 -4
  38. data/lib/transbank/sdk/oneclick/mall/mall_inscription.rb +0 -73
  39. data/lib/transbank/sdk/oneclick/mall/mall_transaction.rb +0 -97
  40. data/lib/transbank/sdk/oneclick/mall/oneclick_mall.rb +0 -4
  41. data/lib/transbank/sdk/oneclick/mall/responses/mall_transaction_authorize_response.rb +0 -16
  42. data/lib/transbank/sdk/oneclick/mall/responses/mall_transaction_refund_response.rb +0 -16
  43. data/lib/transbank/sdk/oneclick/mall/responses/mall_transaction_status_response.rb +0 -15
  44. data/lib/transbank/sdk/oneclick/mall/responses/oneclick_mall_responses.rb +0 -4
  45. data/lib/transbank/sdk/oneclick/mall_deferred/errors/mall_deferred_transaction_capture_error.rb +0 -16
  46. data/lib/transbank/sdk/oneclick/mall_deferred/mall_deferred_inscription.rb +0 -20
  47. data/lib/transbank/sdk/oneclick/mall_deferred/mall_deferred_transaction.rb +0 -42
  48. data/lib/transbank/sdk/oneclick/mall_deferred/responses/mall_deferred_transaction_capture_response.rb +0 -16
  49. data/lib/transbank/sdk/oneclick/oneclick.rb +0 -12
  50. data/lib/transbank/sdk/onepay/base.rb +0 -125
  51. data/lib/transbank/sdk/onepay/errors/errors.rb +0 -17
  52. data/lib/transbank/sdk/onepay/errors/integration_type_error.rb +0 -8
  53. data/lib/transbank/sdk/onepay/errors/invalid_options_error.rb +0 -8
  54. data/lib/transbank/sdk/onepay/errors/item_error.rb +0 -8
  55. data/lib/transbank/sdk/onepay/errors/refund_create_error.rb +0 -8
  56. data/lib/transbank/sdk/onepay/errors/response_error.rb +0 -8
  57. data/lib/transbank/sdk/onepay/errors/shopping_cart_error.rb +0 -8
  58. data/lib/transbank/sdk/onepay/errors/signature_error.rb +0 -8
  59. data/lib/transbank/sdk/onepay/errors/transaction_commit_error.rb +0 -8
  60. data/lib/transbank/sdk/onepay/errors/transaction_create_error.rb +0 -8
  61. data/lib/transbank/sdk/onepay/errors/transbank_error.rb +0 -9
  62. data/lib/transbank/sdk/onepay/models/channels.rb +0 -15
  63. data/lib/transbank/sdk/onepay/models/item.rb +0 -103
  64. data/lib/transbank/sdk/onepay/models/models.rb +0 -10
  65. data/lib/transbank/sdk/onepay/models/refund.rb +0 -50
  66. data/lib/transbank/sdk/onepay/models/shopping_cart.rb +0 -65
  67. data/lib/transbank/sdk/onepay/models/transaction.rb +0 -143
  68. data/lib/transbank/sdk/onepay/requests/refund_create_request.rb +0 -45
  69. data/lib/transbank/sdk/onepay/requests/request.rb +0 -18
  70. data/lib/transbank/sdk/onepay/requests/requests.rb +0 -9
  71. data/lib/transbank/sdk/onepay/requests/transaction_commit_request.rb +0 -48
  72. data/lib/transbank/sdk/onepay/requests/transaction_create_request.rb +0 -85
  73. data/lib/transbank/sdk/onepay/responses/refund_create_response.rb +0 -24
  74. data/lib/transbank/sdk/onepay/responses/response.rb +0 -18
  75. data/lib/transbank/sdk/onepay/responses/responses.rb +0 -9
  76. data/lib/transbank/sdk/onepay/responses/transaction_commit_response.rb +0 -39
  77. data/lib/transbank/sdk/onepay/responses/transaction_create_response.rb +0 -32
  78. data/lib/transbank/sdk/patpass/errors/integration_type_error.rb +0 -8
  79. data/lib/transbank/sdk/patpass/errors/patpass_error.rb +0 -15
  80. data/lib/transbank/sdk/patpass/patpass_by_webpay/base.rb +0 -47
  81. data/lib/transbank/sdk/patpass/patpass_by_webpay/errors/patpass_by_webpay_errors.rb +0 -12
  82. data/lib/transbank/sdk/patpass/patpass_by_webpay/errors/transaction_commit_error.rb +0 -15
  83. data/lib/transbank/sdk/patpass/patpass_by_webpay/errors/transaction_create_error.rb +0 -15
  84. data/lib/transbank/sdk/patpass/patpass_by_webpay/errors/transaction_status_error.rb +0 -15
  85. data/lib/transbank/sdk/patpass/patpass_by_webpay/options.rb +0 -9
  86. data/lib/transbank/sdk/patpass/patpass_by_webpay/patpass_by_webpay.rb +0 -16
  87. data/lib/transbank/sdk/patpass/patpass_by_webpay/responses/patpass_by_webpay_responses.rb +0 -3
  88. data/lib/transbank/sdk/patpass/patpass_by_webpay/responses/transaction_commit_response.rb +0 -20
  89. data/lib/transbank/sdk/patpass/patpass_by_webpay/responses/transaction_create_response.rb +0 -15
  90. data/lib/transbank/sdk/patpass/patpass_by_webpay/responses/transaction_status_response.rb +0 -21
  91. data/lib/transbank/sdk/patpass/patpass_comercio/base.rb +0 -47
  92. data/lib/transbank/sdk/patpass/patpass_comercio/errors/inscription_start_error.rb +0 -15
  93. data/lib/transbank/sdk/patpass/patpass_comercio/errors/inscription_status_error.rb +0 -15
  94. data/lib/transbank/sdk/patpass/patpass_comercio/errors/patpass_comercio_errors.rb +0 -2
  95. data/lib/transbank/sdk/patpass/patpass_comercio/options.rb +0 -9
  96. data/lib/transbank/sdk/patpass/patpass_comercio/patpass_comercio.rb +0 -5
  97. data/lib/transbank/sdk/patpass/patpass_comercio/responses/inscription_start_response.rb +0 -13
  98. data/lib/transbank/sdk/patpass/patpass_comercio/responses/inscription_status_response.rb +0 -13
  99. data/lib/transbank/sdk/patpass/patpass_comercio/responses/patpass_comercio_responses.rb +0 -2
  100. data/lib/transbank/sdk/transaccion_completa/base.rb +0 -51
  101. data/lib/transbank/sdk/transaccion_completa/errors/transaccion_completa_error.rb +0 -16
  102. data/lib/transbank/sdk/transaccion_completa/errors/transaccion_completa_errors.rb +0 -7
  103. data/lib/transbank/sdk/transaccion_completa/errors/transaction_capture_error.rb +0 -14
  104. data/lib/transbank/sdk/transaccion_completa/errors/transaction_commit_error.rb +0 -14
  105. data/lib/transbank/sdk/transaccion_completa/errors/transaction_create_error.rb +0 -14
  106. data/lib/transbank/sdk/transaccion_completa/errors/transaction_installments_error.rb +0 -14
  107. data/lib/transbank/sdk/transaccion_completa/errors/transaction_refund_error.rb +0 -14
  108. data/lib/transbank/sdk/transaccion_completa/errors/transaction_status_error.rb +0 -14
  109. data/lib/transbank/sdk/transaccion_completa/mall/mall_transaction.rb +0 -197
  110. data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_capture_response.rb +0 -12
  111. data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_commit_response.rb +0 -15
  112. data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_installments_response.rb +0 -11
  113. data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_responses.rb +0 -4
  114. data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_status_response.rb +0 -14
  115. data/lib/transbank/sdk/transaccion_completa/options.rb +0 -7
  116. data/lib/transbank/sdk/transaccion_completa/responses/transaccion_completa_responses.rb +0 -6
  117. data/lib/transbank/sdk/transaccion_completa/responses/transaction_capture_response.rb +0 -12
  118. data/lib/transbank/sdk/transaccion_completa/responses/transaction_commit_response.rb +0 -16
  119. data/lib/transbank/sdk/transaccion_completa/responses/transaction_create_response.rb +0 -10
  120. data/lib/transbank/sdk/transaccion_completa/responses/transaction_installments_response.rb +0 -13
  121. data/lib/transbank/sdk/transaccion_completa/responses/transaction_refund_response.rb +0 -14
  122. data/lib/transbank/sdk/transaccion_completa/responses/transaction_status_response.rb +0 -16
  123. data/lib/transbank/sdk/transaccion_completa/transaccion_completa.rb +0 -7
  124. data/lib/transbank/sdk/transaccion_completa/transaction.rb +0 -144
  125. data/lib/transbank/sdk/transbank_error.rb +0 -6
  126. data/lib/transbank/sdk/utils/json_utils.rb +0 -75
  127. data/lib/transbank/sdk/utils/net_helper.rb +0 -82
  128. data/lib/transbank/sdk/utils/request_builder.rb +0 -96
  129. data/lib/transbank/sdk/utils/signature_utils.rb +0 -49
  130. data/lib/transbank/sdk/utils/utils.rb +0 -9
  131. data/lib/transbank/sdk/webpay/errors/integration_type_error.rb +0 -8
  132. data/lib/transbank/sdk/webpay/errors/webpay_error.rb +0 -14
  133. data/lib/transbank/sdk/webpay/webpay_plus/base.rb +0 -74
  134. data/lib/transbank/sdk/webpay/webpay_plus/deferred/deferred_transaction.rb +0 -108
  135. data/lib/transbank/sdk/webpay/webpay_plus/deferred/errors/transaction_capture_error.rb +0 -16
  136. data/lib/transbank/sdk/webpay/webpay_plus/deferred/errors/webpay_plus_deferred_errors.rb +0 -1
  137. data/lib/transbank/sdk/webpay/webpay_plus/deferred/responses/transaction_capture_response.rb +0 -22
  138. data/lib/transbank/sdk/webpay/webpay_plus/deferred/responses/webpay_plus_deferred_responses.rb +0 -1
  139. data/lib/transbank/sdk/webpay/webpay_plus/errors/transaction_commit_error.rb +0 -17
  140. data/lib/transbank/sdk/webpay/webpay_plus/errors/transaction_create_error.rb +0 -16
  141. data/lib/transbank/sdk/webpay/webpay_plus/errors/transaction_refund_error.rb +0 -16
  142. data/lib/transbank/sdk/webpay/webpay_plus/errors/transaction_status_error.rb +0 -16
  143. data/lib/transbank/sdk/webpay/webpay_plus/errors/webpay_plus_errors.rb +0 -13
  144. data/lib/transbank/sdk/webpay/webpay_plus/mall/mall_transaction.rb +0 -88
  145. data/lib/transbank/sdk/webpay/webpay_plus/mall/responses/mall_transaction_commit_response.rb +0 -23
  146. data/lib/transbank/sdk/webpay/webpay_plus/mall/responses/mall_transaction_status_response.rb +0 -21
  147. data/lib/transbank/sdk/webpay/webpay_plus/mall/responses/webpay_plus_mall_responses.rb +0 -2
  148. data/lib/transbank/sdk/webpay/webpay_plus/mall_deferred/mall_deferred_transaction.rb +0 -109
  149. data/lib/transbank/sdk/webpay/webpay_plus/options.rb +0 -9
  150. data/lib/transbank/sdk/webpay/webpay_plus/responses/transaction_commit_response.rb +0 -20
  151. data/lib/transbank/sdk/webpay/webpay_plus/responses/transaction_create_response.rb +0 -15
  152. data/lib/transbank/sdk/webpay/webpay_plus/responses/transaction_refund_response.rb +0 -19
  153. data/lib/transbank/sdk/webpay/webpay_plus/responses/transaction_status_response.rb +0 -21
  154. data/lib/transbank/sdk/webpay/webpay_plus/responses/webpay_plus_responses.rb +0 -4
  155. data/lib/transbank/sdk/webpay/webpay_plus/webpay_plus.rb +0 -24
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a655d24c2814f6a3dc1c7ef2822b33cc6d14e7406df11d7b92a75040b894fe7a
4
- data.tar.gz: 92da17813b042422b0ddbef2a5cc0cac43d09deb28f371cd88a6f565afa66ccb
3
+ metadata.gz: 256bc0c3ced136ec4077152e1a70b5bd8ea2c62dea6acffad29cb9dff3ea8921
4
+ data.tar.gz: eac1beeaef40af4e68141d0ac6bfa4b67d6f24bc16d78a8c27a53039c2aed2dc
5
5
  SHA512:
6
- metadata.gz: 218214545c94021480df5a18f635bc9771b610c57fd616c6c4eef30eb09212fd756a1083e04c6c15e6554760e23a43cdef2771098cdfdb27479c71d083307717
7
- data.tar.gz: 4408049419fcf0e0a1cc9bdba91ebbb716085e542b7061a17ae9ee8749fdbb7684c3739d85d2a61d22bc7eef8f1ffb75568cb21cbb4dbd07022d344bac7ff195
6
+ metadata.gz: ae2e6b60df22a2baff554a9ab2c5be814d6d3c94e3b303871dbb23f5298c0d805b8aa1c955678f2d18c4ea6768e78fde8b981cd9bf94bbf37c6093ac8acdf899
7
+ data.tar.gz: 34bdd0c1c17ff3444121c60b2387417a2b7616b1e3dd950d94104f7c2a3978b7115353d600a7ff7c279486c6860be21bf72aa01b7a5ce9dfe550b2d28cfee428
data/CHANGELOG.md CHANGED
@@ -4,6 +4,29 @@ Todos los cambios notables a este proyecto serán documentados en este archivo.
4
4
  El formato está basado en [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
5
  y este proyecto adhiere a [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [2.0.0] - 2022-01-03
8
+
9
+ ### Removed
10
+
11
+ - Se elimina Onepay
12
+
13
+ ### Changed
14
+
15
+ - Se agrega soporte a Webpay Modal
16
+ - Se migra el api desde la versión 1.0 a la versión 1.2
17
+ - Ahora el método de retorno al crear la transacción en WebPayPlus debe tener soporte GET (cuando es exitosa) y POST (cuando se retorna sin concluir el ingreso de la tarjeta)
18
+ - Ahora el método de retorno al inscribirse en Oneclick debe tener soporte GET (cuando es exitosa) y POST (cuando se retorna sin concluir la inscripción)
19
+ - Se refactoriza y migra todos los productos desde clases estáticas a clases instanciables
20
+ - Se unifica 'Transaction' y 'DeferredTransaction' en WebpayPlus
21
+ - Se unifica 'MallTransaction' y 'MallDeferredTransaction' en WebpayPlus y Oneclick
22
+
23
+ ### Added
24
+
25
+ - Se agrega soporte a Webpay Modal
26
+ - Se agregan validaciones de obligatoriedad y tamaño de los parámetros a los métodos de WebpayPlus, Oneclick, Webpay Modal, Transacción Completa
27
+ - Se agrega un módulo de constantes con los códigos de comercio de integración: 'IntegrationCommerceCodes'
28
+ - Se agrega un módulo de constantes con las claves de comercio de integración: 'IntegrationApiKeys'
29
+
7
30
  ## [1.5.1] - 2021-04-12
8
31
  ### Added
9
32
  - Se agrega captura diferida en Transacción Completa y Transacción Completa Mall
data/README.md CHANGED
@@ -29,10 +29,8 @@ Actualmente este SDK contiene sólo Onepay.
29
29
 
30
30
  La documentación relevante para usar este SDK es:
31
31
 
32
- - Documentación general sobre [Onepay](https://www.transbankdevelopers.cl/producto/onepay).
33
32
  - Documentación sobre [ambientes, deberes del comercio, puesta en producción,
34
33
  etc](https://www.transbankdevelopers.cl/documentacion/como_empezar#ambientes).
35
- - Referencia detallada sobre [Onepay](https://www.transbankdevelopers.cl/referencia/onepay).
36
34
 
37
35
  ## Información para contribuir y desarrollar este SDK
38
36
 
@@ -0,0 +1,23 @@
1
+ module Transbank
2
+ module Common
3
+ module ApiConstants
4
+ WEBPAY_ENDPOINT = 'rswebpaytransaction/api/webpay/v1.2'.freeze
5
+ ONECLICK_ENDPOINT = 'rswebpaytransaction/api/oneclick/v1.2'.freeze
6
+ PATPASS_ENDPOINT = 'restpatpass/v1/services'.freeze
7
+
8
+ BUY_ORDER_LENGTH = 26;
9
+ SESSION_ID_LENGTH = 61;
10
+ RETURN_URL_LENGTH = 255;
11
+ AUTHORIZATION_CODE_LENGTH = 6;
12
+ CARD_EXPIRATION_DATE_LENGTH = 5;
13
+ CARD_NUMBER_LENGTH = 19;
14
+ TBK_USER_LENGTH = 40;
15
+ USER_NAME_LENGTH = 40;
16
+ COMMERCE_CODE_LENGTH = 12;
17
+ TOKEN_LENGTH = 64;
18
+ EMAIL_LENGTH = 100;
19
+ end
20
+ end
21
+ end
22
+
23
+
@@ -0,0 +1,18 @@
1
+ module Transbank
2
+ module Common
3
+ class BaseTransaction
4
+
5
+ def initialize(commerce_code = ::Transbank::Common::IntegrationCommerceCodes::WEBPAY_PLUS, api_key = ::Transbank::Common::IntegrationApiKeys::WEBPAY, environment = DEFAULT_ENVIRONMENT)
6
+ @commerce_code = commerce_code
7
+ @api_key = api_key
8
+ unless %i[production integration].include?(environment)
9
+ raise ArgumentError, "Environment must be either 'integration' or 'production'"
10
+ end
11
+
12
+ @environment = environment
13
+ end
14
+ end
15
+ end
16
+ end
17
+
18
+
@@ -0,0 +1,9 @@
1
+ # Contains the Webpay, Oneclick and Patpass Comercio constants for testing.
2
+ module Transbank
3
+ module Common
4
+ module IntegrationApiKeys
5
+ WEBPAY = '579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C'.freeze
6
+ PATPASS_COMERCIO = 'cxxXQgGD9vrVe4M41FIt'.freeze
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,68 @@
1
+ # Contains the Webpay, Oneclick and Patpass Comercio constants for testing.
2
+ module Transbank
3
+ module Common
4
+ module IntegrationCommerceCodes
5
+ WEBPAY_PLUS = '597055555532'.freeze
6
+ WEBPAY_PLUS_MODAL = '597055555584'.freeze
7
+ WEBPAY_PLUS_DEFERRED = '597055555540'.freeze
8
+
9
+ WEBPAY_PLUS_MALL = '597055555535'.freeze
10
+ WEBPAY_PLUS_MALL_CHILD1 = '597055555536'.freeze
11
+ WEBPAY_PLUS_MALL_CHILD2 = '597055555537'.freeze
12
+ WEBPAY_PLUS_MALL_CHILD_COMMERCE_CODES = [
13
+ '597055555582'.freeze,
14
+ '597055555583'.freeze
15
+ ].freeze
16
+
17
+ WEBPAY_PLUS_MALL_DEFERRED = '597055555581'.freeze
18
+ WEBPAY_PLUS_MALL_DEFERRED_CHILD1 = '597055555582'.freeze
19
+ WEBPAY_PLUS_MALL_DEFERRED_CHILD2 = '597055555583'.freeze
20
+ ONECLICK_MALL = '597055555541'.freeze
21
+
22
+ ONECLICK_MALL_CHILD_COMMERCE_CODES = [
23
+ '597055555542'.freeze,
24
+ '597055555543'.freeze
25
+ ].freeze
26
+
27
+ ONECLICK_MALL_DEFERRED = '597055555547'.freeze
28
+
29
+ ONECLICK_MALL_DEFERRED_CHILD_COMMERCE_CODES = [
30
+ '597055555548'.freeze,
31
+ '597055555549'.freeze
32
+ ].freeze
33
+
34
+ TRANSACCION_COMPLETA = '597055555530'.freeze
35
+ TRANSACCION_COMPLETA_SIN_CVV = '597055555557'.freeze
36
+ TRANSACCION_COMPLETA_DEFERRED = '597055555531'.freeze
37
+ TRANSACCION_COMPLETA_DEFERRED_SIN_CVV = '597055555556'.freeze
38
+
39
+ TRANSACCION_COMPLETA_MALL = '597055555573'.freeze
40
+ TRANSACCION_COMPLETA_MALL_CHILD1 = '597055555574'.freeze
41
+ TRANSACCION_COMPLETA_MALL_CHILD2 = '597055555575'.freeze
42
+ TRANSACCION_COMPLETA_MALL_CHILD = [
43
+ '597055555574'.freeze,
44
+ '597055555575'.freeze
45
+ ].freeze
46
+
47
+ TRANSACCION_COMPLETA_MALL_SIN_CVV = '597055555551'.freeze
48
+ TRANSACCION_COMPLETA_MALL_SIN_CVV_CHILD = [
49
+ '597055555552'.freeze,
50
+ '597055555553'.freeze
51
+ ].freeze
52
+
53
+ TRANSACCION_COMPLETA_MALL_DEFERRED = '597055555576'.freeze
54
+ TRANSACCION_COMPLETA_MALL_DEFERRED_CHILD1 = '597055555577'.freeze
55
+ TRANSACCION_COMPLETA_MALL_DEFERRED_CHILD2 = '597055555578'.freeze
56
+ TRANSACCION_COMPLETA_MALL_DEFERRED_CHILD = [
57
+ '597055555577'.freeze,
58
+ '597055555578'.freeze
59
+ ].freeze
60
+
61
+ TRANSACCION_COMPLETA_MALL_DEFERRED_SIN_CVV = '597055555561'.freeze
62
+ TRANSACCION_COMPLETA_MALL_DEFERRED_SIN_CVV_CHILD1 = '597055555562'.freeze
63
+ TRANSACCION_COMPLETA_MALL_DEFERRED_SIN_CVV_CHILD2 = '597055555563'.freeze
64
+ PATPASS_COMERCIO = '28299257'.freeze
65
+ PATPASS_BY_WEBPAY = "597055555550".freeze
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,19 @@
1
+
2
+ module Transbank
3
+ module Common
4
+ class Validation
5
+
6
+ def self.has_text_with_max_length(value, value_max_length, value_name)
7
+ if value.empty?
8
+ raise Transbank::Shared::TransbankError, "Transbank Error: %s is empty" % [value_name]
9
+ end
10
+ if value.length() > value_max_length
11
+ raise Transbank::Shared::TransbankError, "%s is too long, the maximum length is %s"% [value_name, value_max_length]
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+
18
+
19
+
@@ -1,93 +1,41 @@
1
1
  module Transbank
2
2
  module Patpass
3
3
  module PatpassByWebpay
4
- class Transaction
5
- extend Transbank::Utils::NetHelper
6
- CREATE_TRANSACTION_ENDPOINT = 'rswebpaytransaction/api/webpay/v1.0/transactions'
7
- COMMIT_TRANSACTION_ENDPOINT = 'rswebpaytransaction/api/webpay/v1.0/transactions'
8
- TRANSACTION_STATUS_ENDPOINT = 'rswebpaytransaction/api/webpay/v1.0/transactions'
9
-
10
- class << self
11
-
12
- def create(buy_order:, session_id:, amount:, return_url:, details: ,options: nil)
13
-
14
- api_key = options&.api_key || default_integration_params[:api_key]
15
- commerce_code = options&.commerce_code || default_integration_params[:commerce_code]
16
- integration_type = options&.integration_type || default_integration_params[:integration_type]
17
- base_url = integration_type.nil? ? PatpassByWebpay::Base::integration_types[:TEST] : PatpassByWebpay::Base.integration_type_url(integration_type)
18
-
19
- wpm_detail = wpm_details(details)
20
- body = {
21
- buy_order: buy_order,
22
- session_id: session_id,
23
- amount: amount,
24
- return_url: return_url,
25
- wpm_detail: wpm_detail
26
- }
27
-
28
- url = base_url + CREATE_TRANSACTION_ENDPOINT
29
- headers = webpay_headers(commerce_code: commerce_code, api_key: api_key)
30
- resp = http_post(uri_string: url, body: body, headers: headers, camel_case_keys: false)
31
- body = JSON.parse(resp.body)
32
-
33
- return ::Transbank::Patpass::PatpassByWebpay::TransactionCreateResponse.new(body) if resp.kind_of? Net::HTTPSuccess
34
- raise Errors::TransactionCreateError.new(body['error_message'], resp.code)
35
- end
36
-
37
- def commit(token:, options: nil)
38
-
39
- api_key = options&.api_key || default_integration_params[:api_key]
40
- commerce_code = options&.commerce_code || default_integration_params[:commerce_code]
41
- base_url = PatpassByWebpay::Base.integration_types[options&.integration_type] || default_integration_params[:base_url]
42
-
43
- url = base_url + COMMIT_TRANSACTION_ENDPOINT + "/#{token}"
44
- headers = webpay_headers(commerce_code: commerce_code, api_key: api_key)
45
-
46
- resp = http_put(uri_string: url, body: nil, headers: headers)
47
- body = JSON.parse(resp.body)
48
- return ::Transbank::Patpass::PatpassByWebpay::TransactionCommitResponse.new(body) if resp.kind_of? Net::HTTPSuccess
49
- raise Errors::TransactionCommitError.new(body['error_message'], resp.code)
50
- end
51
-
52
- def status(token:, options: nil)
53
- api_key = options&.api_key || default_integration_params[:api_key]
54
- commerce_code = options&.commerce_code || default_integration_params[:commerce_code]
55
- base_url = PatpassByWebpay::Base.integration_types[options&.integration_type] || default_integration_params[:base_url]
56
-
57
- url = base_url + "#{TRANSACTION_STATUS_ENDPOINT}/#{token}"
58
- headers = webpay_headers(commerce_code: commerce_code, api_key: api_key)
59
- resp = http_get(uri_string: url, headers: headers)
60
- body = JSON.parse(resp.body)
61
- return ::Transbank::Patpass::PatpassByWebpay::TransactionStatusResponse.new(body) if resp.kind_of? Net::HTTPSuccess
62
- raise Errors::TransactionStatusError.new(body['error_message'], resp.code)
63
- end
64
-
65
- def default_integration_params
66
- {
67
- api_key: PatpassByWebpay::Base.api_key,
68
- commerce_code: PatpassByWebpay::Base.commerce_code,
69
- base_url: PatpassByWebpay::Base::current_integration_type_url
70
- }
71
- end
72
-
73
- private
74
- def wpm_details(details)
75
- # Check against the wpm_detail_fields
76
- # If one is missing, KeyError will be raised
77
- wpm_detail_fields.reduce({}) do |acc, field|
78
- acc[field] = details.fetch(field) { details.fetch(field.to_s) }
79
- acc
80
- end
81
- end
4
+ class Transaction < ::Transbank::Common::BaseTransaction
5
+ DEFAULT_ENVIRONMENT = :integration
6
+ RESOURCES_URL = ::Transbank::Common::ApiConstants::WEBPAY_ENDPOINT
7
+ CREATE_ENDPOINT = (RESOURCES_URL + '/transactions/').freeze
8
+ COMMIT_ENDPOINT = (RESOURCES_URL + '/transactions/%{token}').freeze
9
+ STATUS_ENDPOINT = (RESOURCES_URL + '/transactions/%{token}').freeze
10
+
11
+ def initialize(commerce_code = ::Transbank::Common::IntegrationCommerceCodes::PATPASS_BY_WEBPAY, api_key = ::Transbank::Common::IntegrationApiKeys::WEBPAY, environment = DEFAULT_ENVIRONMENT)
12
+ super
13
+ end
14
+
15
+ def create(buy_order, session_id, amount, return_url, details)
16
+ request_service = ::Transbank::Shared::RequestService.new(
17
+ @environment, CREATE_ENDPOINT, @commerce_code, @api_key
18
+ )
19
+ request_service.post({
20
+ buy_order: buy_order, session_id: session_id, amount: amount, return_url: return_url, wpm_detail: details
21
+ })
22
+ end
23
+
24
+ def commit(token)
25
+ request_service = ::Transbank::Shared::RequestService.new(
26
+ @environment, format(COMMIT_ENDPOINT, token: token), @commerce_code, @api_key
27
+ )
28
+ request_service.put({})
29
+ end
82
30
 
83
- def wpm_detail_fields
84
- %i(service_id card_holder_id card_holder_name card_holder_last_name1
85
- card_holder_last_name2 card_holder_mail cellphone_number expiration_date
86
- commerce_mail uf_flag)
87
- end
31
+ def status(token)
32
+ request_service = ::Transbank::Shared::RequestService.new(
33
+ @environment, format(STATUS_ENDPOINT, token: token), @commerce_code, @api_key
34
+ )
35
+ request_service.get
88
36
  end
37
+
89
38
  end
90
39
  end
91
40
  end
92
- end
93
-
41
+ end
@@ -1,79 +1,56 @@
1
1
  module Transbank
2
2
  module Patpass
3
3
  module PatpassComercio
4
- class Inscription
5
- extend Utils::NetHelper
6
-
7
- START_INSCRIPTION_ENDPOINT = 'restpatpass/v1/services/patInscription'.freeze
8
- INSCRIPTION_STATUS_ENDPOINT = 'restpatpass/v1/services/status'.freeze
9
-
10
-
11
- FIELDS = %i(
12
- url name first_last_name second_last_name rut service_id final_url max_amount
13
- phone_number mobile_number patpass_name person_email commerce_email address city
14
- )
15
-
16
- class << self
17
- def start(url:, name:, first_last_name:, second_last_name:, rut:, service_id:, final_url:, max_amount:,
18
- phone_number:, mobile_number:, patpass_name:, person_email:, commerce_email:, address:, city:, options: nil)
19
- api_key = options&.api_key || default_integration_params[:api_key]
20
- commerce_code = options&.commerce_code || default_integration_params[:commerce_code]
21
- integration_type = options&.integration_type || default_integration_params[:integration_type]
22
- base_url = integration_type.nil? ? PatpassComercio::Base::integration_types[:TEST] : PatpassComercio::Base.integration_type_url(integration_type)
23
-
24
- body = {
25
- url: url,
26
- nombre: name,
27
- pApellido: first_last_name,
28
- sApellido: second_last_name,
29
- rut: rut,
30
- serviceId: service_id,
31
- finalUrl: final_url,
32
- commerceCode: commerce_code,
33
- montoMaximo: max_amount,
34
- telefonoFijo: phone_number,
35
- telefonoCelular: mobile_number,
36
- nombrePatPass: patpass_name,
37
- correoPersona: person_email,
38
- correoComercio: commerce_email,
39
- direccion: address,
40
- ciudad: city
41
- }
42
- url = base_url + START_INSCRIPTION_ENDPOINT
43
- headers = patpass_comercio_headers(commerce_code: commerce_code, api_key: api_key)
44
- resp = http_post(uri_string: url, body: body, headers: headers, camel_case_keys: false)
45
- resp_body = JSON.parse(resp.body)
46
- return ::Transbank::Patpass::PatpassComercio::InscriptionStartResponse.new(resp_body) if resp.kind_of? Net::HTTPSuccess
47
- raise Errors::InscriptionStartError.new(resp_body['description'], resp.code)
48
- end
49
-
50
- def status(token: ,options: nil)
51
- api_key = options&.api_key || default_integration_params[:api_key]
52
- commerce_code = options&.commerce_code || default_integration_params[:commerce_code]
53
- integration_type = options&.integration_type || default_integration_params[:integration_type]
54
- base_url = integration_type.nil? ? PatpassComercio::Base::integration_types[:TEST] : PatpassComercio::Base.integration_type_url(integration_type)
55
-
56
- body = {
57
- token: token
58
- }
59
- url = base_url + INSCRIPTION_STATUS_ENDPOINT
60
- headers = patpass_comercio_headers(commerce_code: commerce_code, api_key: api_key)
61
- resp = http_post(uri_string: url, body: body, headers: headers, camel_case_keys: false)
62
- resp_body = JSON.parse(resp.body)
63
- return ::Transbank::Patpass::PatpassComercio::InscriptionStatusResponse.new(resp_body) if resp.kind_of? Net::HTTPSuccess
64
- raise Errors::InscriptionStatusError.new(resp_body['description'], resp.code)
65
- end
4
+ class Inscription < ::Transbank::Common::BaseTransaction
5
+ DEFAULT_ENVIRONMENT = :integration
6
+ RESOURCES_URL = ::Transbank::Common::ApiConstants::PATPASS_ENDPOINT
7
+ START_ENDPOINT = (RESOURCES_URL + '/patInscription').freeze
8
+ STATUS_ENDPOINT = (RESOURCES_URL + '/status').freeze
9
+
10
+ ENVIRONMENTS = {
11
+ production: 'https://www.pagoautomaticocontarjetas.cl',
12
+ integration: 'https://pagoautomaticocontarjetasint.transbank.cl/'
13
+ }
14
+
15
+ def initialize(commerce_code = ::Transbank::Common::IntegrationCommerceCodes::PATPASS_COMERCIO, api_key = ::Transbank::Common::IntegrationApiKeys::PATPASS_COMERCIO, environment = DEFAULT_ENVIRONMENT)
16
+ super(commerce_code, api_key, environment)
17
+ end
18
+
19
+ def start(url, name, last_name, second_last_name, rut, service_id, final_url, max_amount, phone, cell_phone, patpass_name, person_email, commerce_email, address, city)
20
+ request_service = ::Transbank::Shared::RequestService.new(
21
+ ENVIRONMENTS[@environment] + START_ENDPOINT, @commerce_code, @api_key
22
+ )
23
+ request_service.set_patpass();
24
+ request_service.post({
25
+ url: url,
26
+ nombre: name,
27
+ pApellido: last_name,
28
+ sApellido: second_last_name,
29
+ rut: rut,
30
+ serviceId: service_id,
31
+ finalUrl: final_url,
32
+ commerceCode: @commerce_code,
33
+ montoMaximo: max_amount,
34
+ telefonoFijo: phone,
35
+ telefonoCelular: cell_phone,
36
+ nombrePatPass: patpass_name,
37
+ correoPersona: person_email,
38
+ correoComercio: commerce_email,
39
+ direccion: address,
40
+ ciudad: city
41
+ })
42
+
43
+ end
66
44
 
67
- def default_integration_params
68
- {
69
- api_key: Patpass::PatpassComercio::Base.api_key,
70
- commerce_code: Patpass::PatpassComercio::Base.commerce_code,
71
- integration_type: Patpass::PatpassComercio::Base::integration_type,
72
- base_url: Patpass::PatpassComercio::Base::current_integration_type_url
73
- }
74
- end
45
+ def status(token)
46
+ request_service = ::Transbank::Shared::RequestService.new(
47
+ ENVIRONMENTS[@environment] + format(STATUS_ENDPOINT, token: token), @commerce_code, @api_key
48
+ )
49
+ request_service.set_patpass();
50
+ request_service.post({token: token})
75
51
  end
52
+
76
53
  end
77
54
  end
78
55
  end
79
- end
56
+ end
@@ -0,0 +1,93 @@
1
+ module Transbank
2
+ module Shared
3
+ class RequestService
4
+ ENVIRONMENTS = {
5
+ production: 'https://webpay3g.transbank.cl/',
6
+ integration: 'https://webpay3gint.transbank.cl/'
7
+ }
8
+
9
+ def initialize(environment=nil, endpoint, commerce_code, api_key)
10
+ @commerce_code = commerce_code
11
+ @api_key = api_key
12
+ if environment.nil?
13
+ @url = endpoint
14
+ else
15
+ @url = ENVIRONMENTS[environment] + endpoint
16
+ end
17
+ @headers = headers(@commerce_code, @api_key)
18
+ end
19
+
20
+ def set_patpass()
21
+ @headers = headers_patpass(@commerce_code, @api_key)
22
+ end
23
+
24
+ def post(body)
25
+ build_http_request('post', body)
26
+ end
27
+
28
+ def put(body)
29
+ build_http_request('put', body)
30
+ end
31
+
32
+ def get
33
+ build_http_request('get')
34
+ end
35
+
36
+ def delete(body)
37
+ build_http_request('delete', body)
38
+ end
39
+
40
+ private
41
+
42
+ def build_http_request(method, body = nil)
43
+ # raise TransbankError, 'Transbank Error: Incorrect Request type' unless %w[put post].include?(method.downcase)
44
+
45
+ uri, http = build_client
46
+ http_method = build_method(method, uri, body)
47
+
48
+ response = http.request(http_method)
49
+ if response.is_a? Net::HTTPSuccess
50
+ return nil if response.body.empty?
51
+ return JSON.parse(response.body)
52
+ end
53
+ body = JSON.parse(response.body)
54
+ if body.key?("description")
55
+ raise TransbankError, "Transbank Error: #{body['code']} - #{body['description']}"
56
+ else
57
+ raise TransbankError, "Transbank Error: #{body['error_message']}"
58
+ end
59
+ end
60
+
61
+ def build_client
62
+ uri = URI.parse(@url)
63
+ http = Net::HTTP.new(uri.host, uri.port)
64
+ http.use_ssl = uri.scheme == 'https'
65
+ [uri, http]
66
+ end
67
+
68
+ def build_method(method, uri, body = nil)
69
+ http_method = Object.const_get("Net::HTTP::#{method.capitalize}").new(uri.path, @headers)
70
+ if !body.nil?
71
+ http_method.body = body.to_json
72
+ end
73
+ http_method
74
+ end
75
+
76
+ def headers(commerce_code, api_key)
77
+ {
78
+ 'Tbk-Api-Key-Id' => commerce_code.to_s,
79
+ 'Tbk-Api-Key-Secret' => api_key,
80
+ 'Content-Type' => 'application/json'
81
+ }
82
+ end
83
+
84
+ def headers_patpass(commerce_code, api_key)
85
+ {
86
+ 'commercecode' => commerce_code.to_s,
87
+ 'Authorization' => api_key,
88
+ 'Content-Type' => 'application/json'
89
+ }
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,5 @@
1
+ module Transbank
2
+ module Shared
3
+ class TransbankError < StandardError; end
4
+ end
5
+ end
@@ -1,5 +1,5 @@
1
1
  module Transbank
2
2
  module Sdk
3
- VERSION = '1.5.0'
3
+ VERSION = '2.0.0'
4
4
  end
5
5
  end
@@ -0,0 +1,52 @@
1
+ module Transbank
2
+ module Webpay
3
+ module Oneclick
4
+ class MallInscription < ::Transbank::Common::BaseTransaction
5
+ DEFAULT_ENVIRONMENT = :integration
6
+ RESOURCES_URL = ::Transbank::Common::ApiConstants::ONECLICK_ENDPOINT
7
+ START_ENDPOINT = (RESOURCES_URL + '/inscriptions').freeze
8
+ FINISH_ENDPOINT = (RESOURCES_URL + '/inscriptions/%{token}').freeze
9
+ DELETE_ENDPOINT = (RESOURCES_URL + '/inscriptions').freeze
10
+
11
+ def initialize(commerce_code = ::Transbank::Common::IntegrationCommerceCodes::ONECLICK_MALL, api_key = ::Transbank::Common::IntegrationApiKeys::WEBPAY, environment = DEFAULT_ENVIRONMENT)
12
+ super
13
+ end
14
+
15
+ def start(username, email, response_url)
16
+
17
+ Transbank::Common::Validation.has_text_with_max_length(username, Transbank::Common::ApiConstants::USER_NAME_LENGTH, "username")
18
+ Transbank::Common::Validation.has_text_with_max_length(email, Transbank::Common::ApiConstants::EMAIL_LENGTH, "email")
19
+ Transbank::Common::Validation.has_text_with_max_length(response_url, Transbank::Common::ApiConstants::RETURN_URL_LENGTH, "response_url")
20
+
21
+ request_service = ::Transbank::Shared::RequestService.new(
22
+ @environment, START_ENDPOINT, @commerce_code, @api_key
23
+ )
24
+ request_service.post({
25
+ username: username, email: email, response_url: response_url
26
+ })
27
+ end
28
+
29
+ def finish(token)
30
+
31
+ Transbank::Common::Validation.has_text_with_max_length(token, Transbank::Common::ApiConstants::TOKEN_LENGTH, "token")
32
+
33
+ request_service = ::Transbank::Shared::RequestService.new(
34
+ @environment, format(FINISH_ENDPOINT, token: token), @commerce_code, @api_key
35
+ )
36
+ request_service.put({})
37
+ end
38
+
39
+ def delete(tbk_user, username)
40
+
41
+ Transbank::Common::Validation.has_text_with_max_length(tbk_user, Transbank::Common::ApiConstants::TBK_USER_LENGTH, "tbk_user")
42
+ Transbank::Common::Validation.has_text_with_max_length(username, Transbank::Common::ApiConstants::USER_NAME_LENGTH, "username")
43
+
44
+ request_service = ::Transbank::Shared::RequestService.new(
45
+ @environment, DELETE_ENDPOINT, @commerce_code, @api_key
46
+ )
47
+ request_service.delete({tbk_user: tbk_user, username: username})
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end