transbank-sdk 1.2.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/CHANGELOG.md +38 -0
  4. data/README.md +4 -7
  5. data/lib/transbank/sdk.rb +4 -0
  6. data/lib/transbank/sdk/oneclick/{mall/base.rb → base.rb} +16 -3
  7. data/lib/transbank/sdk/oneclick/mall/errors/oneclick_mall_errors.rb +2 -1
  8. data/lib/transbank/sdk/oneclick/mall/mall_inscription.rb +2 -2
  9. data/lib/transbank/sdk/oneclick/mall/mall_transaction.rb +2 -2
  10. data/lib/transbank/sdk/oneclick/mall/oneclick_mall.rb +0 -1
  11. data/lib/transbank/sdk/oneclick/mall/responses/oneclick_mall_responses.rb +1 -0
  12. data/lib/transbank/sdk/oneclick/mall_deferred/errors/mall_deferred_transaction_capture_error.rb +16 -0
  13. data/lib/transbank/sdk/oneclick/mall_deferred/mall_deferred_inscription.rb +20 -0
  14. data/lib/transbank/sdk/oneclick/mall_deferred/mall_deferred_transaction.rb +42 -0
  15. data/lib/transbank/sdk/oneclick/mall_deferred/responses/mall_deferred_transaction_capture_response.rb +16 -0
  16. data/lib/transbank/sdk/oneclick/oneclick.rb +10 -1
  17. data/lib/transbank/sdk/patpass/errors/integration_type_error.rb +8 -0
  18. data/lib/transbank/sdk/patpass/errors/patpass_error.rb +15 -0
  19. data/lib/transbank/sdk/patpass/patpass_by_webpay/base.rb +47 -0
  20. data/lib/transbank/sdk/patpass/patpass_by_webpay/errors/patpass_by_webpay_errors.rb +12 -0
  21. data/lib/transbank/sdk/patpass/patpass_by_webpay/errors/transaction_commit_error.rb +15 -0
  22. data/lib/transbank/sdk/patpass/patpass_by_webpay/errors/transaction_create_error.rb +15 -0
  23. data/lib/transbank/sdk/patpass/patpass_by_webpay/errors/transaction_status_error.rb +15 -0
  24. data/lib/transbank/sdk/patpass/patpass_by_webpay/options.rb +9 -0
  25. data/lib/transbank/sdk/patpass/patpass_by_webpay/patpass_by_webpay.rb +16 -0
  26. data/lib/transbank/sdk/patpass/patpass_by_webpay/responses/patpass_by_webpay_responses.rb +3 -0
  27. data/lib/transbank/sdk/patpass/patpass_by_webpay/responses/transaction_commit_response.rb +20 -0
  28. data/lib/transbank/sdk/patpass/patpass_by_webpay/responses/transaction_create_response.rb +15 -0
  29. data/lib/transbank/sdk/patpass/patpass_by_webpay/responses/transaction_status_response.rb +21 -0
  30. data/lib/transbank/sdk/patpass/patpass_by_webpay/transaction.rb +93 -0
  31. data/lib/transbank/sdk/patpass/patpass_comercio/base.rb +47 -0
  32. data/lib/transbank/sdk/patpass/patpass_comercio/errors/inscription_start_error.rb +15 -0
  33. data/lib/transbank/sdk/patpass/patpass_comercio/errors/inscription_status_error.rb +15 -0
  34. data/lib/transbank/sdk/patpass/patpass_comercio/errors/patpass_comercio_errors.rb +2 -0
  35. data/lib/transbank/sdk/patpass/patpass_comercio/inscription.rb +79 -0
  36. data/lib/transbank/sdk/patpass/patpass_comercio/options.rb +9 -0
  37. data/lib/transbank/sdk/patpass/patpass_comercio/patpass_comercio.rb +5 -0
  38. data/lib/transbank/sdk/patpass/patpass_comercio/responses/inscription_start_response.rb +13 -0
  39. data/lib/transbank/sdk/patpass/patpass_comercio/responses/inscription_status_response.rb +13 -0
  40. data/lib/transbank/sdk/patpass/patpass_comercio/responses/patpass_comercio_responses.rb +2 -0
  41. data/lib/transbank/sdk/transaccion_completa/base.rb +9 -7
  42. data/lib/transbank/sdk/transaccion_completa/errors/transaccion_completa_errors.rb +1 -0
  43. data/lib/transbank/sdk/transaccion_completa/errors/transaction_capture_error.rb +14 -0
  44. data/lib/transbank/sdk/transaccion_completa/mall/mall_transaction.rb +197 -0
  45. data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_capture_response.rb +12 -0
  46. data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_commit_response.rb +15 -0
  47. data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_installments_response.rb +11 -0
  48. data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_responses.rb +4 -0
  49. data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_status_response.rb +14 -0
  50. data/lib/transbank/sdk/transaccion_completa/responses/transaccion_completa_responses.rb +2 -1
  51. data/lib/transbank/sdk/transaccion_completa/responses/transaction_capture_response.rb +12 -0
  52. data/lib/transbank/sdk/transaccion_completa/transaccion_completa.rb +3 -1
  53. data/lib/transbank/sdk/transaccion_completa/transaction.rb +49 -22
  54. data/lib/transbank/sdk/version.rb +1 -1
  55. data/lib/transbank/sdk/webpay/webpay_plus/base.rb +74 -0
  56. data/lib/transbank/sdk/webpay/webpay_plus/deferred/deferred_transaction.rb +108 -0
  57. data/lib/transbank/sdk/webpay/webpay_plus/deferred/errors/transaction_capture_error.rb +16 -0
  58. data/lib/transbank/sdk/webpay/webpay_plus/deferred/errors/webpay_plus_deferred_errors.rb +1 -0
  59. data/lib/transbank/sdk/webpay/webpay_plus/deferred/responses/transaction_capture_response.rb +22 -0
  60. data/lib/transbank/sdk/webpay/webpay_plus/deferred/responses/webpay_plus_deferred_responses.rb +1 -0
  61. data/lib/transbank/sdk/webpay/webpay_plus/errors/transaction_commit_error.rb +17 -0
  62. data/lib/transbank/sdk/webpay/webpay_plus/errors/transaction_create_error.rb +16 -0
  63. data/lib/transbank/sdk/webpay/webpay_plus/errors/transaction_refund_error.rb +16 -0
  64. data/lib/transbank/sdk/webpay/webpay_plus/errors/transaction_status_error.rb +16 -0
  65. data/lib/transbank/sdk/webpay/webpay_plus/errors/webpay_plus_errors.rb +13 -0
  66. data/lib/transbank/sdk/webpay/webpay_plus/mall/mall_transaction.rb +88 -0
  67. data/lib/transbank/sdk/webpay/webpay_plus/mall/responses/mall_transaction_commit_response.rb +23 -0
  68. data/lib/transbank/sdk/webpay/webpay_plus/mall/responses/mall_transaction_status_response.rb +21 -0
  69. data/lib/transbank/sdk/webpay/webpay_plus/mall/responses/webpay_plus_mall_responses.rb +2 -0
  70. data/lib/transbank/sdk/webpay/webpay_plus/mall_deferred/mall_deferred_transaction.rb +109 -0
  71. data/lib/transbank/sdk/webpay/webpay_plus/options.rb +9 -0
  72. data/lib/transbank/sdk/webpay/webpay_plus/responses/transaction_commit_response.rb +20 -0
  73. data/lib/transbank/sdk/webpay/webpay_plus/responses/transaction_create_response.rb +15 -0
  74. data/lib/transbank/sdk/webpay/webpay_plus/responses/transaction_refund_response.rb +19 -0
  75. data/lib/transbank/sdk/webpay/webpay_plus/responses/transaction_status_response.rb +21 -0
  76. data/lib/transbank/sdk/webpay/webpay_plus/responses/webpay_plus_responses.rb +4 -0
  77. data/lib/transbank/sdk/webpay/webpay_plus/transaction.rb +89 -0
  78. data/lib/transbank/sdk/webpay/webpay_plus/webpay_plus.rb +24 -0
  79. data/transbank-sdk.gemspec +10 -8
  80. metadata +102 -28
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9c8e254a610d8744915cc56245533ad60f94a1c1a37c786c9eaefe458deaedb4
4
- data.tar.gz: '029809591bbd27cdefc7a1dad7f5411f592387dddc430fc81c819fcde135031a'
3
+ metadata.gz: a655d24c2814f6a3dc1c7ef2822b33cc6d14e7406df11d7b92a75040b894fe7a
4
+ data.tar.gz: 92da17813b042422b0ddbef2a5cc0cac43d09deb28f371cd88a6f565afa66ccb
5
5
  SHA512:
6
- metadata.gz: a0756ef91caee98a6d29c144c779650c788b31653758f0190a96746e6d63cdb4946fddbaf66bca329c4feb34f63288e0fd255d3bb2ba99b3c8f6fed61d5b445f
7
- data.tar.gz: 33ffe901ec9592015658878761eed5b263cc6b955a7870c964092dae68f62f7965d062ea0a3415c0ee4306dd641eeb95f862748c506bdf77ca8583e8515084bb
6
+ metadata.gz: 218214545c94021480df5a18f635bc9771b610c57fd616c6c4eef30eb09212fd756a1083e04c6c15e6554760e23a43cdef2771098cdfdb27479c71d083307717
7
+ data.tar.gz: 4408049419fcf0e0a1cc9bdba91ebbb716085e542b7061a17ae9ee8749fdbb7684c3739d85d2a61d22bc7eef8f1ffb75568cb21cbb4dbd07022d344bac7ff195
data/.travis.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  deploy:
2
2
  provider: rubygems
3
3
  api_key:
4
- secure: DrUEm8pAjKtSekGBZz9/dMK92CSj2J+Zi1KOMLdDMckD4UCifusmbyqsp+RWAYBX1fWREyjMW0VvaPgj2eYOEaQrr6+TmygQMel1sFKSC6pOMVHQ3NMPwacVG5rGlNlK5+1PuNyR/ZGwtIdWkHe8+g9CvlvliNdY5KYtVs0pnwGUOMeQAwuIgM/w7uSm67zL7M3pYqEArU73EoX9puUS+k6aQ+KtxBckpqi7GtA5+42F8kTvEg+Y0h385qOvnQhjwepYh6YvfTeyzxc5fqFiBlO4TZp4rCoCpEeY1XO1VBCip+aGe5FVoWJrWkYONWdKV4GGzQd0Kd2Jmis4ieBDoi1julUK+uudy3CcjT3pSvSl6NyEpkUDJrJLZ9vn5P5SRJrUsWPDpkun5TptOnc1W1lgyJRypM47BbJ/qRzSr279iQmbvkEMci132Vp3v1Q17zDzBAyI13jirxNN4aw/PB0UCG7XRxqfEhnN391p1QVjB5u24G8r+gxABrJQA0WroKvQACstHd160wFWHxb57kSTaD32j3dzIbT+IdylF0ENmGQCohhUjwZt9ldv5cdQOyq0Jhsu9j8T/VzSRc52n1by1JQgl4nu4b7pmmNbfsEL6P13+m93TyKQiK0tr4CgdzF2XrY/bBJxoMvUTd2To4X77IRMayjkoZWEOT2RzrA=
4
+ secure: Y3z7qW8UhuDi0AqMr9T6ti46w3jLuLDRLuHUBTff80lYAZhBwCNj7U9UvlgELTiOC/nLREtboGW5ZUf3XIIiRr2oIqCSSWYVR6OCuPGTHS/hvGBi0T5jEL30/YuIEbIuz3xkXqN15WlOouKVgfPsNcL8mfLZBZMHQ9QwB6P0E2rg2GZj1QVqAUjnn/JGet0d2EJb48YyndN4nGVhaXXUQhcyyy1+XWEkC3nCo6v1dwE5pS8QK4kcRevRvL9G8mebxX74IuIbgW2bXBHPLNUbuUOHuNNUrrNIJDFUf8xXouLDT5QN4CsoldcgSIGuBvcJlmoubQFfju4iuGt/xnL8BtsKDy3iZ+xnIji6h7MGNAOpiZ7e2LavGvO5luYVEpuv2iG9V/FpJY5DJcBZ8779LnA97NAV7bz383tjihCfR9kzUh5rs2To42FV0IQj0btWuGesVmPefWjwV/EzjmbN0+PhNmxDwQAJS49cHycZKTeestaR4MgHigXZ2CGRAJSKYr3Tj7/r8KZW6MGY6KgXiwjpu+d3+UidAwI1viiRrCGuWBALkAAaxGR0H8qamMsJr/DQtjAgXDITRlAScpWzicgvEEHyXTos45EIrsJZV72O/jj8Zvbw83rEMv8It3yCS43deLsyw+5a4i9y9HFKuGQPa8w7yR1xEOnh6G3AiWY=
5
5
  gem: transbank-sdk
