easy_pay_u_latam 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +101 -0
- data/Rakefile +37 -0
- data/app/assets/config/easy_pay_u_latam_manifest.js +2 -0
- data/app/assets/images/easy_pay_u_latam/btn-payu.png +0 -0
- data/app/assets/images/easy_pay_u_latam/payu.png +0 -0
- data/app/assets/javascripts/easy_pay_u_latam/application.js +2 -0
- data/app/assets/stylesheets/easy_pay_u_latam/application.scss +3 -0
- data/app/assets/stylesheets/easy_pay_u_latam/styles.css +4 -0
- data/app/controllers/easy_pay_u_latam/api/v1/pay_u_payments_controller.rb +111 -0
- data/app/controllers/easy_pay_u_latam/api_controller.rb +5 -0
- data/app/controllers/easy_pay_u_latam/application_controller.rb +5 -0
- data/app/controllers/easy_pay_u_latam/pay_u_payments_controller.rb +27 -0
- data/app/helpers/easy_pay_u_latam/application_helper.rb +11 -0
- data/app/jobs/easy_pay_u_latam/application_job.rb +4 -0
- data/app/mailers/easy_pay_u_latam/application_mailer.rb +6 -0
- data/app/mailers/easy_pay_u_latam/pay_u_payment_mailer.rb +17 -0
- data/app/models/easy_pay_u_latam/application_record.rb +5 -0
- data/app/models/easy_pay_u_latam/payu_payment.rb +22 -0
- data/app/views/easy_pay_u_latam/api/v1/pay_u_payments/index.rabl +0 -0
- data/app/views/easy_pay_u_latam/pay_u_payment_mailer/error.html.erb +7 -0
- data/app/views/easy_pay_u_latam/pay_u_payment_mailer/success.html.erb +7 -0
- data/app/views/easy_pay_u_latam/pay_u_payments/_form.html.erb +46 -0
- data/app/views/easy_pay_u_latam/pay_u_payments/edit.html.erb +40 -0
- data/app/views/easy_pay_u_latam/pay_u_payments/index.html.erb +0 -0
- data/app/views/easy_pay_u_latam/pay_u_payments/show.html.erb +104 -0
- data/app/views/layouts/easy_pay_u_latam/application.html.erb +14 -0
- data/app/views/layouts/easy_pay_u_latam/mailer.html.erb +74 -0
- data/config/initializers/rabl.rb +6 -0
- data/config/locales/devise.en.yml +64 -0
- data/config/routes.rb +16 -0
- data/db/migrate/20170929211207_create_easy_pay_u_latam_payu_payments.rb +58 -0
- data/lib/easy_pay_u_latam.rb +20 -0
- data/lib/easy_pay_u_latam/Configuration.rb +66 -0
- data/lib/easy_pay_u_latam/engine.rb +5 -0
- data/lib/easy_pay_u_latam/version.rb +3 -0
- data/lib/tasks/easy_pay_u_latam_tasks.rake +4 -0
- metadata +172 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 64d19525974012f933758d447a5da89ab9bcc1bc
|
4
|
+
data.tar.gz: 0127060a8f4a73a4aa6a1bbae2030955d4ad3f5e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ad907cdcab40b76e6444a1ee9544e08131d3cf545a75a095169dd99717a0432783925785284452d65ec196d7359e72c579e501f99229e72bf9d4b9a77064aaf1
|
7
|
+
data.tar.gz: 422c86b12b469e56b69818f8f88bfba04cee936d1ec9a419910830719a225808edab7e60151b16540cc10aa9eb4301af55bb434c3dfab9ea1aeac843dbe84245
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2017
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
# EasyPayULatam
|
2
|
+
With this gem you can integrate the WebCheckout of PayU Latam with simple steps.
|
3
|
+
|
4
|
+
## Installation
|
5
|
+
Add this line to your application's Gemfile:
|
6
|
+
|
7
|
+
```ruby
|
8
|
+
gem 'easy_pay_u_latam'
|
9
|
+
```
|
10
|
+
|
11
|
+
We strongly recommend using Devise gem.
|
12
|
+
```ruby
|
13
|
+
gem 'devise'
|
14
|
+
```
|
15
|
+
|
16
|
+
And then execute:
|
17
|
+
```bash
|
18
|
+
$ bundle install
|
19
|
+
```
|
20
|
+
|
21
|
+
Then run
|
22
|
+
```bash
|
23
|
+
$ rails easy_pay_u_latam:install:migrations
|
24
|
+
```
|
25
|
+
|
26
|
+
If you want to reference the payments to a user, you can run the following migration.
|
27
|
+
```bash
|
28
|
+
$ rails g migration AddUserReferencesToEasyPayULatamPayuPayments user:references
|
29
|
+
```
|
30
|
+
|
31
|
+
Don't forget to mount Engine in your routes.rb
|
32
|
+
```ruby
|
33
|
+
# config/routes.rb
|
34
|
+
mount EasyPayULatam::Engine, at: "/easy_pay_u_latam"
|
35
|
+
```
|
36
|
+
|
37
|
+
And precompile the engine assets (PayU logos).
|
38
|
+
```ruby
|
39
|
+
# config/initializers/assets.rb
|
40
|
+
Rails.application.config.assets.precompile += %w( easy_pay_u_latam/* )
|
41
|
+
```
|
42
|
+
|
43
|
+
## Configuration
|
44
|
+
First create a easy_pay_u_latam.rb in your config/initializers
|
45
|
+
```ruby
|
46
|
+
# config/initializers/easy_pay_u_latam.rb
|
47
|
+
EasyPayULatam.configure do |config|
|
48
|
+
config.api_key = "YOUR PAY U LATAM API KEY"
|
49
|
+
config.account_id = "YOUR PAY U ACCOUNT ID"
|
50
|
+
config.merchant_id = "YOUR PAY U MERCHANT ID"
|
51
|
+
config.placeholder = "SOME PLACE HOLDER FOR PAY U REFERENCE CODE"
|
52
|
+
config.root_url = "ROOT URL FOR PRODUCTION"
|
53
|
+
#Pay U will consume a Web Service and it can not be in localhost, you most use something like ngrok
|
54
|
+
config.test_root_url = "ROOT URL FOR TESTING"
|
55
|
+
config.currency_precision = 2 #By default is 0 for colombian peso
|
56
|
+
end
|
57
|
+
```
|
58
|
+
|
59
|
+
You can tell the engine which layout to use by overriding the application_controller
|
60
|
+
```ruby
|
61
|
+
# app/controllers/easy_pay_u_latam/application_controller.rb
|
62
|
+
module EasyPayULatam
|
63
|
+
class ApplicationController < ActionController::Base
|
64
|
+
protect_from_forgery with: :exception
|
65
|
+
layout "app/layouts/application"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
```
|
69
|
+
|
70
|
+
You also should override the engine application_mailer so it can send success and error emails after PayU confirmation.
|
71
|
+
```ruby
|
72
|
+
# app/mailers/easy_pay_u_latam/application_mailer.rb
|
73
|
+
module EasyPayULatam
|
74
|
+
class ApplicationMailer < ActionMailer::Base
|
75
|
+
# You can also tell the engine which mailer layout to use
|
76
|
+
layout 'easy_pay_u_latam/mailer'
|
77
|
+
default from: 'Placeholder <test@example.com>'
|
78
|
+
end
|
79
|
+
end
|
80
|
+
```
|
81
|
+
|
82
|
+
Finally create some method on any of you controllers that create the instance and data base record of the PayUPayment, you must especify amount, currency and description, period, start_date, and end_date are optionals if you are using this gem for subscriptions like payments.
|
83
|
+
```ruby
|
84
|
+
@payu_payment = EasyPayULatam::PayuPayment.create(
|
85
|
+
amount: amount,
|
86
|
+
currency: "COP",
|
87
|
+
period: params[:period],
|
88
|
+
user_id: current_user.id,
|
89
|
+
description: "Your description here...",
|
90
|
+
start_date: Date.today,
|
91
|
+
end_date: end_date
|
92
|
+
)
|
93
|
+
|
94
|
+
redirect_to "/easy_pay_u_latam/pay_u_payments/#{@payu_payment.id}/edit"
|
95
|
+
```
|
96
|
+
|
97
|
+
## Contributing
|
98
|
+
This gem is stable but it have a lot of room for improvement, is my first gem so a lot of thing could be better, feel free to help and share.
|
99
|
+
|
100
|
+
## License
|
101
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'EasyPayULatam'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.md')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
18
|
+
load 'rails/tasks/engine.rake'
|
19
|
+
|
20
|
+
|
21
|
+
load 'rails/tasks/statistics.rake'
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
require 'bundler/gem_tasks'
|
26
|
+
|
27
|
+
require 'rake/testtask'
|
28
|
+
|
29
|
+
Rake::TestTask.new(:test) do |t|
|
30
|
+
t.libs << 'lib'
|
31
|
+
t.libs << 'test'
|
32
|
+
t.pattern = 'test/**/*_test.rb'
|
33
|
+
t.verbose = false
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
task default: :test
|
Binary file
|
Binary file
|
@@ -0,0 +1,111 @@
|
|
1
|
+
module EasyPayULatam
|
2
|
+
class Api::V1::PayUPaymentsController < ApiController
|
3
|
+
|
4
|
+
# acts_as_token_authentication_handler_for User
|
5
|
+
|
6
|
+
def index
|
7
|
+
@payu_payments = PayuPayment.where(user_id: current_user.id)
|
8
|
+
end
|
9
|
+
|
10
|
+
def show
|
11
|
+
@payu_payment = PayuPayment.where(user_id: current_user.id).find params[:id]
|
12
|
+
end
|
13
|
+
|
14
|
+
def get_status
|
15
|
+
payu_payment = PayuPayment.where(user_id: current_user.id).order(created_at: :desc).first
|
16
|
+
|
17
|
+
message = "Tu pago está "
|
18
|
+
if payu_payment.status == PayuPayment::APPROVED
|
19
|
+
message += "Aprobado"
|
20
|
+
elsif payu_payment.status == PayuPayment::REJECTED
|
21
|
+
message += "Rechazado"
|
22
|
+
else
|
23
|
+
message += "Pendiente"
|
24
|
+
end
|
25
|
+
|
26
|
+
render status: 200, json: {message: message, payment_status: payu_payment.status}
|
27
|
+
end
|
28
|
+
|
29
|
+
def confirmation
|
30
|
+
@payUConfig = EasyPayULatam.configuration
|
31
|
+
# Generacion de codigo en md5
|
32
|
+
md5 = Digest::MD5.new
|
33
|
+
# api-key ~ merchant_id ~ id-sale ~ valor ~ cop ~aprovada
|
34
|
+
md5.update "#{@payUConfig.get_api_key}~#{@payUConfig.get_merchant_id}~#{params['reference_sale']}~#{params['value'].to_f}~#{params['currency']}~4"
|
35
|
+
key = md5.hexdigest
|
36
|
+
|
37
|
+
if key.to_s == params['sign'].to_s
|
38
|
+
payu_payment = PayuPayment.find(params[:id])
|
39
|
+
unless payu_payment.nil?
|
40
|
+
|
41
|
+
status = 2
|
42
|
+
if params['state_pol'] == "4"
|
43
|
+
status = 1
|
44
|
+
end
|
45
|
+
|
46
|
+
payu_payment.update(
|
47
|
+
status: status,
|
48
|
+
buyer_phone: params['phone'],
|
49
|
+
number_card: params['cc_number'],
|
50
|
+
payer_name: params['cc_holder'],
|
51
|
+
billing_country: params['billing_country'],
|
52
|
+
description: params['description'],
|
53
|
+
# value: params['value'],
|
54
|
+
payment_method_type: params['payment_method_type'],
|
55
|
+
buyer_email: params['email_buyer'],
|
56
|
+
response_message_pol: params['response_message_pol'],
|
57
|
+
shipping_city: params['shipping_city'],
|
58
|
+
transaction_id: params['transaction_id'],
|
59
|
+
sign: params['sign'],
|
60
|
+
tax: params['tax'],
|
61
|
+
payment_method: params['payment_method'],
|
62
|
+
billing_address: params['billing_address'],
|
63
|
+
payment_method_name: params['payment_method_name'],
|
64
|
+
state_pol: params['state_pol'],
|
65
|
+
buyer_nickname: params['nickname_buyer'],
|
66
|
+
reference_pol: params['reference_pol'],
|
67
|
+
currency: params['currency'],
|
68
|
+
risk: params['risk'],
|
69
|
+
shipping_address: params['shipping_address'],
|
70
|
+
bank_id: params['bank_id'],
|
71
|
+
payment_request_state: params['payment_request_state'],
|
72
|
+
customer_number: params['customer_number'],
|
73
|
+
administrative_fee_base: params['administrative_fee_base'],
|
74
|
+
attempts: params['attempts'],
|
75
|
+
merchant_id: params['merchant_id'],
|
76
|
+
exchange_rate: params['exchange_rate'],
|
77
|
+
shipping_country: params['shipping_country'],
|
78
|
+
franchise: params['franchise'],
|
79
|
+
ip: params['ip'],
|
80
|
+
billing_city: params['billing_city'],
|
81
|
+
reference_code: params['reference_sale']
|
82
|
+
)
|
83
|
+
|
84
|
+
if params['state_pol'] == "4"
|
85
|
+
PayUPaymentMailer.success(payu_payment.payer_name, payu_payment.buyer_email, payu_payment).deliver_now!
|
86
|
+
else
|
87
|
+
PayUPaymentMailer.error(payu_payment.payer_name, payu_payment.buyer_email, payu_payment).deliver_now!
|
88
|
+
end
|
89
|
+
|
90
|
+
render status: 200, json: { status: 'OK', message: 'OK', params: params }
|
91
|
+
|
92
|
+
else
|
93
|
+
PayUPaymentMailer.error(payu_payment.payer_name, payu_payment.email_buyer, payu_payment).deliver_now!
|
94
|
+
render status: 411, json: { status: 'OK', message: 'No existe referencia de pago', params: params }
|
95
|
+
end
|
96
|
+
else
|
97
|
+
|
98
|
+
render status: 411, json: { status: 'OK', message: 'Error de seguridad signature', params: params }
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
private
|
106
|
+
|
107
|
+
def set_access_control_headers
|
108
|
+
headers['Access-Control-Allow-Origin'] = '*'
|
109
|
+
headers['Access-Control-Request-Method'] = %w{GET POST OPTIONS HEAD}.join(',')
|
110
|
+
end
|
111
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module EasyPayULatam
|
2
|
+
class PayUPaymentsController < ApplicationController
|
3
|
+
|
4
|
+
# before_action :authenticate_user!
|
5
|
+
|
6
|
+
def index
|
7
|
+
@payu_payments = PayuPayment.where(user_id: params[:user_id])
|
8
|
+
end
|
9
|
+
|
10
|
+
def show
|
11
|
+
@payu_payment = PayuPayment.where(user_id: params[:user_id]).find params[:id]
|
12
|
+
end
|
13
|
+
|
14
|
+
def edit
|
15
|
+
@payUConfig = EasyPayULatam.configuration
|
16
|
+
@payu_payment = PayuPayment.where(user_id: params[:user_id]).find params[:id]
|
17
|
+
|
18
|
+
@payu_payment.update_attribute :reference_code, "#{@payUConfig.placeholder}-#{@payu_payment.id}"
|
19
|
+
@payu_payment.update_attribute :status, PayuPayment::PENDING
|
20
|
+
|
21
|
+
md5 = Digest::MD5.new
|
22
|
+
md5.update "#{@payUConfig.get_api_key}~#{@payUConfig.get_merchant_id}~#{@payUConfig.placeholder}-#{@payu_payment.id}~#{@payu_payment.amount}~#{@payu_payment.currency}"
|
23
|
+
@signature = md5.hexdigest
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module EasyPayULatam
|
2
|
+
module ApplicationHelper
|
3
|
+
def method_missing(method, *args, &block)
|
4
|
+
if (method.to_s.end_with?('_path') || method.to_s.end_with?('_url')) && main_app.respond_to?(method)
|
5
|
+
main_app.send(method, *args)
|
6
|
+
else
|
7
|
+
super
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module EasyPayULatam
|
2
|
+
class PayUPaymentMailer < ApplicationMailer
|
3
|
+
|
4
|
+
def success(name, email, payment)
|
5
|
+
@name = name
|
6
|
+
@payment = payment
|
7
|
+
mail to: email, subject: "¡Hemos recibido tu pago!"
|
8
|
+
end
|
9
|
+
|
10
|
+
def error(name, email, payment)
|
11
|
+
@name = name
|
12
|
+
@payment = payment
|
13
|
+
mail to: email, subject: "¡Tu pago ha sido rechazado!"
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module EasyPayULatam
|
2
|
+
class PayuPayment < ApplicationRecord
|
3
|
+
PENDING = 0
|
4
|
+
APPROVED = 1
|
5
|
+
REJECTED = 2
|
6
|
+
|
7
|
+
validates :amount, :currency, :user_id, :description, presence: true
|
8
|
+
|
9
|
+
def approved
|
10
|
+
self.status == APPORVED
|
11
|
+
end
|
12
|
+
|
13
|
+
def rejected
|
14
|
+
self.status == REJECTED
|
15
|
+
end
|
16
|
+
|
17
|
+
def pending
|
18
|
+
self.status == PENDING
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
File without changes
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<p>
|
2
|
+
Hola <%= @name %>, tu pago ha sido rechazado.
|
3
|
+
</p>
|
4
|
+
<br>
|
5
|
+
<br>
|
6
|
+
<br>
|
7
|
+
<%= link_to "Ver detalles", pay_u_payment_url(@payment), style: "background-color: #FED106; border-color: #FED106; color: black; padding: 10px; border-radius: 5px; text-decoration: none; font-size: 20px; font-weight: bold" %>
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<p>
|
2
|
+
Hola <%= @name %>, hemos recibido tu pago.
|
3
|
+
</p>
|
4
|
+
<br>
|
5
|
+
<br>
|
6
|
+
<br>
|
7
|
+
<%= link_to "Ver detalles", pay_u_payment_url(@payment), style: "background-color: #FED106; border-color: #FED106; color: black; padding: 10px; border-radius: 5px; text-decoration: none; font-size: 20px; font-weight: bold" %>
|
@@ -0,0 +1,46 @@
|
|
1
|
+
<div class="row" style="margin-bottom: 20px;">
|
2
|
+
<div class="col-md-12">
|
3
|
+
<label>Nombre del pagador: </label>
|
4
|
+
<input name='buyerFullName' type='text' placeholder="Nombre" class="form-control" required>
|
5
|
+
</div>
|
6
|
+
</div>
|
7
|
+
<div class="row" style="margin-bottom: 20px;">
|
8
|
+
<div class="col-md-12">
|
9
|
+
<label>Email del comprador</label>
|
10
|
+
<input name='buyerEmail' type='email' placeholder='Correo electrónico' class="form-control" required/>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
<div class="row" style="margin-bottom: 20px;">
|
14
|
+
<div class="col-md-12">
|
15
|
+
<label>Teléfono del pagador: </label>
|
16
|
+
<input name='telephone' type='phone' class="form-control" placeholder="Teléfono" required>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
<div class="row" style="margin-bottom: 20px;">
|
20
|
+
<div class="col-md-12">
|
21
|
+
<label>Dirección: </label>
|
22
|
+
<input name='shippingAddress' type='text' class="form-control" placeholder="Dirección" required>
|
23
|
+
</div>
|
24
|
+
</div>
|
25
|
+
<div class="row" style="margin-bottom: 20px;">
|
26
|
+
<div class="col-md-12">
|
27
|
+
<label>Ciudad: </label>
|
28
|
+
<input name='shippingCity' type='text' class="form-control" placeholder="Ciudad" required>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
<!-- Campos Ocultos -->
|
32
|
+
<!-- Mínima información requerida por PayULatam -->
|
33
|
+
<!-- http://developers.payulatam.com/es/web_checkout/integration.html -->
|
34
|
+
<input name='merchantId' type='hidden' value='<%= @payUConfig.get_merchant_id %>'>
|
35
|
+
<input name='accountId' type='hidden' value='<%= @payUConfig.get_account_id %>'>
|
36
|
+
<input name='description' type='hidden' value='<%= @payu_payment.description %>'>
|
37
|
+
<input name='referenceCode' type='hidden' value='<%= @payUConfig.placeholder %>-<%=@payu_payment.id%>'>
|
38
|
+
<input name='amount' type='hidden' value='<%= @payu_payment.amount %>'>
|
39
|
+
<input name='tax' type='hidden' value='0'>
|
40
|
+
<input name='taxReturnBase' type='hidden' value='0'>
|
41
|
+
<input name='currency' type='hidden' value='<%= @payu_payment.currency %>'>
|
42
|
+
<input name='signature' type='hidden' value='<%= @signature %>'>
|
43
|
+
<input name='shippingCountry' type='hidden' value='CO'>
|
44
|
+
|
45
|
+
<input name='responseUrl' type='hidden' value='<%= @payUConfig.get_root_url %>/easy_pay_u_latam/pay_u_payments/<%= @payu_payment.id %>?user_id=<%= params[:user_id]%>'>
|
46
|
+
<input name='confirmationUrl' type='hidden' value='<%= @payUConfig.get_root_url %>/easy_pay_u_latam/api/v1/pay_u_payments/<%= @payu_payment.id %>/confirmation.json?user_id=<%= params[:user_id]%>'>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<div class="panel panel-default">
|
2
|
+
<div class="panel-heading">
|
3
|
+
<h3 class="panel-title">
|
4
|
+
Datos para el pago
|
5
|
+
</h3>
|
6
|
+
</div>
|
7
|
+
<div class="panel-body">
|
8
|
+
<form method='post' action='<%= @payUConfig.get_payu_url %>'>
|
9
|
+
<div class="row">
|
10
|
+
<%# se revisa que la clinica si tenga el permiso de pagar o las inscripciones esten abiertas para pagar %>
|
11
|
+
|
12
|
+
<div class="col-md-5 col-md-offset-1">
|
13
|
+
<div class="row">
|
14
|
+
<div class="col-md-12">
|
15
|
+
<%= image_tag 'easy_pay_u_latam/payu.png', style: "width: 100%"%>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
<%= render "form" %>
|
19
|
+
</div>
|
20
|
+
<div class="col-md-5">
|
21
|
+
<div class="jumbotron">
|
22
|
+
<h1>
|
23
|
+
<small>Total (<%= @payu_payment.currency%>):</small><br>
|
24
|
+
<%= number_to_currency @payu_payment.amount, precision: @payUConfig.currency_precision, delimiter: "." %>
|
25
|
+
</h1>
|
26
|
+
<p>
|
27
|
+
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
|
28
|
+
</p>
|
29
|
+
<p class="text-center" style="margin-top: 20px;">
|
30
|
+
<button class="btn-payu" type="submit" style="background: none; border: none;">
|
31
|
+
<%= image_tag "easy_pay_u_latam/btn-payu.png", style: "width: 100%;" %>
|
32
|
+
</button>
|
33
|
+
</p>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
|
37
|
+
</div>
|
38
|
+
</form>
|
39
|
+
</div>
|
40
|
+
</div>
|
File without changes
|
@@ -0,0 +1,104 @@
|
|
1
|
+
<div class="panel panel-default">
|
2
|
+
<div class="panel-heading">
|
3
|
+
<h3 class="panel-title">
|
4
|
+
Información de tu pago
|
5
|
+
</h3>
|
6
|
+
</div>
|
7
|
+
<div class="panel-body">
|
8
|
+
<div class="row">
|
9
|
+
<div class="col-md-6 col-md-offset-3">
|
10
|
+
<table class="table table-stripped">
|
11
|
+
<tr>
|
12
|
+
<th>Estado de la transacción general:</th>
|
13
|
+
<td>
|
14
|
+
<% if @payu_payment.status == 1 %>
|
15
|
+
<span class="label label-success">
|
16
|
+
Aprobada
|
17
|
+
</span>
|
18
|
+
<% elsif @payu_payment.status == 2 %>
|
19
|
+
<span class="label label-danger">
|
20
|
+
Rechazada
|
21
|
+
</span>
|
22
|
+
<% else %>
|
23
|
+
<span class="label label-warning">
|
24
|
+
Pendiente de pago
|
25
|
+
</span>
|
26
|
+
<% end %>
|
27
|
+
</td>
|
28
|
+
</tr>
|
29
|
+
<!-- <tr>
|
30
|
+
<th>Estado de la transacción por pasarela:</th>
|
31
|
+
<td>
|
32
|
+
<%#= @payu_payment.transaction_state %>
|
33
|
+
</td>
|
34
|
+
</tr> -->
|
35
|
+
<tr>
|
36
|
+
<th>ID de transacción:</th>
|
37
|
+
<td>
|
38
|
+
<%= @payu_payment.transaction_id %>
|
39
|
+
</td>
|
40
|
+
</tr>
|
41
|
+
<% if !@payu_payment.start_date.nil? && !@payu_payment.end_date.nil? %>
|
42
|
+
<tr>
|
43
|
+
<th>Periodo pagado:</th>
|
44
|
+
<td>
|
45
|
+
<%= @payu_payment.start_date %>
|
46
|
+
a
|
47
|
+
<%= @payu_payment.end_date %>
|
48
|
+
</td>
|
49
|
+
</tr>
|
50
|
+
<% end %>
|
51
|
+
<tr>
|
52
|
+
<th>Referencia de pago:</th>
|
53
|
+
<td>
|
54
|
+
<%= @payu_payment.reference_code %>
|
55
|
+
</td>
|
56
|
+
</tr>
|
57
|
+
<tr>
|
58
|
+
<th>Descripción:</th>
|
59
|
+
<td>
|
60
|
+
<%= @payu_payment.description %>
|
61
|
+
</td>
|
62
|
+
</tr>
|
63
|
+
<tr>
|
64
|
+
<th>Total pagado:</th>
|
65
|
+
<td>
|
66
|
+
<%= number_to_currency @payu_payment.amount, precision: 0, delimiter: "." %> <%= @payu_payment.currency %>
|
67
|
+
</td>
|
68
|
+
</tr>
|
69
|
+
<tr>
|
70
|
+
<th>Nombre de quien pagó:</th>
|
71
|
+
<td>
|
72
|
+
<%= @payu_payment.payer_name %>
|
73
|
+
</td>
|
74
|
+
</tr>
|
75
|
+
<tr>
|
76
|
+
<th>Email de quien pagó:</th>
|
77
|
+
<td>
|
78
|
+
<%= @payu_payment.buyer_email %>
|
79
|
+
</td>
|
80
|
+
</tr>
|
81
|
+
<tr>
|
82
|
+
<th>Teléfono de quien pagó:</th>
|
83
|
+
<td>
|
84
|
+
<%= @payu_payment.buyer_phone %>
|
85
|
+
</td>
|
86
|
+
</tr>
|
87
|
+
<tr>
|
88
|
+
<th>Dirección de envío:</th>
|
89
|
+
<td>
|
90
|
+
<%= @payu_payment.shipping_address %> - <%= @payu_payment.shipping_city %> - <%= @payu_payment.shipping_country %>
|
91
|
+
</td>
|
92
|
+
</tr>
|
93
|
+
<tr>
|
94
|
+
<th>CUS de autenticación (SOLO PSE):</th>
|
95
|
+
<td>
|
96
|
+
<%= @payu_payment.cus %>
|
97
|
+
</td>
|
98
|
+
</tr>
|
99
|
+
</table>
|
100
|
+
</div>
|
101
|
+
</div>
|
102
|
+
|
103
|
+
</div>
|
104
|
+
</div>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Easy pay u latam</title>
|
5
|
+
<%= stylesheet_link_tag "easy_pay_u_latam/application", media: "all" %>
|
6
|
+
<%= javascript_include_tag "easy_pay_u_latam/application" %>
|
7
|
+
<%= csrf_meta_tags %>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
|
11
|
+
<%= yield %>
|
12
|
+
|
13
|
+
</body>
|
14
|
+
</html>
|
@@ -0,0 +1,74 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
6
|
+
<title>Pago recibido </title>
|
7
|
+
<style type="text/css">
|
8
|
+
#outlook a {padding:0;}
|
9
|
+
body{width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; margin:0; padding:0;}
|
10
|
+
.ExternalClass {width:100%;}
|
11
|
+
.ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;}
|
12
|
+
#backgroundTable {margin:0; padding:0; width:100% !important; line-height: 100% !important;}
|
13
|
+
table { border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }
|
14
|
+
table td {border-collapse: collapse;}
|
15
|
+
|
16
|
+
@media only screen and (max-width: 640px) {
|
17
|
+
body[yahoo] .deviceWidth {width:440px!important; }
|
18
|
+
|
19
|
+
body[yahoo] .full {
|
20
|
+
display:block;
|
21
|
+
width:100%;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
</style>
|
25
|
+
</head>
|
26
|
+
<%# @info = Information.first %>
|
27
|
+
<body yahoo="fix">
|
28
|
+
<table cellpadding="0" cellspacing="0" border="0" id="backgroundTable" width="100%">
|
29
|
+
<tr>
|
30
|
+
<td align="center">
|
31
|
+
|
32
|
+
<p align="center" style="margin-bottom: 20px;">
|
33
|
+
<!-- <img src="https://s3.amazonaws.com/agroneto/mailer/AGRONETO-logo.png" alt="AgroNeto" style="width: 200px;"> -->
|
34
|
+
</p>
|
35
|
+
|
36
|
+
<%= yield %>
|
37
|
+
|
38
|
+
<table cellpadding="0" cellspacing="0" border="0" align="center" width="600">
|
39
|
+
<tr>
|
40
|
+
<td align="center" style="padding: 30px 0;">
|
41
|
+
<!-- <p style="font-family: Arial, sans-serif; font-size: 14px; color: #0F6A37; margin-bottom: 25px;">
|
42
|
+
<a href="http://agroneto.com" style="text-decoration: none; color: #0F6A37;">
|
43
|
+
AgroNeto
|
44
|
+
</a>
|
45
|
+
|
|
46
|
+
<a href="http://agroneto.com/terms" style="text-decoration: none; color: #0F6A37;">
|
47
|
+
Términos y condiciones
|
48
|
+
</a>
|
49
|
+
</p>
|
50
|
+
<p style="line-height: 32px;">
|
51
|
+
<a href="<%#= @info.facebook_link %>">
|
52
|
+
<span style="background-color: #0F6A37; padding: 9px 10px 3px 11px; margin-right: 5px;">
|
53
|
+
<img src="https://s3.amazonaws.com/agroneto/mailer/facebook-icon.png" height="16" alt="" border="0" />
|
54
|
+
</span>
|
55
|
+
</a>
|
56
|
+
<a href="<#%= @info.twitter_link %>">
|
57
|
+
<span style="background-color: #0F6A37; padding: 9px 10px 3px 11px; margin-right: 5px;">
|
58
|
+
<img src="https://s3.amazonaws.com/agroneto/mailer/twitter-icon.png" height="16" alt="" border="0" />
|
59
|
+
</span>
|
60
|
+
</a>
|
61
|
+
</p> -->
|
62
|
+
<p style="font-family: Arial, sans-serif; font-size: 13px; color: #7b7b7b; margin-bottom: 3px;">
|
63
|
+
<%#= @info.copyrights_text %>
|
64
|
+
</p>
|
65
|
+
<!-- <p style="font-family: Arial, sans-serif; font-size: 12px; color: #7b7b7b; margin-top: 0;">If you don't want to receive the newsletter, you can simply <a href="http://yourlink" style="text-decoration: none; color: #69B417;">unsubscribe</a></p> -->
|
66
|
+
</td>
|
67
|
+
</tr>
|
68
|
+
</table>
|
69
|
+
|
70
|
+
</td>
|
71
|
+
</tr>
|
72
|
+
</table>
|
73
|
+
</body>
|
74
|
+
</html>
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# Additional translations at https://github.com/plataformatec/devise/wiki/I18n
|
2
|
+
|
3
|
+
en:
|
4
|
+
devise:
|
5
|
+
confirmations:
|
6
|
+
confirmed: "Your email address has been successfully confirmed."
|
7
|
+
send_instructions: "You will receive an email with instructions for how to confirm your email address in a few minutes."
|
8
|
+
send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes."
|
9
|
+
failure:
|
10
|
+
already_authenticated: "You are already signed in."
|
11
|
+
inactive: "Your account is not activated yet."
|
12
|
+
invalid: "Invalid %{authentication_keys} or password."
|
13
|
+
locked: "Your account is locked."
|
14
|
+
last_attempt: "You have one more attempt before your account is locked."
|
15
|
+
not_found_in_database: "Invalid %{authentication_keys} or password."
|
16
|
+
timeout: "Your session expired. Please sign in again to continue."
|
17
|
+
unauthenticated: "You need to sign in or sign up before continuing."
|
18
|
+
unconfirmed: "You have to confirm your email address before continuing."
|
19
|
+
mailer:
|
20
|
+
confirmation_instructions:
|
21
|
+
subject: "Confirmation instructions"
|
22
|
+
reset_password_instructions:
|
23
|
+
subject: "Reset password instructions"
|
24
|
+
unlock_instructions:
|
25
|
+
subject: "Unlock instructions"
|
26
|
+
email_changed:
|
27
|
+
subject: "Email Changed"
|
28
|
+
password_change:
|
29
|
+
subject: "Password Changed"
|
30
|
+
omniauth_callbacks:
|
31
|
+
failure: "Could not authenticate you from %{kind} because \"%{reason}\"."
|
32
|
+
success: "Successfully authenticated from %{kind} account."
|
33
|
+
passwords:
|
34
|
+
no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided."
|
35
|
+
send_instructions: "You will receive an email with instructions on how to reset your password in a few minutes."
|
36
|
+
send_paranoid_instructions: "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes."
|
37
|
+
updated: "Your password has been changed successfully. You are now signed in."
|
38
|
+
updated_not_active: "Your password has been changed successfully."
|
39
|
+
registrations:
|
40
|
+
destroyed: "Bye! Your account has been successfully cancelled. We hope to see you again soon."
|
41
|
+
signed_up: "Welcome! You have signed up successfully."
|
42
|
+
signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated."
|
43
|
+
signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked."
|
44
|
+
signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please follow the link to activate your account."
|
45
|
+
update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address."
|
46
|
+
updated: "Your account has been updated successfully."
|
47
|
+
sessions:
|
48
|
+
signed_in: "Signed in successfully."
|
49
|
+
signed_out: "Signed out successfully."
|
50
|
+
already_signed_out: "Signed out successfully."
|
51
|
+
unlocks:
|
52
|
+
send_instructions: "You will receive an email with instructions for how to unlock your account in a few minutes."
|
53
|
+
send_paranoid_instructions: "If your account exists, you will receive an email with instructions for how to unlock it in a few minutes."
|
54
|
+
unlocked: "Your account has been unlocked successfully. Please sign in to continue."
|
55
|
+
errors:
|
56
|
+
messages:
|
57
|
+
already_confirmed: "was already confirmed, please try signing in"
|
58
|
+
confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one"
|
59
|
+
expired: "has expired, please request a new one"
|
60
|
+
not_found: "not found"
|
61
|
+
not_locked: "was not locked"
|
62
|
+
not_saved:
|
63
|
+
one: "1 error prohibited this %{resource} from being saved:"
|
64
|
+
other: "%{count} errors prohibited this %{resource} from being saved:"
|
data/config/routes.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
EasyPayULatam::Engine.routes.draw do
|
2
|
+
# devise_for :users, class_name: "EasyPayULatam::User"
|
3
|
+
namespace :api do
|
4
|
+
namespace :v1 do
|
5
|
+
resources :pay_u_payments, only: [:index, :show] do
|
6
|
+
member do
|
7
|
+
post "confirmation"
|
8
|
+
get "payed"
|
9
|
+
get "get_status"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
resources :pay_u_payments, only: [:index, :show, :edit, :update]
|
16
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
class CreateEasyPayULatamPayuPayments < ActiveRecord::Migration[5.0]
|
2
|
+
def change
|
3
|
+
create_table :easy_pay_u_latam_payu_payments do |t|
|
4
|
+
t.integer :status
|
5
|
+
t.date :start_date
|
6
|
+
t.date :end_date
|
7
|
+
t.string :period
|
8
|
+
t.string :reference_code
|
9
|
+
t.string :description
|
10
|
+
t.float :amount
|
11
|
+
t.float :tax
|
12
|
+
t.float :tax_return_base
|
13
|
+
t.string :currency
|
14
|
+
t.string :buyer_full_name
|
15
|
+
t.string :buyer_email
|
16
|
+
t.string :shipping_address
|
17
|
+
t.string :shipping_city
|
18
|
+
t.string :shipping_country
|
19
|
+
t.string :buyer_phone
|
20
|
+
t.integer :transaction_state
|
21
|
+
t.float :risk
|
22
|
+
t.string :reference_pol
|
23
|
+
t.integer :installments_units
|
24
|
+
t.datetime :processing_date
|
25
|
+
t.string :cus
|
26
|
+
t.string :pse_bank
|
27
|
+
t.string :response_code
|
28
|
+
t.string :payment_method
|
29
|
+
t.string :payment_method_type
|
30
|
+
t.string :payment_method_name
|
31
|
+
t.string :payment_request_state
|
32
|
+
t.string :franchise
|
33
|
+
t.string :lap_transaction_state
|
34
|
+
t.string :message
|
35
|
+
t.string :authorization_code
|
36
|
+
t.string :transaction_id
|
37
|
+
t.string :trazability_code
|
38
|
+
t.string :state_pol
|
39
|
+
t.string :number_card
|
40
|
+
t.string :payer_name
|
41
|
+
t.string :billing_country
|
42
|
+
t.string :response_message_pol
|
43
|
+
t.string :sign
|
44
|
+
t.string :billing_address
|
45
|
+
t.string :billing_city
|
46
|
+
t.string :buyer_nickname
|
47
|
+
t.string :bank_id
|
48
|
+
t.string :customer_number
|
49
|
+
t.float :administrative_fee_base
|
50
|
+
t.integer :attempts
|
51
|
+
t.string :merchant_id
|
52
|
+
t.string :exchange_rate
|
53
|
+
t.string :ip
|
54
|
+
|
55
|
+
t.timestamps
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "easy_pay_u_latam/engine"
|
2
|
+
require "easy_pay_u_latam/configuration"
|
3
|
+
|
4
|
+
module EasyPayULatam
|
5
|
+
class << self
|
6
|
+
attr_accessor :configuration
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.configuration
|
10
|
+
@configuration ||= Configuration.new
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.reset
|
14
|
+
@configuration = Configuration.new
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.configure
|
18
|
+
yield(configuration)
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module EasyPayULatam
|
2
|
+
class Configuration
|
3
|
+
attr_accessor :api_key, :merchant_id, :account_id, :placeholder, :root_url, :test_root_url, :payu_url, :test_api_key, :test_merchan_id, :test_account_id, :test_payu_url, :currency_precision
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
# Path for PayU responses
|
7
|
+
@currency_precision = 0
|
8
|
+
@root_url = nil
|
9
|
+
@test_root_url = nil
|
10
|
+
|
11
|
+
@placeholder = nil
|
12
|
+
|
13
|
+
# For production
|
14
|
+
@api_key = nil
|
15
|
+
@merchant_id = nil
|
16
|
+
@account_id = nil
|
17
|
+
@payu_url = "https://gateway.payulatam.com/ppp-web-gateway/"
|
18
|
+
|
19
|
+
# For testing
|
20
|
+
@test_api_key = "4Vj8eK4rloUd272L48hsrarnUA"
|
21
|
+
@test_merchant_id = "508029"
|
22
|
+
@test_account_id = "512321"
|
23
|
+
@test_payu_url = "https://sandbox.gateway.payulatam.com/ppp-web-gateway/"
|
24
|
+
end
|
25
|
+
|
26
|
+
def get_api_key
|
27
|
+
if Rails.env == "development" || Rails.env == "test"
|
28
|
+
@test_api_key
|
29
|
+
else
|
30
|
+
@api_key
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def get_merchant_id
|
35
|
+
if Rails.env == "development" || Rails.env == "test"
|
36
|
+
@test_merchant_id
|
37
|
+
else
|
38
|
+
@merchant_id
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def get_account_id
|
43
|
+
if Rails.env == "development" || Rails.env == "test"
|
44
|
+
@test_account_id
|
45
|
+
else
|
46
|
+
@account_id
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def get_payu_url
|
51
|
+
if Rails.env == "development" || Rails.env == "test"
|
52
|
+
@test_payu_url
|
53
|
+
else
|
54
|
+
@payu_url
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def get_root_url
|
59
|
+
if Rails.env == "development" || Rails.env == "test"
|
60
|
+
@test_root_url
|
61
|
+
else
|
62
|
+
@root_url
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
metadata
ADDED
@@ -0,0 +1,172 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: easy_pay_u_latam
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- DEVPENGUIN
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-10-07 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '5.0'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 5.0.0
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '5.0'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 5.0.0
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: rabl
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: jquery-rails
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: bootstrap-sass
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: sass-rails
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
type: :runtime
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: pg
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
description: PayU Latam easy integration.
|
104
|
+
email:
|
105
|
+
- simoncorreaocampo@gmail.com
|
106
|
+
executables: []
|
107
|
+
extensions: []
|
108
|
+
extra_rdoc_files: []
|
109
|
+
files:
|
110
|
+
- MIT-LICENSE
|
111
|
+
- README.md
|
112
|
+
- Rakefile
|
113
|
+
- app/assets/config/easy_pay_u_latam_manifest.js
|
114
|
+
- app/assets/images/easy_pay_u_latam/btn-payu.png
|
115
|
+
- app/assets/images/easy_pay_u_latam/payu.png
|
116
|
+
- app/assets/javascripts/easy_pay_u_latam/application.js
|
117
|
+
- app/assets/stylesheets/easy_pay_u_latam/application.scss
|
118
|
+
- app/assets/stylesheets/easy_pay_u_latam/styles.css
|
119
|
+
- app/controllers/easy_pay_u_latam/api/v1/pay_u_payments_controller.rb
|
120
|
+
- app/controllers/easy_pay_u_latam/api_controller.rb
|
121
|
+
- app/controllers/easy_pay_u_latam/application_controller.rb
|
122
|
+
- app/controllers/easy_pay_u_latam/pay_u_payments_controller.rb
|
123
|
+
- app/helpers/easy_pay_u_latam/application_helper.rb
|
124
|
+
- app/jobs/easy_pay_u_latam/application_job.rb
|
125
|
+
- app/mailers/easy_pay_u_latam/application_mailer.rb
|
126
|
+
- app/mailers/easy_pay_u_latam/pay_u_payment_mailer.rb
|
127
|
+
- app/models/easy_pay_u_latam/application_record.rb
|
128
|
+
- app/models/easy_pay_u_latam/payu_payment.rb
|
129
|
+
- app/views/easy_pay_u_latam/api/v1/pay_u_payments/index.rabl
|
130
|
+
- app/views/easy_pay_u_latam/pay_u_payment_mailer/error.html.erb
|
131
|
+
- app/views/easy_pay_u_latam/pay_u_payment_mailer/success.html.erb
|
132
|
+
- app/views/easy_pay_u_latam/pay_u_payments/_form.html.erb
|
133
|
+
- app/views/easy_pay_u_latam/pay_u_payments/edit.html.erb
|
134
|
+
- app/views/easy_pay_u_latam/pay_u_payments/index.html.erb
|
135
|
+
- app/views/easy_pay_u_latam/pay_u_payments/show.html.erb
|
136
|
+
- app/views/layouts/easy_pay_u_latam/application.html.erb
|
137
|
+
- app/views/layouts/easy_pay_u_latam/mailer.html.erb
|
138
|
+
- config/initializers/rabl.rb
|
139
|
+
- config/locales/devise.en.yml
|
140
|
+
- config/routes.rb
|
141
|
+
- db/migrate/20170929211207_create_easy_pay_u_latam_payu_payments.rb
|
142
|
+
- lib/easy_pay_u_latam.rb
|
143
|
+
- lib/easy_pay_u_latam/Configuration.rb
|
144
|
+
- lib/easy_pay_u_latam/engine.rb
|
145
|
+
- lib/easy_pay_u_latam/version.rb
|
146
|
+
- lib/tasks/easy_pay_u_latam_tasks.rake
|
147
|
+
homepage: https://github.com/simoncorreaocampo/EasyPayULatam
|
148
|
+
licenses:
|
149
|
+
- MIT
|
150
|
+
metadata: {}
|
151
|
+
post_install_message:
|
152
|
+
rdoc_options: []
|
153
|
+
require_paths:
|
154
|
+
- lib
|
155
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
|
+
requirements:
|
162
|
+
- - ">="
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: '0'
|
165
|
+
requirements: []
|
166
|
+
rubyforge_project:
|
167
|
+
rubygems_version: 2.5.1
|
168
|
+
signing_key:
|
169
|
+
specification_version: 4
|
170
|
+
summary: With this gem you can use PayU Latam Web Checkout with some simple configuration
|
171
|
+
step.
|
172
|
+
test_files: []
|