e4commerce 0.6.1 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +17 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +23 -1
- data/README.md +5 -0
- data/Rakefile +2 -2
- data/e4commerce/app/models/product.rb +6 -0
- data/lib/e4commerce.rb +3 -1
- data/lib/e4commerce/e4commerce_pagseguro.rb +61 -0
- data/lib/e4commerce/payment.rb +1 -1
- data/lib/e4commerce/product.rb +8 -0
- data/lib/e4commerce/version.rb +1 -1
- data/lib/pagseguro/consults_controller.rb +51 -0
- data/lib/tasks/cart.rake +31 -0
- data/lib/tasks/order.rake +35 -0
- data/lib/tasks/product.rake +11 -7
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d481d0d482c49be0ae8cb4317d1d330d9327751
|
4
|
+
data.tar.gz: 2aece2d4aaa951367884c83f6b65b152ac28fd17
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ea3acd7e101b2b47d37e8a526926cfe8358b93dcc19ba72dbeb4ef51d9021a9b2e245f337b2c95070df1c5a480c15543e8366e2ae72f909b4cb65ccddd338a0
|
7
|
+
data.tar.gz: 036e48b291f8837050227cc61d8572353c68f0782e53dfa3a7d57cbe7fada5367eeefc2732d80c23c7619815084a9ca675b89d1581c5816c7b3350ee6531d5b4
|
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
e4commerce (0.
|
4
|
+
e4commerce (0.7.0)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -27,6 +27,8 @@ GEM
|
|
27
27
|
her (~> 0.8.1)
|
28
28
|
concurrent-ruby (1.0.5)
|
29
29
|
dalli (2.7.6)
|
30
|
+
diff-lcs (1.3)
|
31
|
+
docile (1.1.5)
|
30
32
|
faraday (0.12.1)
|
31
33
|
multipart-post (>= 1.2, < 3)
|
32
34
|
faraday-http-cache (1.3.1)
|
@@ -52,6 +54,24 @@ GEM
|
|
52
54
|
json (~> 1.8)
|
53
55
|
nokogiri (~> 1.6)
|
54
56
|
rake (10.5.0)
|
57
|
+
rspec (3.6.0)
|
58
|
+
rspec-core (~> 3.6.0)
|
59
|
+
rspec-expectations (~> 3.6.0)
|
60
|
+
rspec-mocks (~> 3.6.0)
|
61
|
+
rspec-core (3.6.0)
|
62
|
+
rspec-support (~> 3.6.0)
|
63
|
+
rspec-expectations (3.6.0)
|
64
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
65
|
+
rspec-support (~> 3.6.0)
|
66
|
+
rspec-mocks (3.6.0)
|
67
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
68
|
+
rspec-support (~> 3.6.0)
|
69
|
+
rspec-support (3.6.0)
|
70
|
+
simplecov (0.14.1)
|
71
|
+
docile (~> 1.1.0)
|
72
|
+
json (>= 1.8, < 3)
|
73
|
+
simplecov-html (~> 0.10.0)
|
74
|
+
simplecov-html (0.10.1)
|
55
75
|
thread_safe (0.3.6)
|
56
76
|
tzinfo (1.2.3)
|
57
77
|
thread_safe (~> 0.1)
|
@@ -68,6 +88,8 @@ DEPENDENCIES
|
|
68
88
|
e4commerce!
|
69
89
|
pagseguro-oficial
|
70
90
|
rake (~> 10.0)
|
91
|
+
rspec (~> 3.6)
|
92
|
+
simplecov
|
71
93
|
|
72
94
|
BUNDLED WITH
|
73
95
|
1.15.1
|
data/README.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
|
2
|
+
<p align="left">
|
3
|
+
<img src="https://travis-ci.org/miguelpimentel/e4commerce.svg?branch=devel"></a>
|
4
|
+
</p>
|
5
|
+
|
1
6
|
# E4commerce
|
2
7
|
|
3
8
|
O e4commerce tem como objetivo fornecer uma ferramenta que facilite no desenvolvimento de um commerce. Voltada ao público brasileiro procurar fornecer formas de pagamento de acordo com as normas nacionais.
|
data/Rakefile
CHANGED
data/lib/e4commerce.rb
CHANGED
@@ -0,0 +1,61 @@
|
|
1
|
+
module E4commerce
|
2
|
+
|
3
|
+
require "pagseguro"
|
4
|
+
|
5
|
+
class PagSeguroPayment
|
6
|
+
|
7
|
+
# Email and token for different profiles to authenticate paymeny
|
8
|
+
# e4c_payment, class must inheritate from E4commerce::E4CPayment
|
9
|
+
def self.create_payment(e4c_payment, email, token)
|
10
|
+
|
11
|
+
payment = PagSeguro::PaymentRequest.new
|
12
|
+
|
13
|
+
payment = PagSeguro::PaymentRequest.new(email: email, token: token)
|
14
|
+
|
15
|
+
payment.reference = order.id
|
16
|
+
payment.notification_url = notifications_url
|
17
|
+
payment.redirect_url = processing_url
|
18
|
+
|
19
|
+
e4c_payment.product_list.each do |product|
|
20
|
+
payment.items << {
|
21
|
+
description: product.title,
|
22
|
+
id: product.serial_number,
|
23
|
+
amount: product.unit_price
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
calculate_total(self.product_list)
|
28
|
+
|
29
|
+
response = payment.register
|
30
|
+
|
31
|
+
if response.errors.any?
|
32
|
+
raise response.errors.join("\n")
|
33
|
+
else
|
34
|
+
redirect_to response.url
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def calculate_total(products)
|
39
|
+
total = 0
|
40
|
+
self.product_list.each do |product|
|
41
|
+
total += product.unit_price
|
42
|
+
end
|
43
|
+
|
44
|
+
total
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.create_notification(notification_code_param)
|
48
|
+
transaction = PagSeguro::Transaction.find_by_notification_code(params[:notification_code_param])
|
49
|
+
|
50
|
+
if transaction.errors.empty?
|
51
|
+
# Processa a notificação. A melhor maneira de se fazer isso é realizar
|
52
|
+
# o processamento em background. Uma boa alternativa para isso é a
|
53
|
+
# biblioteca Sidekiq.
|
54
|
+
end
|
55
|
+
|
56
|
+
render nothing: true, status: 200
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
data/lib/e4commerce/payment.rb
CHANGED
data/lib/e4commerce/product.rb
CHANGED
data/lib/e4commerce/version.rb
CHANGED
@@ -0,0 +1,51 @@
|
|
1
|
+
class CheckoutController < E4CPayment
|
2
|
+
|
3
|
+
def abandoned_transactions
|
4
|
+
report = PagSeguro::Transaction.find_abandoned
|
5
|
+
|
6
|
+
while report.next_page?
|
7
|
+
report.next_page!
|
8
|
+
puts "=> Page #{report.page}"
|
9
|
+
|
10
|
+
abort "=> Errors: #{report.errors.join("\n")}" unless report.valid?
|
11
|
+
|
12
|
+
puts "=> Report was created at: #{report.created_at}"
|
13
|
+
puts
|
14
|
+
|
15
|
+
report.transactions.each do |transaction|
|
16
|
+
puts "=> Abandoned transaction"
|
17
|
+
puts " created at: #{transaction.created_at}"
|
18
|
+
puts " code: #{transaction.code}"
|
19
|
+
puts " type_id: #{transaction.type_id}"
|
20
|
+
puts " gross amount: #{transaction.gross_amount}"
|
21
|
+
puts
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def transaction_history
|
27
|
+
|
28
|
+
report = PagSeguro::Transaction.find_by_date
|
29
|
+
|
30
|
+
while report.next_page?
|
31
|
+
report.next_page!
|
32
|
+
puts "== Page #{report.page}"
|
33
|
+
abort "=> Errors: #{report.errors.join("\n")}" unless report.valid?
|
34
|
+
puts "Report created on #{report.created_at}"
|
35
|
+
puts
|
36
|
+
|
37
|
+
report.transactions.each do |transaction|
|
38
|
+
puts "=> Transaction"
|
39
|
+
puts " created_at: #{transaction.created_at}"
|
40
|
+
puts " code: #{transaction.code}"
|
41
|
+
puts " cancellation_source: #{transaction.cancellation_source}"
|
42
|
+
puts " payment method: #{transaction.payment_method.type}"
|
43
|
+
puts " gross amount: #{transaction.gross_amount}"
|
44
|
+
puts " updated at: #{transaction.updated_at}"
|
45
|
+
puts
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
end
|
data/lib/tasks/cart.rake
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
|
2
|
+
BREAK_LINE = "\n"
|
3
|
+
|
4
|
+
|
5
|
+
namespace :cart do
|
6
|
+
task :generate_model do
|
7
|
+
touch 'lib/e4commerce/cart.rb'
|
8
|
+
|
9
|
+
file_path = 'lib/e4commerce/cart.rb'
|
10
|
+
|
11
|
+
content = "class Cart < ActiveRecord::Base" + BREAK_LINE
|
12
|
+
|
13
|
+
content += " has_many :products" + BREAK_LINE + "end" + BREAK_LINE
|
14
|
+
|
15
|
+
write_content(file_path, content)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
task :CartInitialize do
|
20
|
+
|
21
|
+
ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: 'database.db'
|
22
|
+
|
23
|
+
ActiveRecord::Schema.define do
|
24
|
+
unless ActiveRecord::Base.connection.tables.include? 'tags'
|
25
|
+
create_table :cart do |table|
|
26
|
+
table.column :total_price, :float
|
27
|
+
table.column :number_items, :integer
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
|
2
|
+
BREAK_LINE = "\n"
|
3
|
+
|
4
|
+
def self.generate
|
5
|
+
|
6
|
+
end
|
7
|
+
|
8
|
+
namespace :order do
|
9
|
+
task :generate_model do
|
10
|
+
touch 'lib/e4commerce/Order.rb'
|
11
|
+
|
12
|
+
file_path = 'lib/e4commerce/Order.rb'
|
13
|
+
|
14
|
+
|
15
|
+
content = "class Order < ActiveRecord::Base" + BREAK_LINE
|
16
|
+
|
17
|
+
content += " has_many :products" + BREAK_LINE + "end" + BREAK_LINE
|
18
|
+
|
19
|
+
write_content(file_path, content)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
task :OrderInitialize do
|
24
|
+
|
25
|
+
ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: 'database.db'
|
26
|
+
|
27
|
+
ActiveRecord::Schema.define do
|
28
|
+
unless ActiveRecord::Base.connection.tables.include? 'tags'
|
29
|
+
create_table :order do |table|
|
30
|
+
table.column :total_price, :float
|
31
|
+
table.column :number_items, :integer
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/tasks/product.rake
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Product
|
2
2
|
|
3
|
-
|
3
|
+
#require "active_record"
|
4
4
|
|
5
5
|
def self.generate
|
6
6
|
|
@@ -17,21 +17,20 @@ namespace :product do
|
|
17
17
|
content = ""
|
18
18
|
tab = " "
|
19
19
|
|
20
|
-
|
21
20
|
desc "Generate a model that heritances from product"
|
22
|
-
#usage example: rake product:generate_model[
|
21
|
+
#usage example: rake product:generate_model[Shoes,E4CProduct,color,size,imported_from]
|
23
22
|
task :generate_model do |task, args|
|
24
23
|
|
25
24
|
file = "lib/e4commerce/#{args.extras[0]}.rb"
|
26
25
|
|
27
26
|
#Check if first letter of first argument is uppercased
|
28
27
|
if args.extras[0][0].upcase! || args.extras[1][0].upcase! then
|
29
|
-
abort("First letter of a class must be in uppercase\nUsage: rake product:generate_model[<Model>,<Heritance>,<arg2>,<
|
28
|
+
abort("First letter of a class must be in uppercase\nUsage: rake product:generate_model[<Model>,<Heritance>,<arg2:type>,<arg3:type ...>]")
|
30
29
|
end
|
31
30
|
|
32
31
|
content = "class #{args.extras[0]} < #{args.extras[1]}" + new_line
|
33
32
|
|
34
|
-
#Include validations to each element but first
|
33
|
+
#Include validations to each element but first and second argument
|
35
34
|
args.extras.drop(2).each do |params|
|
36
35
|
content += tab + "validates :#{params}, presence: true" + new_line
|
37
36
|
end
|
@@ -42,10 +41,12 @@ namespace :product do
|
|
42
41
|
|
43
42
|
write_content(file,content)
|
44
43
|
|
44
|
+
puts "CREATED " + file + new_line
|
45
|
+
|
45
46
|
end
|
46
47
|
|
47
48
|
def write_content(file,content)
|
48
|
-
#Writes the file
|
49
|
+
#Writes the file for model
|
49
50
|
File.open(file, "w+") { |file| file.write(content) }
|
50
51
|
end
|
51
52
|
desc "All taks related to products"
|
@@ -68,8 +69,11 @@ task :E4Cinitialize do
|
|
68
69
|
table.column :serial_number, :string
|
69
70
|
table.column :unit_price, :float
|
70
71
|
table.column :unit_price, :float
|
72
|
+
args.extras.drop(2).each do |params|
|
73
|
+
str_tmp = "#{params}".split(":")
|
74
|
+
table.column (":" + str_tmp[0]).to_sym , (":" + str_tmp[1]).to_sym
|
75
|
+
end
|
71
76
|
end
|
72
77
|
end
|
73
78
|
end
|
74
|
-
|
75
79
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: e4commerce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Pimentel
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-06-
|
11
|
+
date: 2017-06-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -88,6 +88,7 @@ extensions: []
|
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
90
|
- ".gitignore"
|
91
|
+
- ".travis.yml"
|
91
92
|
- Gemfile
|
92
93
|
- Gemfile.lock
|
93
94
|
- LICENSE.md
|
@@ -98,11 +99,13 @@ files:
|
|
98
99
|
- bin/setup
|
99
100
|
- database.db
|
100
101
|
- e4commerce.gemspec
|
102
|
+
- e4commerce/app/models/product.rb
|
101
103
|
- lib/e4commerce.rb
|
102
104
|
- lib/e4commerce/banco_brasil_billet.rb
|
103
105
|
- lib/e4commerce/bank_billet.rb
|
104
106
|
- lib/e4commerce/bradesco_billet.rb
|
105
107
|
- lib/e4commerce/client.rb
|
108
|
+
- lib/e4commerce/e4commerce_pagseguro.rb
|
106
109
|
- lib/e4commerce/itau_billet.rb
|
107
110
|
- lib/e4commerce/notifications_controller.rb
|
108
111
|
- lib/e4commerce/payment.rb
|
@@ -110,7 +113,10 @@ files:
|
|
110
113
|
- lib/e4commerce/ps_checkout_template.rb
|
111
114
|
- lib/e4commerce/santander_billet.rb
|
112
115
|
- lib/e4commerce/version.rb
|
116
|
+
- lib/pagseguro/consults_controller.rb
|
113
117
|
- lib/tasks/boleto.rake
|
118
|
+
- lib/tasks/cart.rake
|
119
|
+
- lib/tasks/order.rake
|
114
120
|
- lib/tasks/pagseguro.rake
|
115
121
|
- lib/tasks/product.rake
|
116
122
|
homepage: https://github.com/miguelpimentel/e4commerce
|