6
6
  on:
7
7
  tags: true
data/CHANGELOG.md CHANGED
@@ -4,6 +4,44 @@ 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
+ ## [1.5.1] - 2021-04-12
8
+ ### Added
9
+ - Se agrega captura diferida en Transacción Completa y Transacción Completa Mall
10
+
11
+ ## [1.4.1] - 2021-03-30
12
+ ### Fixed
13
+ - Se agrega parámetro de estado faltante en respuesta de Commit y Status en Webpay Plus
14
+ - Se agrega dependencia JSON (~> 2.0) para evitar problemas al recibir respuesta de Commit
15
+ - Se arregla endpoint de captura en Webpay Plus
16
+
17
+ ## [1.4.0] - 2020-12-03
18
+ ### Added
19
+ - Se agregan métodos de configuración para integración a Webpay Plus en sus modalidades diferidas y mall diferida.
20
+ - Se agregan métodos de configuración para integración a Webpay Oneclick en su modalidad mall diferida.
21
+
22
+ ### Fixed
23
+ - Se arregla forma en que se lee configuración del SDK, estaba tomando valores de una constante en vez de la variable de clase correspondiente. Este arreglo es para todos los productos con la excepción de Onepay
24
+
25
+ ## [1.3.1] - 2020-10-29
26
+ ### Fixed
27
+ - Se revierte commit que elimina requires necesarios para productos REST
28
+
29
+ ## [1.3.0] - 2020-10-26
30
+
31
+ ### Added
32
+
33
+ - Se agrega soporte para:
34
+ - Webpay Plus Rest
35
+ - modalidad normal
36
+ - modalidad captura diferida
37
+ - modalidad mall
38
+ - modalidad mall captura diferida
39
+ - Patpass by Webpay Rest
40
+ - Patpass Comercio Rest
41
+ - Transacción completa Rest
42
+ - modalidad mall
43
+ - Oneclick Mall Captura diferida
44
+
7
45
  ## [1.2.0] - 2019-12-26
