puntopagos 0.1.8 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/puntopagos/executioner.rb +6 -2
- data/lib/puntopagos/notification.rb +2 -1
- data/lib/puntopagos/verification.rb +43 -0
- data/lib/puntopagos/version.rb +1 -1
- data/lib/puntopagos.rb +1 -0
- metadata +11 -5
@@ -11,8 +11,12 @@ module PuntoPagos
|
|
11
11
|
def call_api data, path, method, signature, timestamp
|
12
12
|
#hack fix: JSON.unparse doesn't work in Rails 2.3.5; only {}.to_json does..
|
13
13
|
headers = set_headers(signature, timestamp)
|
14
|
-
api_request_data = JSON.unparse(data) rescue data.to_json
|
15
|
-
|
14
|
+
#api_request_data = JSON.unparse(data) rescue data.to_json
|
15
|
+
if method == :post
|
16
|
+
resp = RestClient.method(method).call(@@puntopagos_base_url+path, data.to_json, headers)
|
17
|
+
elsif method == :get
|
18
|
+
resp = RestClient.method(method).call(@@puntopagos_base_url+path, headers)
|
19
|
+
end
|
16
20
|
JSON.parse(resp)
|
17
21
|
end
|
18
22
|
|
@@ -20,7 +20,8 @@ module PuntoPagos
|
|
20
20
|
message = create_message params["token"], params["trx_id"], params["monto"].to_s, timestamp
|
21
21
|
authorization = Authorization.new(@env)
|
22
22
|
signature = authorization.sign(message)
|
23
|
-
|
23
|
+
verification = PuntoPagos::Verification.new(@env)
|
24
|
+
(signature == pp_signature(headers)) and (verification.verify(params["token"], params["trx_id"], params["monto"].to_s))
|
24
25
|
|
25
26
|
end
|
26
27
|
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module PuntoPagos
|
2
|
+
|
3
|
+
# Public: This class manage the signing of a message using
|
4
|
+
# the secret and api-key defined in puntopagos.yml
|
5
|
+
class Verification
|
6
|
+
def initialize env = nil
|
7
|
+
@env = env
|
8
|
+
@@config ||= PuntoPagos::Config.new(env)
|
9
|
+
@@function = "transaccion/traer"
|
10
|
+
@@path = "transaccion"
|
11
|
+
end
|
12
|
+
|
13
|
+
# Public: Signs a string using the secret and api-key defined in puntopagos.yml
|
14
|
+
#
|
15
|
+
# string - The String to be signed
|
16
|
+
# Returns the signed String.
|
17
|
+
def verify token, trx_id, amount
|
18
|
+
executioner = PuntoPagos::Executioner.new(@env)
|
19
|
+
message = create_message token, trx_id, amount, timestamp
|
20
|
+
authorization = PuntoPagos::Authorization.new(@env)
|
21
|
+
signature = authorization.sign(message)
|
22
|
+
|
23
|
+
response = executioner.call_api(nil, @@path, :get, signature, timestamp)
|
24
|
+
|
25
|
+
valid?(response)
|
26
|
+
end
|
27
|
+
|
28
|
+
def valid? response
|
29
|
+
response["respuesta"] == "00"
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def get_timestamp
|
35
|
+
Time.now.strftime("%a, %d %b %Y %H:%M:%S GMT")
|
36
|
+
end
|
37
|
+
|
38
|
+
def create_message token, trx_id, amount, timestamp
|
39
|
+
@@function + "\n" + token + "\n" + trx_id + "\n" + amount + "\n" + timestamp
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
data/lib/puntopagos/version.rb
CHANGED
data/lib/puntopagos.rb
CHANGED
@@ -4,4 +4,5 @@ require File.join(File.dirname(__FILE__),"puntopagos/executioner")
|
|
4
4
|
require File.join(File.dirname(__FILE__),"puntopagos/request")
|
5
5
|
require File.join(File.dirname(__FILE__),"puntopagos/response")
|
6
6
|
require File.join(File.dirname(__FILE__),"puntopagos/notification")
|
7
|
+
require File.join(File.dirname(__FILE__),"puntopagos/verification")
|
7
8
|
require File.join(File.dirname(__FILE__),"puntopagos/version")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puntopagos
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-10-23 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rest-client
|
17
|
-
requirement:
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,7 +22,12 @@ dependencies:
|
|
22
22
|
version: 1.6.7
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements:
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ~>
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 1.6.7
|
26
31
|
description: Ruby wrapper for PuntoPagos Payment API
|
27
32
|
email:
|
28
33
|
- imella@acid.cl
|
@@ -43,6 +48,7 @@ files:
|
|
43
48
|
- lib/puntopagos/notification.rb
|
44
49
|
- lib/puntopagos/request.rb
|
45
50
|
- lib/puntopagos/response.rb
|
51
|
+
- lib/puntopagos/verification.rb
|
46
52
|
- lib/puntopagos/version.rb
|
47
53
|
- puntopagos.gemspec
|
48
54
|
- test/data/webpay_payload.yml
|
@@ -68,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
68
74
|
version: '0'
|
69
75
|
requirements: []
|
70
76
|
rubyforge_project:
|
71
|
-
rubygems_version: 1.8.
|
77
|
+
rubygems_version: 1.8.24
|
72
78
|
signing_key:
|
73
79
|
specification_version: 3
|
74
80
|
summary: Ruby wrapper for PuntoPagos Payment API
|