easy_pay_u_latam 0.1.15 → 0.1.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +15 -0
  3. data/app/assets/javascripts/easy_pay_u_latam/application.js +2 -0
  4. data/app/assets/javascripts/easy_pay_u_latam/subscriptions/angular-card.js +222 -0
  5. data/app/assets/javascripts/easy_pay_u_latam/subscriptions/application.js +8 -0
  6. data/app/assets/javascripts/easy_pay_u_latam/subscriptions/card.js +2533 -0
  7. data/app/assets/javascripts/easy_pay_u_latam/subscriptions/controllers/Main.js +158 -0
  8. data/app/assets/javascripts/easy_pay_u_latam/subscriptions/controllers/Subscriptions.js +368 -0
  9. data/app/assets/javascripts/easy_pay_u_latam/subscriptions/country-picker.min.js +1 -0
  10. data/app/assets/stylesheets/easy_pay_u_latam/styles.css +4 -0
  11. data/app/assets/stylesheets/easy_pay_u_latam/subscriptions/application.scss +1 -0
  12. data/app/assets/stylesheets/easy_pay_u_latam/subscriptions/card.css +1 -0
  13. data/app/controllers/easy_pay_u_latam/api/v1/pay_u_cards_controller.rb +80 -0
  14. data/app/controllers/easy_pay_u_latam/api/v1/pay_u_clients_controller.rb +18 -0
  15. data/app/controllers/easy_pay_u_latam/api/v1/pay_u_subscriptions_controller.rb +56 -0
  16. data/app/views/easy_pay_u_latam/pay_u_payments/_dashboard.html.erb +15 -0
  17. data/app/views/easy_pay_u_latam/pay_u_payments/cards/_form.html.erb +81 -0
  18. data/app/views/easy_pay_u_latam/pay_u_payments/cards/_list.html.erb +54 -0
  19. data/app/views/easy_pay_u_latam/pay_u_payments/plans/_list.html.erb +30 -0
  20. data/app/views/easy_pay_u_latam/pay_u_payments/subscriptions/_actual.html.erb +54 -0
  21. data/app/views/easy_pay_u_latam/pay_u_payments/{index.html.erb → subscriptions/_form.html.erb} +0 -0
  22. data/app/views/easy_pay_u_latam/pay_u_payments/subscriptions/_list.html.erb +49 -0
  23. data/app/views/easy_pay_u_latam/pay_u_payments/subscriptions/_none.html.erb +0 -0
  24. data/app/views/easy_pay_u_latam/pay_u_payments/subscriptions/_show.html.erb +0 -0
  25. data/config/routes.rb +5 -0
  26. data/lib/easy_pay_u_latam.rb +6 -0
  27. data/lib/easy_pay_u_latam/r_api.rb +47 -0
  28. data/lib/easy_pay_u_latam/r_api/card.rb +102 -0
  29. data/lib/easy_pay_u_latam/r_api/client.rb +28 -0
  30. data/lib/easy_pay_u_latam/r_api/invoice.rb +53 -0
  31. data/lib/easy_pay_u_latam/r_api/invoice_service.rb +48 -0
  32. data/lib/easy_pay_u_latam/r_api/plan.rb +71 -0
  33. data/lib/easy_pay_u_latam/r_api/request.rb +133 -0
  34. data/lib/easy_pay_u_latam/r_api/subscription.rb +41 -0
  35. data/lib/easy_pay_u_latam/r_api/subscription_interceptor.rb +51 -0
  36. data/lib/easy_pay_u_latam/r_api/subscription_service.rb +208 -0
  37. data/lib/easy_pay_u_latam/version.rb +1 -1
  38. metadata +83 -30
