pagarme 0.14 → 0.15

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.
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