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