@@ -0,0 +1,41 @@
1
+ module EasyPayULatam
2
+ module RApi
3
+ class Subscription < Request
4
+ attr_reader :url, :plan, :customer, :card
5
+ attr_accessor :resource, :params
6
+
7
+ def initialize(customer)
8
+ @customer = customer
9
+ @customer = customer.response if !customer.nil?
10
+ # @callback_url = callback_url
11
+ @params = {}
12
+ return if @customer.nil?
13
+ load("")
14
+ end
15
+
16
+ def invoice_url
17
+ @url = RApi.base_url + "/rest/v4.9/recurringBill?customerId=#{@customer['id']}"
18
+ end
19
+
20
+ def url
21
+ @url = RApi.base_url + '/rest/v4.9/subscriptions/'
22
+ end
23
+
24
+ def create!
25
+ url
26
+ super
27
+ end
28
+
29
+ def load(id)
30
+ invoice_url
31
+ super
32
+ end
33
+
34
+ def delete(token)
35
+ url
36
+ super
37
+ end
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,51 @@
1
+ module PayuLatam
2
+ class SubscriptionInterceptor
3
+ # recibe la información de contexto y genera una instancia de si mismo para llamar el
4
+ # metodo de instancia run, retorna el objeto de instancia generado
5
+ def self.call(context)
6
+ interactor = new(context) # objeto nuevo, instancia de esta misma clase
7
+ interactor.run # metodo principal de la clase
8
+ interactor
9
+ end
10
+
11
+ attr_reader :error
12
+
13
+ # metodo inicializador de las clases en ruby
14
+ # recibe el contexto enviado
15
+ # recordar que el contexto es enviado desde el controlador, por lo tanto contiene toda
16
+ # la información del request htto, entre ellos los params y el current_user
17
+ def initialize(context)
18
+ @context = context
19
+ end
20
+
21
+ # si no hay error, es que todo salió bien
22
+ def success?
23
+ @error.nil?
24
+ end
25
+
26
+ # metodo principal de esta clase
27
+ # al estar en un 'rescue' evitamos que el proyecto saque error 500 cuando algo sale mal
28
+ # INTERCEPTAMOS el error y lo enviamos al controller para que trabaje con el
29
+ #
30
+ # de la variable @context, obtenemos los params y el current_user
31
+ # en los params se encuentran datos del plan , tarjeta de crédito seleccionada o datos de nueva tarjeta
32
+ #
33
+ # se ejecuta el metodo 'call' del SubscriptionService
34
+ def run
35
+ PayuLatam::SubscriptionService.new(context.params, context.current_user).call
36
+ rescue => exception
37
+ fail!(exception.message)
38
+ end
39
+
40
+ private
41
+
42
+ attr_reader :context
43
+
44
+ # metodo bang de error
45
+ # recibe un mensaje de error y lo almacena en la variable de instancia @error
46
+ # esta variable es usado por el controlador para verificar si ha ocurrido un error
47
+ def fail!(error)
48
+ @error = error
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,208 @@
1
+ module PayuLatam
2
+ class SubscriptionService < Request
3
+ attr_reader :current_user
4
+
5
+ # inicializa la clase actual
6
+ # recibe los params del contexto que se envian desde el subscription_interceptor
7
+ # recibe el current_user(active_record)
8
+ def initialize(options = {}, current_user)
9
+ @current_user = current_user
10
+ options.each_pair do |key, value|
11
+ instance_variable_set("@#{key}", value)
12
+ end
13
+ end
14
+
15
+ # crea o carga el cliente en payu
16
+ # se usa la informacion del curren_user para generar un cliente en payu en caso de no existir
17
+ # se llena la variable @client con la respuesta de payu api
18
+ def client
19
+ # se intenta encontrar un cliente en payu con el campo payu_customer_id del usuario
20
+ client = PayuLatam::Client.new(@current_user.payu_customer_id)
21
+ # todas las peticiones del modulo eredan de request, eso da acceso al metodo success? indica si sale bien o no
22
+ if client.success?
23
+ # en caso de encontrar el usuario se llena la variable @client con la instancia de clase PayuLatam::Client
24
+ @client = client
25
+ else
26
+ # si el usuario aun no es cliente en payu. se procede a crearlo
27
+ # se sobreescriben los params con los valores del usuario
28
+ client.params[:fullName] = @current_user.name
29
+ client.params[:email] = @current_user.email
30
+ client.create! # llamado al metodo creacion
31
+ if client.success?
32
+ # si la creacion es exitosa se almacena en la variable @client
33
+ @client = client
34
+ # El cliente ha sido creado en payu, esto retorna el id en payu del usuario
35
+ # ese id lo asignamos al usuario en la BD
36
+ @current_user.update_attribute(:payu_customer_id, @client.resource['id'])
37
+ else
38
+ # si la creacion falla, se lanza un error con el mensaje necesario
39
+ # este error es interceptado y controlado
40
+ raise StandardError, 'Error creando cliente/customer: '+ client.error.to_s
41
+ end
42
+ end
43
+ end
44
+
45
+ # crea o carga un plan en un cliente de payu
46
+ # se utiliza el current_user, el payu_id del cliente y el plan_code del plan
47
+ def plan
48
+ # si el usuario no tiene plan_id en su modelo, se le asigna el plan_id seleccionado en el formulario
49
+ # recordar que ese plan_id llega en los params del contexto y por tanto tenemos acceso a el
50
+ # como variable de clase @plan_id
51
+
52
+ if @current_user.plan_id.nil?
53
+ if @plan_id.nil?
54
+ raise StandardError, 'Error creando plan, plan_id null'
55
+ end
56
+ # se almacena en el user
57
+ @current_user.update_attribute(:plan_id, @plan_id)
58
+ # despues de tenerlo almacenado en la bd, llamamos nuevamente este metodo plan
59
+ plan
60
+ else
61
+ # el usuario tiene un plan_id asignado, se le actualiza el plan_id en caso de que haya seleccionado uno
62
+ # diferente al que tiene actualmente
63
+ @current_user.update_attribute(:plan_id, @plan_id)
64
+ # obtener informacion del plan de la BD
65
+ plan_db = @current_user.plan
66
+ #
67
+ # NOTA: los planes deben tener un plan_code es OBLIGATORIO para el buen funcionamiento
68
+ #
69
+ if plan_db.plan_code.nil? || plan_db.plan_code.empty?
70
+ raise StandardError, 'Error creando plan, code null'
71
+ end
72
+ # con el plan_code lo buscamos en payu
73
+ plan_payu = PayuLatam::Plan.new(plan_db.plan_code)
74
+ # si existe?
75
+ if plan_payu.success?
76
+ # llenar la variable plan con la instancia de clase PayuLatam:Plan
77
+ @plan = plan_payu
78
+ else
79
+ # si no existe en pyu, crearlo con el metodo del modelo plan
80
+ plan_db.create_payu_plan
81
+ # llamado recursivo
82
+ plan
83
+ end
84
+ end
85
+ end
86
+
87
+ # la respuesta de payu de client incluye un nodo con las tarjetas de credito del usuario asociadas en payu
88
+ def cards
89
+ @cards ||= @client.resource['creditCards']
90
+ end
91
+
92
+ # crear tarjeta de credito en payu
93
+ # utiliza los params recibidos
94
+ def create_card
95
+ raise StandardError, 'Cliente null' if @client.nil?
96
+ # la instancia de card recibe como parametro el @client al que se le va asociar la tarjeta
97
+ card = PayuLatam::Card.new(@client)
98
+ # hay un metodo card_params que genera el objeto a enviar con los datos correctos
99
+ # se asignan los params correctos para la peticion
100
+ card.params.merge! card_params
101
+
102
+ # intento de creacion de tarjeta
103
+ card.create!
104
+ # si todo bien
105
+ if card.success?
106
+ # se llena la variable @card con la instancia de la clase PayuLatam::Card
107
+ @card = card
108
+
109
+ # no me acuerdo XD
110
+ @client.remove_cards
111
+
112
+ # se agrega la tarjeta al array de tarjetas del usuario. Ojo este array esta en memoria no necesariamente
113
+ # es el mismo array de payu
114
+ @client.add_card( card.response )
115
+
116
+ # la respuesta de creacion de payu solo incluye el token de la tarjeta, entonces
117
+ # volvemos a consultar la info almacenada en payu para recibier un poco mas de detalle y almacenarlo
118
+ _card = card.load(card.response['token'])
119
+ # se crea un registro de payu_card con la info publica de la tarjeta y el token de payu de la tarjeta
120
+ @current_user.payu_cards.create(token: @card.response['token'], last_4: _card['number'], brand: _card['type'])
121
+ else
122
+ raise StandardError, "Error generando token de tarjeta: #{card.error}"
123
+ end
124
+ end
125
+
126
+ # generar subscripcion
127
+ # se envian los parametros necesarios, @plan, @client, callback de pago realizado
128
+ #
129
+ # NOTA: la url del callback debe ser creada en el modulo principal payu_latam.rb en las variables inicializadoras
130
+ # TODO: hacer el cambio de la nota.
131
+ def subscription!
132
+ @subscription = PayuLatam::Subscription.new(@plan, @client, 'http://10d2e1a2.ngrok.io/payu/api/v1/subscriptions.json')
133
+ @subscription.create!
134
+ if @subscription.success?
135
+ puts "Subscription creada!"
136
+ @current_user.payu_subscriptions.create(subscription_params)
137
+ @subscription
138
+ else
139
+ raise StandardError, "Error generando la subscripción: #{@subscription.error}"
140
+ end
141
+ end
142
+
143
+ # busca la info de una tarjeta de payu
144
+ def find_card
145
+ @client.remove_cards
146
+ card = PayuLatam::Card.new(@client) # info de payu
147
+ card.load( PayuCard.find(@selected_card).token )
148
+ @client.add_card({token: card.resource['token']})
149
+ end
150
+
151
+
152
+ # metodo principal de la clase
153
+ # se encarga de cargar informacion de: cliente(customer), plan, tarjeta
154
+ # una vez esa información esta lista, se realiza la subscripcion
155
+ #
156
+ # NOTA. Si por alguna razon alguno de los metodos de este archivo falla y saca error 500, el error
157
+ # sera intercepato por la clase subscription_interceptor y manejado correctamente por el controlador
158
+ def call
159
+ # metodo que controla la carga de cliente(customer)
160
+ client
161
+ # metodo que controla la carga de plan
162
+ plan
163
+ # si dentro de los params recibidos se encuentra un numero de tarjeta de credito, quiere
164
+ # decir que se desea generar una nueva tarjeta en payu
165
+ if @card_number
166
+ # generar nueva tarjeta
167
+ create_card
168
+ else
169
+ # usar tarjeta previamente usada
170
+ find_card
171
+ end
172
+
173
+ # crear subscripcion en payu usando la informacion previamente cargada en este metodo
174
+ subscription!
175
+ end
176
+
177
+ private
178
+
179
+ # sobreescribir los params por defecto con los datos reales
180
+ def card_params
181
+ {
182
+ "name": @card_name,
183
+ "document": @current_user.document,
184
+ "number": @card_number,
185
+ "expMonth": @card_exp_month,
186
+ "expYear": @card_exp_year,
187
+ "type": @card_type,
188
+ "address": {
189
+ "line1": @card_address,
190
+ "postalCode": @card_postal_code,
191
+ "city": @card_city_name,
192
+ "country": "CO",
193
+ "phone": @current_user.phone
194
+ }
195
+ }
196
+ end
197
+
198
+ # sobreescribir los params por defecto con los datos reales
199
+ def subscription_params
200
+ {
201
+ "payu_id": @subscription.resource['id'],
202
+ "current_period_start": @subscription.resource['currentPeriodStart'],
203
+ "current_period_end": @subscription.resource['currentPeriodEnd'],
204
+ "payu_plan": @subscription.resource['plan']
205
+ }
206
+ end
207
+ end
208
+ end
@@ -1,3 +1,3 @@
1
1
  module EasyPayULatam
