alectrico-tbk 0.1.9.pre.beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0a860e90e2860113918c6fd3263d86a4ef25f11e5856bab9a3f8eb15f62a1743
4
+ data.tar.gz: 0beba8de35ddc579e50b858eee39991fb3acdcf8ff35b8ca6423ef47f815c8b7
5
+ SHA512:
6
+ metadata.gz: 7faf4c1135e4dd7e867ab47fe1fabc82bfb4dd0836f7452f1b0a47ae96fe5672e405b62a1c132ebdc1d6fdbda54e59aaf342f50aeea1b9c7d6e1cfbc0095fb94
7
+ data.tar.gz: 9fd478790ab129bff06bdd6e8306eae6467f854e809c6d8f4c12d4c4d1ef6f79f9f0d1b7c962d8f32321f29a68b505db9670fdc9d4430f9ca4cb3922f7c2a22b
data/README.md ADDED
@@ -0,0 +1,124 @@
1
+ ![Gem Version](https://badge.fury.io/rb/alectrico-tbk.svg)
2
+ # Alectrico::Tbk
3
+ Genera un link de pago en tbk para un modelo.
4
+ Tbk® es marca registrada de Transbank S.A..
5
+
6
+ ## Uso
7
+ Inserte el hook 'payable'.
8
+ Si el modelo fuese Reporte, se vería así.
9
+
10
+ Ejemplo:
11
+
12
+
13
+ ```ruby
14
+
15
+ #db/migrate/######AddColumnLinkDePagoTbkToReportes.rb
16
+ class AddColumnLinkDePagoTbkToReportes < ActiveRecord::Migration[8.0]
17
+ def change
18
+ add_column :reportes, :link_de_pago_tbk, :string
19
+ end
20
+ end
21
+
22
+ #app/models/reporte.rb
23
+ class Reporte
24
+ #link_de_pago_tbk es el nombre
25
+ #del campo en la base de datos
26
+ #que almacenará la url de pago
27
+ #que más adelante Ud.
28
+ #generará con el método tokeniza
29
+ payable url: :link_de_pago_tbk
30
+ end
31
+
32
+ #en su flujo de trabajo
33
+ reporte = Reporte.create!
34
+
35
+ #tokeniza usa el id de la instancia para generar un token
36
+ #link_de_pago_tbk_reporte_url es una método de url_helper
37
+ #de ruby. tokeniza se lo envíará con :send a url_helper
38
+ #para que genere una url para el momdelo que Ud.
39
+ #escoja
40
+ #Debe crear un controlador que responda a ese modelo
41
+ reporte.tokeniza( 'link_de_pago_tbk_reporte_url', host ) }
42
+ #host es el host del servidor donde recibirá el pago
43
+
44
+
45
+ #app/controlers/reportes_controller.rb
46
+ #La acción link_de_pago_tbk debe
47
+ #verificar que el modelo existe
48
+ #Luego debe usar el código de Transbank
49
+ #para generar un pago en la pasarela
50
+ #de transbank
51
+ class ReportesController < ApplicationController
52
+ def link_de_pago_tbk
53
+ end
54
+ end
55
+
56
+ #actualice las rutas para
57
+ #config/routes.rb
58
+ Rails.application.routes.draw do
59
+ resources :reportes do
60
+ member do
61
+ get :link_de_pago_tbk
62
+ end
63
+ end
64
+ end
65
+ ```
66
+
67
+ Puede elegir un link de pago para un controlador distinto:
68
+
69
+
70
+ ```ruby
71
+
72
+ reporte.tokeniza( 'mi_link_venta_url', host ) }
73
+ #host es el host del servidor donde recibirá el pago
74
+
75
+
76
+ #app/controlers/ventas_controller.rb
77
+ class VentasController < ApplicationController
78
+ def mi_link
79
+ end
80
+ end
81
+
82
+
83
+ #config/routes.rb
84
+ Rails.application.routes.draw do
85
+ resources :reportes do
86
+ member do
87
+ get :mi_link
88
+ end
89
+ end
90
+ end
91
+
92
+ ```
93
+
94
+ Envíe el link de pago al usuario de su aplicación para que efectúe el pago.
95
+
96
+ Cuando el usuario siga el link, el sitio web de Transbank le pedirá los datos de pago al usuario y
97
+ le cobrará a este lo que UD. haya establecido.
98
+
99
+ Al final, la pasarela redigirá al usuario a su servidor. Su aplicación debe haber proporcionado antes una url para ello.
100
+ En esa url debe confirmar el pago y entregar una boleta al usuario.
101
+
102
+
103
+ ## Instalación
104
+ Agregue esta línea al Gemfile de su Aplicación:
105
+
106
+ ```ruby
107
+ gem "alectrico-tbk"
108
+ ```
109
+
110
+ Y ejecute:
111
+ ```bash
112
+ $ bundle
113
+ ```
114
+
115
+ O haga una instalacioń manual
116
+ ```bash
117
+ $ gem install alectrico-tbk
118
+ ```
119
+
120
+ ## Contribuyó
121
+ Alexander Espinosa
122
+
123
+ ## Licencia
124
+ Está gema está disponible como código abierto, 'open source', bajos los términos [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,3 @@
1
+ require "bundler/setup"
2
+
3
+ require "bundler/gem_tasks"
@@ -0,0 +1,31 @@
1
+ require 'base64'
2
+ class String
3
+
4
+ #Esto es una sobrecarga de la clase String que agrega
5
+ #un método de instancia to_squawk
6
+
7
+ def to_squawk
8
+ "squawk! #{self}".strip
9
+ end
10
+
11
+ #self es el id de un modelo
12
+ def tokeniza( action_url, host )
13
+ puts "en tokeniza de String"
14
+ puts "action_url: "
15
+ puts action_url
16
+ id = self.to_i
17
+ puts "id: "
18
+ puts id
19
+ token = Base64::encode64( id.to_s )
20
+ begin
21
+ Rails.application.routes.url_helpers.send( action_url.to_sym, token, :only_path => false, :host => host )
22
+ rescue NoMethodError => e
23
+ puts "Hay un error, #{action_url} no se puede usar en su modelo"
24
+ puts "Debe usar este hook en su modelo:"
25
+ puts "payable alectrico_text_field: #{action_url.to_sym}"
26
+ puts "O usar otro argumento en tokeniza"
27
+ nil
28
+ end
29
+ end
30
+
31
+ end
@@ -0,0 +1,14 @@
1
+ module Alectrico
2
+ module Tbk
3
+ class Middleware
4
+ def initialize(app)
5
+ @app = app
6
+ end
7
+
8
+ def call(env)
9
+ return [200, {}, ['I am a middleware']]
10
+ end
11
+ end
12
+ end
13
+ end
14
+
@@ -0,0 +1,52 @@
1
+ #Aquí empieza la programación
2
+ #Si desde el hospedero de la gema
3
+ #Se instala la gema con bundle install
4
+ #Aprece el mensaje en puts
5
+ #Tambíen cuando se llama a rake tasks
6
+ #desde el hospedero
7
+ #require "alectrico/tbk/version"
8
+ #require "alectrico/tbk/core_ext"
9
+ #require "alectrico/tbk/payable"
10
+
11
+
12
+ module Alectrico
13
+ module Tbk
14
+ #las url, exceptp la de imagen, deben ser generadas por el url_helper de Rails
15
+ class Pago
16
+
17
+ #las url, exceptp la de imagen, deben ser generadas por el url_helper de Rails
18
+ # email,
19
+ # servicio,
20
+ # presupuesto,
21
+ # repositorio,
22
+ # imagen_url,
23
+ # listener_url,
24
+ # return_url,
25
+ # cancel_url,
26
+ # notify_url
27
+ def initialize(
28
+ email,
29
+ servicio,
30
+ presupuesto,
31
+ repositorio,
32
+ imagen_url,
33
+ listener_url,
34
+ return_url,
35
+ cancel_url,
36
+ notify_url )
37
+ puts "En Alectrico::Tbk::Pago"
38
+ end
39
+ #caso = ::Comercio::Compra::Unitaria::Webpay::Nominativo::Manual.new(
40
+ # repositorio,
41
+ # listener_url,
42
+ # return_url,
43
+ # cancel_url,
44
+ # image_url,
45
+ # notify_url
46
+ #)
47
+ #aso.crea {:id => servicio.id,
48
+ # :amp_cliente_id => email,
49
+ # :presupuesto_id => presupuesto.id }
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,59 @@
1
+ module Alectrico
2
+ module Tbk
3
+ module Payable
4
+ extend ActiveSupport::Concern
5
+ class_methods do
6
+ #class_methods es un hook proporcionado por extend ActiveSupport::Concern
7
+ #que permite definir métodos de clases on the fly
8
+ #En este caso el método acts_as_alectrico se puede usar como hook al comienzo
9
+ #de las clases que lo quieran usar
10
+ #El método en sí define un atribute de clase llamado alectrico_text_field
11
+ #El cual tendrá como valor por defecto lo que se suministre como argumento
12
+ #Si se llama acts_as_alectrico sin argumentos se usará como default el valor
13
+ #que tenga el valor por defecto que proporciona el método last_squack
14
+ #Pero si en opciones se ya colocado alectrico_test_field entonces se usará
15
+ #el valor devuelo por el hash de optinoes con key alectrico_text_field
16
+ def payable(options = {} )
17
+ cattr_accessor :url, default: (options[:url] || :last_squawk).to_s
18
+ end
19
+ end
20
+ included do
21
+ #Estos son métodos de instancia incorporados
22
+ #Es equivalente a usar include Module.
23
+ #Pero al usar ActiveSupport::Concern es más fácil
24
+ #Porque el do espera un módulo
25
+ #En este caso el módulo sin nombre solo aporte el método squawk
26
+ #Este método squawk solo estará accesible como método de instancia
27
+ #por virtude del uso del hook inluded.
28
+ def squawk( string )
29
+ #escribe el valor string.to_squawk al atributo devuelto por self.class.alectrico_text_field
30
+ #pero string.to_squawn ha sido sobrecargado (monkey patching en lib)
31
+ #y class_alectrico_text_field responde de acuerdo a cómo se le llame
32
+ write_attribute(self.class.alectrico_text_field, string.to_squawk)
33
+ end
34
+
35
+ # prepara un link de pago tbk para cobrar
36
+ # un servicio en la clase que lo llame
37
+ # la clase de fijar el campo que lo va a
38
+ # recibir eso se hace
39
+ # colocando el hook acts_as_alectrico y colocando el nombre del
40
+ # campo que guardará el link en la tabla de ActiveRecord
41
+ # debe existir ese campo para que esto funcione
42
+ # debe existe el campo
43
+ # cuando el usario siga el link obtenido, se tomará el precio
44
+ # de la visita del colaborador para generar el link que vaya
45
+ # a transbank.cl
46
+ # @param [String] url args to url_helpers
47
+ # @param [Numeric] id id of model
48
+ # url has to be :tbk_api_v1_electrico_reporte_url
49
+ #
50
+ def tokeniza( action_url, host )
51
+ # url = Rails.application.routes.url_helpers.send( url.to_sym, self.id, :only_path => true )
52
+ #rite_attribute(self.class.alectrico_text_field, url.post_tokeniza(self.id))
53
+ write_attribute(self.class.url, self.id.to_s.tokeniza( action_url, host ))
54
+
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,5 @@
1
+ module Alectrico
2
+ module Tbk
3
+ VERSION = "0.1.9.pre.beta.1"
4
+ end
5
+ end
@@ -0,0 +1,16 @@
1
+ #Estos requires los usa el hospedero
2
+ #Todas las clases de lib/alectrico/tbk
3
+ #Deben estar aquí
4
+ require 'alectrico/tbk/pago'
5
+ require 'alectrico/tbk/payable'
6
+ require 'alectrico/tbk/core_ext'
7
+ require 'alectrico/tbk/middleware'
8
+
9
+
10
+ module Alectrico
11
+ module Tbk
12
+ class Hola
13
+ puts "alectrico® lo saluda :)"
14
+ end
15
+ end
16
+ end
data/lib/alectrico.rb ADDED
@@ -0,0 +1,4 @@
1
+ module Alectrico
2
+ # Your code goes here...
3
+ end
4
+
data/lib/middleware.rb ADDED
@@ -0,0 +1,11 @@
1
+ #lib/middleware.rb
2
+ class MyRailtie < Rails::Railtie
3
+ def self.insert_middleware
4
+ initializer "middle.configure_rails_initialization" do |app|
5
+ app.middleware.unshift Alectrico::Tbk::Middleware
6
+ end
7
+ end
8
+ insert_middleware
9
+ end
10
+
11
+
@@ -0,0 +1,5 @@
1
+ desc "Genera un link de pago"
2
+ task :alectrico_tbk do
3
+ puts "Generando un link de pago"
4
+ # Task goes here
5
+ end
@@ -0,0 +1,7 @@
1
+ desc "Ejemplo de task"
2
+ task :alectrico do
3
+ # Task goes here
4
+ end
5
+ ~
6
+ ~
7
+ ~
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: alectrico-tbk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.9.pre.beta.1
5
+ platform: ruby
6
+ authors:
7
+ - alectrico®
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: rails
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 5.0.0
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 5.0.0
26
+ - !ruby/object:Gem::Dependency
27
+ name: jwt
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.2.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 1.2.0
40
+ - !ruby/object:Gem::Dependency
41
+ name: rspec
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.0'
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.0'
54
+ description: " Clases simples para interactuar con la pasarela Transbank (Tbk®). Tbk®
55
+ es marca registrada en Chile de Transbank S.A.. \n"
56
+ email:
57
+ - alectrico@outlook.cl
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - README.md
63
+ - Rakefile
64
+ - lib/alectrico.rb
65
+ - lib/alectrico/tbk.rb
66
+ - lib/alectrico/tbk/core_ext.rb
67
+ - lib/alectrico/tbk/middleware.rb
68
+ - lib/alectrico/tbk/pago.rb
69
+ - lib/alectrico/tbk/payable.rb
70
+ - lib/alectrico/tbk/version.rb
71
+ - lib/middleware.rb
72
+ - lib/tasks/alectrico/tbk_tasks.rake
73
+ - lib/tasks/alectrico_tasks.rake
74
+ homepage: https://www.alectrico.cl
75
+ licenses:
76
+ - MIT
77
+ metadata:
78
+ allowed_push_host: https://www.rubygems.org
79
+ changelog_uri: https://github.com/alectrico-pro/alectrico-tbk/blob/master/CHANGELOG.md
80
+ documentation_uri: https://www.rubydoc.info/gems/alectrico-tbk
81
+ homepage_uri: https://www.alectrico.cl
82
+ source_code_uri: https://github.com/alectrico-pro/alectrico-tbk
83
+ rdoc_options: []
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ requirements: []
97
+ rubygems_version: 3.6.9
98
+ specification_version: 4
99
+ summary: Genera un link de pago.
100
+ test_files: []