8
46
  ### Added
9
47
  - Se agrega soporte para Oneclick Mall y Transacción Completa en sus versiones REST.
data/README.md CHANGED
@@ -75,16 +75,13 @@ make
75
75
  ```
76
76
 
77
77
  ### Deploy de una nueva versión.
78
- Para generar una nueva versión, se debe crear un PR (con un título "Prepare release X.Y.Z" con los valores que correspondan para X, Y y Z). Se debe seguir el estándar semver para determinar si se incrementa el valor de X (si hay cambios no retrocompatibles), Y (para mejoras retrocompatibles) o Z (si sólo hubo correcciones a bugs).
78
+ Para generar una nueva versión, se debe crear un PR (con un título "Prepare release X.Y.Z" con los valores que correspondan para `X`, `Y` y `Z`). Se debe seguir el estándar semver para determinar si se incrementa el valor de `X` (si hay cambios no retrocompatibles), `Y` (para mejoras retrocompatibles) o `Z` (si sólo hubo correcciones a bugs).
79
79
 
80
80
  En ese PR deben incluirse los siguientes cambios:
81
81
 
82
- Modificar el archivo CHANGELOG.md para incluir una nueva entrada (al comienzo) para X.Y.Z que explique en español los cambios de cara al usuario del SDK.
82
+ 1. Modificar el archivo `CHANGELOG.md` para incluir una nueva entrada (al comienzo) para `X.Y.Z` que explique en español los cambios **de cara al usuario del SDK**.
83
+ 2. Modificar [version.rb](./lib/transbank/sdk/version.rb) para poner la nueva versión que corresponde.
83
84
 
84
- Modificar este README.md para que los ejemplos usen la nueva versión X.Y.Z
85
-
86
- Modificar [version.rb](./lib/transbank/sdk/version.rb) para poner la nueva versión que corresponde
87
-
88
- Luego de obtener aprobación del pull request, debe mezclarse a master e inmediatamente generar un release en GitHub con el tag vX.Y.Z. En la descripción del release debes poner lo mismo que agregaste al changelog.
85
+ Luego de obtener aprobación del pull request, debe mezclarse a master e inmediatamente generar un release en GitHub con el tag `vX.Y.Z`. En la descripción del release debes poner lo mismo que agregaste al changelog.
89
86
 
90
87
  Con eso Travis CI generará automáticamente una nueva versión de la librería y la publicará en RubyGems.
data/lib/transbank/sdk.rb CHANGED
@@ -18,6 +18,10 @@ require 'transbank/sdk/onepay/responses/responses'
18
18
  require 'transbank/sdk/onepay/models/models'
19
19
  require 'transbank/sdk/onepay/base'
20
20
 
21
+ require 'transbank/sdk/webpay/webpay_plus/webpay_plus'
22
+
21
23
  require 'transbank/sdk/oneclick/oneclick'
24
+ require 'transbank/sdk/patpass/patpass_by_webpay/patpass_by_webpay'
25
+ require 'transbank/sdk/patpass/patpass_comercio/patpass_comercio'
22
26
 
23
27
  require 'transbank/sdk/transaccion_completa/transaccion_completa'
@@ -5,8 +5,16 @@ module Transbank
5
5
  DEFAULT_API_KEY = '579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C'.freeze
6
6
 
7
7
  DEFAULT_ONECLICK_MALL_COMMERCE_CODE = '597055555541'.freeze
8
- DEFAULT_ONECLICK_MALL_CHILD_COMMERCE_CODES = ['597055555542'.freeze,
9
- '597055555543'.freeze].freeze
8
+ DEFAULT_ONECLICK_MALL_CHILD_COMMERCE_CODES = [
9
+ '597055555542'.freeze,
10
+ '597055555543'.freeze
11
+ ].freeze
12
+
13
+ DEFAULT_ONECLICK_MALL_DEFERRED_COMMERCE_CODE = '597055555547'.freeze
14
+ DEFAULT_ONECLICK_MALL_DEFERRED_CHILD_COMMERCE_CODES = [
15
+ '597055555548'.freeze,
16
+ '597055555549'.freeze
17
+ ].freeze
10
18
 
11
19
  @api_key = DEFAULT_API_KEY
12
20
  @commerce_code = DEFAULT_ONECLICK_MALL_COMMERCE_CODE
@@ -43,9 +51,14 @@ module Transbank
43
51
  @commerce_code = DEFAULT_ONECLICK_MALL_COMMERCE_CODE
44
52
  self.integration_type = :TEST
45
53
  end
54
+
55
+ def configure_mall_deferred_for_testing
56
+ @api_key = DEFAULT_API_KEY
57
+ @commerce_code = DEFAULT_ONECLICK_MALL_DEFERRED_COMMERCE_CODE
58
+ self.integration_type = :TEST
59
+ end
46
60
  end
47
61
  end
48
62
  end
49
63
  end
50
64
  end
51
-
@@ -1,3 +1,4 @@
1
1
  require 'transbank/sdk/oneclick/mall/errors/mall_transaction_authorize_error'
2
2
  require 'transbank/sdk/oneclick/mall/errors/mall_transaction_status_error'
3
- require 'transbank/sdk/oneclick/mall/errors/mall_transaction_refund_error'
3
+ require 'transbank/sdk/oneclick/mall/errors/mall_transaction_refund_error'
4
+ require 'transbank/sdk/oneclick/mall_deferred/errors/mall_deferred_transaction_capture_error'
@@ -60,8 +60,8 @@ module Transbank
60
60
 
61
61
  def default_integration_params
62
62
  {
63
- api_key: Oneclick::Base::DEFAULT_API_KEY,
64
- commerce_code: Oneclick::Base::DEFAULT_ONECLICK_MALL_COMMERCE_CODE,
63
+ api_key: Oneclick::Base.api_key,
64
+ commerce_code: Oneclick::Base.commerce_code,
65
65
  integration_type: Oneclick::Base::integration_type,
66
66
  base_url: Oneclick::Base::current_integration_type_url
67
67
  }
@@ -84,8 +84,8 @@ module Transbank
84
84
 
85
85
  def default_integration_params
86
86
  {
87
- api_key: Oneclick::Base::DEFAULT_API_KEY,
88
- commerce_code: Oneclick::Base::DEFAULT_ONECLICK_MALL_COMMERCE_CODE,
87
+ api_key: Oneclick::Base.api_key,
88
+ commerce_code: Oneclick::Base.commerce_code,
89
89
  integration_type: Oneclick::Base::integration_type,
90
90
  base_url: Oneclick::Base::current_integration_type_url
91
91
  }
@@ -1,5 +1,4 @@
1
1
  require 'transbank/sdk/oneclick/mall/errors/oneclick_mall_errors'
2
2
  require 'transbank/sdk/oneclick/mall/responses/oneclick_mall_responses'
3
- require 'transbank/sdk/oneclick/mall/base'
4
3
  require 'transbank/sdk/oneclick/mall/mall_inscription'
5
4
  require 'transbank/sdk/oneclick/mall/mall_transaction'
@@ -1,3 +1,4 @@
1
1
  require 'transbank/sdk/oneclick/mall/responses/mall_transaction_authorize_response'
2
2
  require 'transbank/sdk/oneclick/mall/responses/mall_transaction_status_response'
3
3
  require 'transbank/sdk/oneclick/mall/responses/mall_transaction_refund_response'
4
+ require 'transbank/sdk/oneclick/mall_deferred/responses/mall_deferred_transaction_capture_response'
@@ -0,0 +1,16 @@
1
+ module Transbank
2
+ module Webpay
3
+ module Oneclick
4
+ module Errors
5
+ class MallDeferredTransactionCaptureError < OneclickError
6
+ attr_accessor :code, :message
7
+ def initialize(message, code)
8
+ @code = code
9
+ @message = message
10
+ super(message, code)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,20 @@
1
+ module Transbank
2
+ module Webpay
3
+ module Oneclick
4
+ class MallDeferredInscription < Transbank::Webpay::Oneclick::MallInscription
5
+ extend Transbank::Utils::NetHelper
6
+
7
+ class << self
8
+ def default_integration_params
9
+ {
10
+ api_key: Oneclick::Base.api_key,
11
+ commerce_code: Oneclick::Base.commerce_code,
12
+ integration_type: Oneclick::Base::integration_type,
13
+ base_url: Oneclick::Base::current_integration_type_url
14
+ }
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,42 @@
1
+ module Transbank
2
+ module Webpay
3
+ module Oneclick
4
+ class MallDeferredTransaction < Transbank::Webpay::Oneclick::MallTransaction
5
+ extend Transbank::Utils::NetHelper
6
+ TRANSACTION_CAPTURE_ENDPOINT = 'rswebpaytransaction/api/oneclick/v1.0/transactions/capture'.freeze
7
+
8
+ class << self
9
+
10
+ def capture(child_commerce_code:, child_buy_order:, authorization_code:, amount:, options: nil)
11
+ api_key = options&.api_key || default_integration_params[:api_key]
12
+ commerce_code = options&.commerce_code || default_integration_params[:commerce_code]
13
+ integration_type = options&.integration_type || default_integration_params[:integration_type]
14
+ base_url = integration_type.nil? ? Oneclick::Base::integration_type[:TEST] : Oneclick::Base.integration_type_url(integration_type)
15
+
16
+ url = base_url + TRANSACTION_CAPTURE_ENDPOINT
17
+ headers = webpay_headers(commerce_code: commerce_code, api_key: api_key)
18
+ body = {
19
+ commerce_code: child_commerce_code,
20
+ buy_order: child_buy_order,
21
+ authorization_code: authorization_code,
22
+ capture_amount: amount
23
+ }
24
+ resp = http_put(uri_string: url, headers: headers, body: body)
25
+ body = JSON.parse(resp.body)
26
+ return ::Transbank::Webpay::Oneclick::MallDeferredTransactionCaptureResponse.new(body) if resp.kind_of? Net::HTTPSuccess
27
+ raise Oneclick::Errors::MallDeferredTransactionCaptureError.new(body['error_message'], resp.code)
28
+ end
29
+
30
+ def default_integration_params
31
+ {
32
+ api_key: Oneclick::Base.api_key,
33
+ commerce_code: Oneclick::Base.commerce_code,
34
+ integration_type: Oneclick::Base::integration_type,
35
+ base_url: Oneclick::Base::current_integration_type_url
36
+ }
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,16 @@
1
+ module Transbank
2
+ module Webpay
3
+ module Oneclick
4
+ class MallDeferredTransactionCaptureResponse
5
+
6
+ FIELDS = %i[authorization_code authorization_date captured_amount response_code]
7
+ attr_accessor *FIELDS
8
+
9
+ def initialize(json)
10
+ FIELDS.each {|field| send("#{field}=", json["#{field}"]) }
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+
@@ -1,3 +1,12 @@
1
+ require 'transbank/sdk/oneclick/base'
1
2
  require 'transbank/sdk/oneclick/errors/oneclick_error'
2
3
  require 'transbank/sdk/oneclick/inscription/inscription'
3
- require 'transbank/sdk/oneclick/mall/oneclick_mall'
4
+ require 'transbank/sdk/oneclick/mall/oneclick_mall'
5
+ require 'transbank/sdk/oneclick/mall_deferred/mall_deferred_transaction'
6
+ require 'transbank/sdk/oneclick/mall_deferred/mall_deferred_inscription'
7
+
8
+ module Transbank
9
+ module Webpay
10
+ module Oneclick; end
11
+ end
12
+ end
@@ -0,0 +1,8 @@
1
+ module Transbank
2
+ module Patpass
3
+ module Errors
4
+ class IntegrationTypeError < ::Transbank::Errors::TransbankError
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,15 @@
1
+ module Transbank
2
+ module Patpass
3
+ module Errors
4
+ class PatpassError < ::Transbank::Errors::TransbankError
5
+ attr_accessor :message, :code
6
+ def initialize(message, code)
7
+ self.message = message
8
+ self.code = code
9
+ super(message)
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+
@@ -0,0 +1,47 @@
1
+ module Transbank
2
+ module Patpass
3
+ module PatpassByWebpay
4
+ class Base
5
+
6
+ DEFAULT_API_KEY = '579B532A7440BB0C9079DED94D31EA1615BACEB56610332264630D42D0A36B1C'.freeze
7
+ DEFAULT_COMMERCE_CODE = '597055555550'.freeze
8
+
9
+ @api_key = DEFAULT_API_KEY
10
+ @commerce_code = DEFAULT_COMMERCE_CODE
11
+ @integration_type = :TEST
12
+ @integration_types = {
13
+ LIVE: "https://webpay3g.transbank.cl/",
14
+ TEST: "https://webpay3gint.transbank.cl/"
15
+ }
16
+ class << self
17
+ attr_reader :integration_types
18
+ attr_accessor :api_key, :integration_type, :commerce_code
19
+
20
+ def integration_type_url(integration_type)
21
+ type = integration_type.upcase.to_sym
22
+ return @integration_types[type] unless @integration_types[type].nil?
23
+ valid_values = @integration_types.keys.join(', ')
24
+ raise Transbank::Patpass::Errors::IntegrationTypeError, "Invalid integration type, valid values are #{valid_values}"
25
+ end
26
+
27
+ def current_integration_type_url
28
+ @integration_types[@integration_type]
29
+ end
30
+
31
+ def integration_type=(integration_type)
32
+ type = integration_type.upcase.to_sym
33
+ return @integration_type = type unless @integration_types[type].nil?
34
+ valid_values = @integration_types.keys.join(', ')
35
+ raise Transbank::Patpass::Errors::IntegrationTypeError, "Invalid integration type, valid values are #{valid_values}"
36
+ end
37
+
38
+ def configure_for_testing
39
+ @api_key = DEFAULT_API_KEY
40
+ @commerce_code = DEFAULT_COMMERCE_CODE
41
+ self.integration_type = :TEST
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,12 @@
1
+ require 'transbank/sdk/patpass/patpass_by_webpay/errors/transaction_create_error'
2
+ require 'transbank/sdk/patpass/patpass_by_webpay/errors/transaction_commit_error'
3
+ require 'transbank/sdk/patpass/patpass_by_webpay/errors/transaction_status_error'
4
+
5
+ module Transbank
6
+ module Patpass
7
+ module PatpassByWebpay
8
+ module Errors
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ module Transbank
2
+ module Patpass
3
+ module PatpassByWebpay
4
+ module Errors
5
+ class TransactionCommitError < ::Transbank::Patpass::Errors::PatpassError
6
+ attr_reader :code
7
+ def initialize(message, code)
8
+ @code = code
9
+ super(message, code)
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Transbank
2
+ module Patpass
3
+ module PatpassByWebpay
4
+ module Errors
5
+ class TransactionCreateError < ::Transbank::Patpass::Errors::PatpassError
6
+ attr_reader :code
7
+ def initialize(message, code)
8
+ @code = code
9
+ super(message, code)
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module Transbank
2
+ module Patpass
3
+ module PatpassByWebpay
4
+ module Errors
5
+ class TransactionStatusError < ::Transbank::Patpass::Errors::PatpassError
6
+ attr_reader :code
7
+ def initialize(message, code)
8
+ @code = code
9
+ super(message, code)
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ module Transbank
2
+ module Patpass
3
+ module PatpassByWebpay
4
+ class Options
5
+ attr_accessor :api_key, :commerce_code, :integration_type
6
+ end
7
+ end
8
+ end
9
+ end