2
- VERSION = '0.1.15'
2
+ VERSION = '0.1.16'
3
3
  end
metadata CHANGED
@@ -1,22 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_pay_u_latam
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.15
4
+ version: 0.1.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - DEVPENGUIN
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-13 00:00:00.000000000 Z
11
+ date: 2018-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 4.2.1
20
17
  - - ">="
21
18
  - !ruby/object:Gem::Version
22
19
  version: 4.2.1
@@ -24,9 +21,6 @@ dependencies:
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: 4.2.1
30
24
  - - ">="
31
25
  - !ruby/object:Gem::Version
32
26
  version: 4.2.1
@@ -34,23 +28,20 @@ dependencies:
34
28
  name: rabl
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
- - - "~>"
31
+ - - ">="
38
32
  - !ruby/object:Gem::Version
39
33
  version: 0.13.1
40
34
  type: :runtime
41
35
  prerelease: false
42
36
  version_requirements: !ruby/object:Gem::Requirement
43
37
  requirements:
44
- - - "~>"
38
+ - - ">="
45
39
  - !ruby/object:Gem::Version
46
40
  version: 0.13.1
47
41
  - !ruby/object:Gem::Dependency
48
42
  name: jquery-rails
49
43
  requirement: !ruby/object:Gem::Requirement
