transbank-sdk 1.3.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +41 -1
- data/README.md +0 -2
- data/lib/transbank/sdk/common/api_constants.rb +23 -0
- data/lib/transbank/sdk/common/base_transaction.rb +18 -0
- data/lib/transbank/sdk/common/integration_api_keys.rb +9 -0
- data/lib/transbank/sdk/common/integration_commerce_codes.rb +68 -0
- data/lib/transbank/sdk/common/validation.rb +19 -0
- data/lib/transbank/sdk/patpass/patpass_by_webpay/transaction.rb +33 -85
- data/lib/transbank/sdk/patpass/patpass_comercio/inscription.rb +48 -71
- data/lib/transbank/sdk/shared/request_service.rb +93 -0
- data/lib/transbank/sdk/shared/transbank_error.rb +5 -0
- data/lib/transbank/sdk/version.rb +1 -1
- data/lib/transbank/sdk/webpay/oneclick/mall_inscription.rb +52 -0
- data/lib/transbank/sdk/webpay/oneclick/mall_transaction.rb +66 -0
- data/lib/transbank/sdk/webpay/transaccion_completa/mall_transaction.rb +67 -0
- data/lib/transbank/sdk/webpay/transaccion_completa/transaction.rb +70 -0
- data/lib/transbank/sdk/webpay/webpay_plus/mall_transaction.rb +79 -0
- data/lib/transbank/sdk/webpay/webpay_plus/transaction.rb +59 -73
- data/lib/transbank/sdk/webpay/webpay_plus_modal/transaction.rb +62 -0
- data/lib/transbank/sdk.rb +16 -16
- data/transbank-sdk.gemspec +10 -8
- metadata +54 -156
- data/lib/transbank/sdk/oneclick/errors/oneclick_error.rb +0 -16
- data/lib/transbank/sdk/oneclick/inscription/errors/mall_inscription_delete_error.rb +0 -16
- data/lib/transbank/sdk/oneclick/inscription/errors/mall_inscription_finish_error.rb +0 -16
- data/lib/transbank/sdk/oneclick/inscription/errors/mall_inscription_start_error.rb +0 -16
- data/lib/transbank/sdk/oneclick/inscription/errors/oneclick_mall_inscription_errors.rb +0 -3
- data/lib/transbank/sdk/oneclick/inscription/inscription.rb +0 -3
- data/lib/transbank/sdk/oneclick/inscription/responses/mall_inscription_delete_response.rb +0 -18
- data/lib/transbank/sdk/oneclick/inscription/responses/mall_inscription_finish_response.rb +0 -15
- data/lib/transbank/sdk/oneclick/inscription/responses/mall_inscription_start_response.rb +0 -14
- data/lib/transbank/sdk/oneclick/inscription/responses/oneclick_mall_inscription_responses.rb +0 -3
- data/lib/transbank/sdk/oneclick/mall/base.rb +0 -58
- data/lib/transbank/sdk/oneclick/mall/errors/mall_transaction_authorize_error.rb +0 -16
- data/lib/transbank/sdk/oneclick/mall/errors/mall_transaction_refund_error.rb +0 -16
- data/lib/transbank/sdk/oneclick/mall/errors/mall_transaction_status_error.rb +0 -16
- data/lib/transbank/sdk/oneclick/mall/errors/oneclick_mall_errors.rb +0 -4
- data/lib/transbank/sdk/oneclick/mall/mall_inscription.rb +0 -73
- data/lib/transbank/sdk/oneclick/mall/mall_transaction.rb +0 -97
- data/lib/transbank/sdk/oneclick/mall/oneclick_mall.rb +0 -5
- data/lib/transbank/sdk/oneclick/mall/responses/mall_transaction_authorize_response.rb +0 -16
- data/lib/transbank/sdk/oneclick/mall/responses/mall_transaction_refund_response.rb +0 -16
- data/lib/transbank/sdk/oneclick/mall/responses/mall_transaction_status_response.rb +0 -15
- data/lib/transbank/sdk/oneclick/mall/responses/oneclick_mall_responses.rb +0 -4
- data/lib/transbank/sdk/oneclick/mall_deferred/errors/mall_deferred_transaction_capture_error.rb +0 -16
- data/lib/transbank/sdk/oneclick/mall_deferred/mall_deferred_inscription.rb +0 -20
- data/lib/transbank/sdk/oneclick/mall_deferred/mall_deferred_transaction.rb +0 -42
- data/lib/transbank/sdk/oneclick/mall_deferred/responses/mall_deferred_transaction_capture_response.rb +0 -16
- data/lib/transbank/sdk/oneclick/oneclick.rb +0 -5
- data/lib/transbank/sdk/onepay/base.rb +0 -125
- data/lib/transbank/sdk/onepay/errors/errors.rb +0 -17
- data/lib/transbank/sdk/onepay/errors/integration_type_error.rb +0 -8
- data/lib/transbank/sdk/onepay/errors/invalid_options_error.rb +0 -8
- data/lib/transbank/sdk/onepay/errors/item_error.rb +0 -8
- data/lib/transbank/sdk/onepay/errors/refund_create_error.rb +0 -8
- data/lib/transbank/sdk/onepay/errors/response_error.rb +0 -8
- data/lib/transbank/sdk/onepay/errors/shopping_cart_error.rb +0 -8
- data/lib/transbank/sdk/onepay/errors/signature_error.rb +0 -8
- data/lib/transbank/sdk/onepay/errors/transaction_commit_error.rb +0 -8
- data/lib/transbank/sdk/onepay/errors/transaction_create_error.rb +0 -8
- data/lib/transbank/sdk/onepay/errors/transbank_error.rb +0 -9
- data/lib/transbank/sdk/onepay/models/channels.rb +0 -15
- data/lib/transbank/sdk/onepay/models/item.rb +0 -103
- data/lib/transbank/sdk/onepay/models/models.rb +0 -10
- data/lib/transbank/sdk/onepay/models/refund.rb +0 -50
- data/lib/transbank/sdk/onepay/models/shopping_cart.rb +0 -65
- data/lib/transbank/sdk/onepay/models/transaction.rb +0 -143
- data/lib/transbank/sdk/onepay/requests/refund_create_request.rb +0 -45
- data/lib/transbank/sdk/onepay/requests/request.rb +0 -18
- data/lib/transbank/sdk/onepay/requests/requests.rb +0 -9
- data/lib/transbank/sdk/onepay/requests/transaction_commit_request.rb +0 -48
- data/lib/transbank/sdk/onepay/requests/transaction_create_request.rb +0 -85
- data/lib/transbank/sdk/onepay/responses/refund_create_response.rb +0 -24
- data/lib/transbank/sdk/onepay/responses/response.rb +0 -18
- data/lib/transbank/sdk/onepay/responses/responses.rb +0 -9
- data/lib/transbank/sdk/onepay/responses/transaction_commit_response.rb +0 -39
- data/lib/transbank/sdk/onepay/responses/transaction_create_response.rb +0 -32
- data/lib/transbank/sdk/patpass/errors/integration_type_error.rb +0 -8
- data/lib/transbank/sdk/patpass/errors/patpass_error.rb +0 -15
- data/lib/transbank/sdk/patpass/patpass_by_webpay/base.rb +0 -47
- data/lib/transbank/sdk/patpass/patpass_by_webpay/errors/patpass_by_webpay_errors.rb +0 -12
- data/lib/transbank/sdk/patpass/patpass_by_webpay/errors/transaction_commit_error.rb +0 -15
- data/lib/transbank/sdk/patpass/patpass_by_webpay/errors/transaction_create_error.rb +0 -15
- data/lib/transbank/sdk/patpass/patpass_by_webpay/errors/transaction_status_error.rb +0 -15
- data/lib/transbank/sdk/patpass/patpass_by_webpay/options.rb +0 -9
- data/lib/transbank/sdk/patpass/patpass_by_webpay/patpass_by_webpay.rb +0 -16
- data/lib/transbank/sdk/patpass/patpass_by_webpay/responses/patpass_by_webpay_responses.rb +0 -3
- data/lib/transbank/sdk/patpass/patpass_by_webpay/responses/transaction_commit_response.rb +0 -20
- data/lib/transbank/sdk/patpass/patpass_by_webpay/responses/transaction_create_response.rb +0 -15
- data/lib/transbank/sdk/patpass/patpass_by_webpay/responses/transaction_status_response.rb +0 -21
- data/lib/transbank/sdk/patpass/patpass_comercio/base.rb +0 -47
- data/lib/transbank/sdk/patpass/patpass_comercio/errors/inscription_start_error.rb +0 -15
- data/lib/transbank/sdk/patpass/patpass_comercio/errors/inscription_status_error.rb +0 -15
- data/lib/transbank/sdk/patpass/patpass_comercio/errors/patpass_comercio_errors.rb +0 -2
- data/lib/transbank/sdk/patpass/patpass_comercio/options.rb +0 -9
- data/lib/transbank/sdk/patpass/patpass_comercio/patpass_comercio.rb +0 -5
- data/lib/transbank/sdk/patpass/patpass_comercio/responses/inscription_start_response.rb +0 -13
- data/lib/transbank/sdk/patpass/patpass_comercio/responses/inscription_status_response.rb +0 -13
- data/lib/transbank/sdk/patpass/patpass_comercio/responses/patpass_comercio_responses.rb +0 -2
- data/lib/transbank/sdk/transaccion_completa/base.rb +0 -49
- data/lib/transbank/sdk/transaccion_completa/errors/transaccion_completa_error.rb +0 -16
- data/lib/transbank/sdk/transaccion_completa/errors/transaccion_completa_errors.rb +0 -6
- data/lib/transbank/sdk/transaccion_completa/errors/transaction_commit_error.rb +0 -14
- data/lib/transbank/sdk/transaccion_completa/errors/transaction_create_error.rb +0 -14
- data/lib/transbank/sdk/transaccion_completa/errors/transaction_installments_error.rb +0 -14
- data/lib/transbank/sdk/transaccion_completa/errors/transaction_refund_error.rb +0 -14
- data/lib/transbank/sdk/transaccion_completa/errors/transaction_status_error.rb +0 -14
- data/lib/transbank/sdk/transaccion_completa/mall/mall_transaction.rb +0 -164
- data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_commit_response.rb +0 -14
- data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_installments_response.rb +0 -11
- data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_responses.rb +0 -3
- data/lib/transbank/sdk/transaccion_completa/mall/responses/mall_transaction_status_response.rb +0 -14
- data/lib/transbank/sdk/transaccion_completa/options.rb +0 -7
- data/lib/transbank/sdk/transaccion_completa/responses/transaccion_completa_responses.rb +0 -5
- data/lib/transbank/sdk/transaccion_completa/responses/transaction_commit_response.rb +0 -16
- data/lib/transbank/sdk/transaccion_completa/responses/transaction_create_response.rb +0 -10
- data/lib/transbank/sdk/transaccion_completa/responses/transaction_installments_response.rb +0 -13
- data/lib/transbank/sdk/transaccion_completa/responses/transaction_refund_response.rb +0 -14
- data/lib/transbank/sdk/transaccion_completa/responses/transaction_status_response.rb +0 -16
- data/lib/transbank/sdk/transaccion_completa/transaccion_completa.rb +0 -5
- data/lib/transbank/sdk/transaccion_completa/transaction.rb +0 -117
- data/lib/transbank/sdk/transbank_error.rb +0 -6
- data/lib/transbank/sdk/utils/json_utils.rb +0 -75
- data/lib/transbank/sdk/utils/net_helper.rb +0 -82
- data/lib/transbank/sdk/utils/request_builder.rb +0 -96
- data/lib/transbank/sdk/utils/signature_utils.rb +0 -49
- data/lib/transbank/sdk/utils/utils.rb +0 -9
- data/lib/transbank/sdk/webpay/errors/integration_type_error.rb +0 -8
- data/lib/transbank/sdk/webpay/errors/webpay_error.rb +0 -14
- data/lib/transbank/sdk/webpay/webpay_plus/base.rb +0 -62
- data/lib/transbank/sdk/webpay/webpay_plus/deferred/deferred_transaction.rb +0 -108
- data/lib/transbank/sdk/webpay/webpay_plus/deferred/errors/transaction_capture_error.rb +0 -16
- data/lib/transbank/sdk/webpay/webpay_plus/deferred/errors/webpay_plus_deferred_errors.rb +0 -1
- data/lib/transbank/sdk/webpay/webpay_plus/deferred/responses/transaction_capture_response.rb +0 -22
- data/lib/transbank/sdk/webpay/webpay_plus/deferred/responses/webpay_plus_deferred_responses.rb +0 -1
- data/lib/transbank/sdk/webpay/webpay_plus/errors/transaction_commit_error.rb +0 -17
- data/lib/transbank/sdk/webpay/webpay_plus/errors/transaction_create_error.rb +0 -16
- data/lib/transbank/sdk/webpay/webpay_plus/errors/transaction_refund_error.rb +0 -16
- data/lib/transbank/sdk/webpay/webpay_plus/errors/transaction_status_error.rb +0 -16
- data/lib/transbank/sdk/webpay/webpay_plus/errors/webpay_plus_errors.rb +0 -13
- data/lib/transbank/sdk/webpay/webpay_plus/mall/mall_transaction.rb +0 -88
- data/lib/transbank/sdk/webpay/webpay_plus/mall/responses/mall_transaction_commit_response.rb +0 -23
- data/lib/transbank/sdk/webpay/webpay_plus/mall/responses/mall_transaction_status_response.rb +0 -21
- data/lib/transbank/sdk/webpay/webpay_plus/mall/responses/webpay_plus_mall_responses.rb +0 -2
- data/lib/transbank/sdk/webpay/webpay_plus/mall_deferred/mall_deferred_transaction.rb +0 -109
- data/lib/transbank/sdk/webpay/webpay_plus/options.rb +0 -9
- data/lib/transbank/sdk/webpay/webpay_plus/responses/transaction_commit_response.rb +0 -20
- data/lib/transbank/sdk/webpay/webpay_plus/responses/transaction_create_response.rb +0 -15
- data/lib/transbank/sdk/webpay/webpay_plus/responses/transaction_refund_response.rb +0 -19
- data/lib/transbank/sdk/webpay/webpay_plus/responses/transaction_status_response.rb +0 -21
- data/lib/transbank/sdk/webpay/webpay_plus/responses/webpay_plus_responses.rb +0 -4
- 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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 256bc0c3ced136ec4077152e1a70b5bd8ea2c62dea6acffad29cb9dff3ea8921
|
4
|
+
data.tar.gz: eac1beeaef40af4e68141d0ac6bfa4b67d6f24bc16d78a8c27a53039c2aed2dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae2e6b60df22a2baff554a9ab2c5be814d6d3c94e3b303871dbb23f5298c0d805b8aa1c955678f2d18c4ea6768e78fde8b981cd9bf94bbf37c6093ac8acdf899
|
7
|
+
data.tar.gz: 34bdd0c1c17ff3444121c60b2387417a2b7616b1e3dd950d94104f7c2a3978b7115353d600a7ff7c279486c6860be21bf72aa01b7a5ce9dfe550b2d28cfee428
|
data/CHANGELOG.md
CHANGED
@@ -4,8 +4,48 @@ 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
|
-
## [
|
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
|
8
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
|
+
|
30
|
+
## [1.5.1] - 2021-04-12
|
31
|
+
### Added
|
32
|
+
- Se agrega captura diferida en Transacción Completa y Transacción Completa Mall
|
33
|
+
|
34
|
+
## [1.4.1] - 2021-03-30
|
35
|
+
### Fixed
|
36
|
+
- Se agrega parámetro de estado faltante en respuesta de Commit y Status en Webpay Plus
|
37
|
+
- Se agrega dependencia JSON (~> 2.0) para evitar problemas al recibir respuesta de Commit
|
38
|
+
- Se arregla endpoint de captura en Webpay Plus
|
39
|
+
|
40
|
+
## [1.4.0] - 2020-12-03
|
41
|
+
### Added
|
42
|
+
- Se agregan métodos de configuración para integración a Webpay Plus en sus modalidades diferidas y mall diferida.
|
43
|
+
- Se agregan métodos de configuración para integración a Webpay Oneclick en su modalidad mall diferida.
|
44
|
+
|
45
|
+
### Fixed
|
46
|
+
- 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
|
47
|
+
|
48
|
+
## [1.3.1] - 2020-10-29
|
9
49
|
### Fixed
|
10
50
|
- Se revierte commit que elimina requires necesarios para productos REST
|
11
51
|
|
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
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
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::DEFAULT_API_KEY,
|
68
|
-
commerce_code: PatpassByWebpay::Base::DEFAULT_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
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
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
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
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
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
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,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
|