easy_pay_u_latam 0.1.15 → 0.1.16

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.
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: []