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.
- checksums.yaml +5 -5
- data/README.md +15 -0
- data/app/assets/javascripts/easy_pay_u_latam/application.js +2 -0
- data/app/assets/javascripts/easy_pay_u_latam/subscriptions/angular-card.js +222 -0
- data/app/assets/javascripts/easy_pay_u_latam/subscriptions/application.js +8 -0
- data/app/assets/javascripts/easy_pay_u_latam/subscriptions/card.js +2533 -0
- data/app/assets/javascripts/easy_pay_u_latam/subscriptions/controllers/Main.js +158 -0
- data/app/assets/javascripts/easy_pay_u_latam/subscriptions/controllers/Subscriptions.js +368 -0
- data/app/assets/javascripts/easy_pay_u_latam/subscriptions/country-picker.min.js +1 -0
- data/app/assets/stylesheets/easy_pay_u_latam/styles.css +4 -0
- data/app/assets/stylesheets/easy_pay_u_latam/subscriptions/application.scss +1 -0
- data/app/assets/stylesheets/easy_pay_u_latam/subscriptions/card.css +1 -0
- data/app/controllers/easy_pay_u_latam/api/v1/pay_u_cards_controller.rb +80 -0
- data/app/controllers/easy_pay_u_latam/api/v1/pay_u_clients_controller.rb +18 -0
- data/app/controllers/easy_pay_u_latam/api/v1/pay_u_subscriptions_controller.rb +56 -0
- data/app/views/easy_pay_u_latam/pay_u_payments/_dashboard.html.erb +15 -0
- data/app/views/easy_pay_u_latam/pay_u_payments/cards/_form.html.erb +81 -0
- data/app/views/easy_pay_u_latam/pay_u_payments/cards/_list.html.erb +54 -0
- data/app/views/easy_pay_u_latam/pay_u_payments/plans/_list.html.erb +30 -0
- data/app/views/easy_pay_u_latam/pay_u_payments/subscriptions/_actual.html.erb +54 -0
- data/app/views/easy_pay_u_latam/pay_u_payments/{index.html.erb → subscriptions/_form.html.erb} +0 -0
- data/app/views/easy_pay_u_latam/pay_u_payments/subscriptions/_list.html.erb +49 -0
- data/app/views/easy_pay_u_latam/pay_u_payments/subscriptions/_none.html.erb +0 -0
- data/app/views/easy_pay_u_latam/pay_u_payments/subscriptions/_show.html.erb +0 -0
- data/config/routes.rb +5 -0
- data/lib/easy_pay_u_latam.rb +6 -0
- data/lib/easy_pay_u_latam/r_api.rb +47 -0
- data/lib/easy_pay_u_latam/r_api/card.rb +102 -0
- data/lib/easy_pay_u_latam/r_api/client.rb +28 -0
- data/lib/easy_pay_u_latam/r_api/invoice.rb +53 -0
- data/lib/easy_pay_u_latam/r_api/invoice_service.rb +48 -0
- data/lib/easy_pay_u_latam/r_api/plan.rb +71 -0
- data/lib/easy_pay_u_latam/r_api/request.rb +133 -0
- data/lib/easy_pay_u_latam/r_api/subscription.rb +41 -0
- data/lib/easy_pay_u_latam/r_api/subscription_interceptor.rb +51 -0
- data/lib/easy_pay_u_latam/r_api/subscription_service.rb +208 -0
- data/lib/easy_pay_u_latam/version.rb +1 -1
- 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
|
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.
|
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-
|
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:
|
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/
|
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.
|
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
|
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: []
|