pagarme 0.14 → 0.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/pagarme/transaction.rb +22 -8
  2. data/pagarme.gemspec +1 -1
  3. metadata +10 -10
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
  require 'openssl'
2
3
  require 'base64'
3
4
  require File.join(File.dirname(__FILE__), '..', 'pagarme')
@@ -6,7 +7,7 @@ require File.join(File.dirname(__FILE__), '.', 'errors')
6
7
 
7
8
  module PagarMe
8
9
  class Transaction
9
- attr_accessor :amount, :card_number, :card_holder_name, :card_expiracy_month, :card_expiracy_year, :card_cvv, :live, :card_hash, :installments
10
+ attr_accessor :amount, :card_number, :card_holder_name, :card_expiracy_month, :card_expiracy_year, :card_cvv, :live, :card_hash, :installments, :card_last_digits
10
11
 
11
12
  # initializers
12
13
 
@@ -115,22 +116,35 @@ module PagarMe
115
116
  self.live = response['live']
116
117
  self.card_holder_name = response['costumer_name']
117
118
  self.installments = (!response['installments'] ? 1 : response['installments'].to_i)
119
+ self.card_last_digits = response['card_last_digits']
118
120
  @id = response['id']
119
121
  end
120
122
 
123
+ def is_valid_credit_card(card)
124
+ s1 = s2 = 0
125
+ card.to_s.reverse.chars.each_slice(2) do |odd, even|
126
+ s1 += odd.to_i
127
+
128
+ double = even.to_i * 2
129
+ double -= 9 if double >= 10
130
+ s2 += double
131
+ end
132
+ (s1 + s2) % 10 == 0
133
+ end
134
+
121
135
  def error_in_transaction
122
- if self.card_number.length < 16 || self.card_number.length > 20
123
- "Invalid card number."
136
+ if self.card_number.length < 16 || self.card_number.length > 20 || !is_valid_credit_card(self.card_number)
137
+ "Número do cartão inválido."
124
138
  elsif self.card_holder_name.length == 0
125
- "Invalid card holder name."
139
+ "Nome do portador inválido."
126
140
  elsif self.card_expiracy_month.to_i <= 0 || self.card_expiracy_month.to_i > 12
127
- "Invalid expiracy date month."
141
+ "Mês de expiração inválido."
128
142
  elsif self.card_expiracy_year.to_i <= 0
129
- "Invalid expiracy date year."
143
+ "Ano de expiração inválido."
130
144
  elsif self.card_cvv.length < 3 || self.card_cvv.length > 4
131
- "Invalid card security code."
145
+ "Código de segurança inválido."
132
146
  elsif self.amount.to_i <= 0
133
- "Invalid amount."
147
+ "Valor inválido."
134
148
  else
135
149
  nil
136
150
  end
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "pagarme"
7
- spec.version = 0.14
7
+ spec.version = 0.15
8
8
  spec.authors = ["Pedro Franceschi"]
9
9
  spec.email = ["pedrohfranceschi@gmail.com"]
10
10
  spec.description = %q{Gem do pagar.me para Ruby}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pagarme
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.14'
4
+ version: '0.15'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-30 00:00:00.000000000 Z
12
+ date: 2013-05-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
- requirement: &70156697296740 !ruby/object:Gem::Requirement
16
+ requirement: &70280442112520 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '1.3'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70156697296740
24
+ version_requirements: *70280442112520
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70156697295460 !ruby/object:Gem::Requirement
27
+ requirement: &70280442111140 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70156697295460
35
+ version_requirements: *70280442111140
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rest-client
38
- requirement: &70156697293800 !ruby/object:Gem::Requirement
38
+ requirement: &70280442109500 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70156697293800
46
+ version_requirements: *70280442109500
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: multi_json
49
- requirement: &70156697292780 !ruby/object:Gem::Requirement
49
+ requirement: &70280442108460 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70156697292780
57
+ version_requirements: *70280442108460
58
58
  description: Gem do pagar.me para Ruby
59
59
  email:
60
60
  - pedrohfranceschi@gmail.com