50
44
  requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '4.3'
54
45
  - - ">="
55
46
  - !ruby/object:Gem::Version
56
47
  version: 4.3.1
@@ -58,9 +49,6 @@ dependencies:
58
49
  prerelease: false
59
50
  version_requirements: !ruby/object:Gem::Requirement
60
51
  requirements:
61
- - - "~>"
62
- - !ruby/object:Gem::Version
63
- version: '4.3'
64
52
  - - ">="
65
53
  - !ruby/object:Gem::Version
66
54
  version: 4.3.1
@@ -68,9 +56,6 @@ dependencies:
68
56
  name: bootstrap-sass
69
57
  requirement: !ruby/object:Gem::Requirement
70
58
  requirements:
71
- - - "~>"
72
- - !ruby/object:Gem::Version
73
- version: '3.3'
74
59
  - - ">="
75
60
  - !ruby/object:Gem::Version
76
61
  version: 3.3.6
@@ -78,9 +63,6 @@ dependencies:
78
63
  prerelease: false
79
64
  version_requirements: !ruby/object:Gem::Requirement
80
65
  requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: '3.3'
84
66
  - - ">="
85
67
  - !ruby/object:Gem::Version
86
68
  version: 3.3.6
@@ -88,28 +70,70 @@ dependencies:
88
70
  name: sass-rails
89
71
  requirement: !ruby/object:Gem::Requirement
90
72
  requirements:
91
- - - "~>"
73
+ - - ">="
92
74
  - !ruby/object:Gem::Version
93
75
  version: '5.0'
94
76
  type: :runtime
95
77
  prerelease: false
96
78
  version_requirements: !ruby/object:Gem::Requirement
97
79
  requirements:
98
- - - "~>"
80
+ - - ">="
99
81
  - !ruby/object:Gem::Version
100
82
  version: '5.0'
101
83
  - !ruby/object:Gem::Dependency
102
- name: pg
84
+ name: angularjs-rails
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rails-assets-sweetalert2
103
99
  requirement: !ruby/object:Gem::Requirement
104
100
  requirements:
105
101
  - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 5.1.1
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 5.1.1
111
+ - !ruby/object:Gem::Dependency
112
+ name: sweet-alert2-rails
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: pg
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
106
130
  - !ruby/object:Gem::Version
107
131
  version: 0.21.0
108
132
  type: :development
109
133
  prerelease: false
110
134
  version_requirements: !ruby/object:Gem::Requirement
111
135
  requirements:
112
- - - "~>"
136
+ - - ">="
113
137
  - !ruby/object:Gem::Version
114
138
  version: 0.21.0
115
139
  description: PayU Latam easy integration.
@@ -126,9 +150,20 @@ files:
126
150
  - app/assets/images/easy_pay_u_latam/btn-payu.png
127
151
  - app/assets/images/easy_pay_u_latam/payu.png
128
152
  - app/assets/javascripts/easy_pay_u_latam/application.js
153
+ - app/assets/javascripts/easy_pay_u_latam/subscriptions/angular-card.js
154
+ - app/assets/javascripts/easy_pay_u_latam/subscriptions/application.js
155
+ - app/assets/javascripts/easy_pay_u_latam/subscriptions/card.js
156
+ - app/assets/javascripts/easy_pay_u_latam/subscriptions/controllers/Main.js
157
+ - app/assets/javascripts/easy_pay_u_latam/subscriptions/controllers/Subscriptions.js
158
+ - app/assets/javascripts/easy_pay_u_latam/subscriptions/country-picker.min.js
129
159
  - app/assets/stylesheets/easy_pay_u_latam/application.scss
130
160
  - app/assets/stylesheets/easy_pay_u_latam/styles.css
161
+ - app/assets/stylesheets/easy_pay_u_latam/subscriptions/application.scss
162
+ - app/assets/stylesheets/easy_pay_u_latam/subscriptions/card.css
163
+ - app/controllers/easy_pay_u_latam/api/v1/pay_u_cards_controller.rb
164
+ - app/controllers/easy_pay_u_latam/api/v1/pay_u_clients_controller.rb
131
165
  - app/controllers/easy_pay_u_latam/api/v1/pay_u_payments_controller.rb
166
+ - app/controllers/easy_pay_u_latam/api/v1/pay_u_subscriptions_controller.rb
132
167
  - app/controllers/easy_pay_u_latam/api_controller.rb
133
168
  - app/controllers/easy_pay_u_latam/application_controller.rb
134
169
  - app/controllers/easy_pay_u_latam/pay_u_payments_controller.rb
@@ -141,10 +176,18 @@ files:
141
176
  - app/views/easy_pay_u_latam/api/v1/pay_u_payments/index.rabl
142
177
  - app/views/easy_pay_u_latam/pay_u_payment_mailer/error.html.erb
143
178
  - app/views/easy_pay_u_latam/pay_u_payment_mailer/success.html.erb
179
+ - app/views/easy_pay_u_latam/pay_u_payments/_dashboard.html.erb
144
180
  - app/views/easy_pay_u_latam/pay_u_payments/_form.html.erb
181
+ - app/views/easy_pay_u_latam/pay_u_payments/cards/_form.html.erb
182
+ - app/views/easy_pay_u_latam/pay_u_payments/cards/_list.html.erb
145
183
  - app/views/easy_pay_u_latam/pay_u_payments/edit.html.erb
146
- - app/views/easy_pay_u_latam/pay_u_payments/index.html.erb
184
+ - app/views/easy_pay_u_latam/pay_u_payments/plans/_list.html.erb
147
185
  - app/views/easy_pay_u_latam/pay_u_payments/show.html.erb
186
+ - app/views/easy_pay_u_latam/pay_u_payments/subscriptions/_actual.html.erb
187
+ - app/views/easy_pay_u_latam/pay_u_payments/subscriptions/_form.html.erb
188
+ - app/views/easy_pay_u_latam/pay_u_payments/subscriptions/_list.html.erb
189
+ - app/views/easy_pay_u_latam/pay_u_payments/subscriptions/_none.html.erb
190
+ - app/views/easy_pay_u_latam/pay_u_payments/subscriptions/_show.html.erb
148
191
  - app/views/layouts/easy_pay_u_latam/application.html.erb
149
192
  - app/views/layouts/easy_pay_u_latam/mailer.html.erb
150
193
  - config/initializers/rabl.rb
@@ -154,6 +197,16 @@ files:
154
197
  - lib/easy_pay_u_latam.rb
155
198
  - lib/easy_pay_u_latam/Configuration.rb
156
199
  - lib/easy_pay_u_latam/engine.rb
200
+ - lib/easy_pay_u_latam/r_api.rb
201
+ - lib/easy_pay_u_latam/r_api/card.rb
202
+ - lib/easy_pay_u_latam/r_api/client.rb
203
+ - lib/easy_pay_u_latam/r_api/invoice.rb
204
+ - lib/easy_pay_u_latam/r_api/invoice_service.rb
205
+ - lib/easy_pay_u_latam/r_api/plan.rb
206
+ - lib/easy_pay_u_latam/r_api/request.rb
207
+ - lib/easy_pay_u_latam/r_api/subscription.rb
208
+ - lib/easy_pay_u_latam/r_api/subscription_interceptor.rb
209
+ - lib/easy_pay_u_latam/r_api/subscription_service.rb
157
210
  - lib/easy_pay_u_latam/version.rb
158
211
  - lib/tasks/easy_pay_u_latam_tasks.rake
159
212
  homepage: https://github.com/simoncorreaocampo/EasyPayULatam
@@ -176,9 +229,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
229
  version: '0'
177
230
  requirements: []
178
231
  rubyforge_project:
179
- rubygems_version: 2.4.5.1
232
+ rubygems_version: 2.7.3
180
233
  signing_key:
181
234
  specification_version: 4
182
- summary: With this gem you can use PayU Latam Web Checkout with some simple configuration
183
- step.
235
+ summary: With this gem you can use PayU Latam Web Checkout and recurrent payments
236
+ with some simple configuration step.
184
237
  test_files: []