sermepa 0.1.0 → 0.1.1
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.
- checksums.yaml +15 -0
- data/README.md +53 -4
- data/lib/sermepa/constants.rb +6 -3
- data/lib/sermepa/form_helper.rb +12 -13
- data/lib/sermepa/sermepa.rb +15 -15
- data/lib/sermepa/version.rb +1 -1
- data/lib/sermepa.rb +1 -1
- metadata +5 -13
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
Y2UyMDkyYTFiNGU1MDM3MGVkOTliYTgyNzY1NTA5NDFkYjA2NGY2Mw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZDhiNzQ5Yzc0ZmI4OGJjZDM0NTFmNjE4NjU2NTQyMWMwYWE3YmRhNQ==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZjA1Y2FmNTUzMDIzNjc4ZmRkODRjNDYzYTdiY2Q5NDUyYTkwMjk0NDRlYTcz
|
10
|
+
YTRjODg5M2M4NDc1NWM3YWEwYTE5NTkzZWYwZTczNjkzN2Y4MGYzMDNmMGEy
|
11
|
+
YTQ1MjIwZDExYzE4OGY2MjNiM2MzZTM0YTI4NjBlZGIyZTcwYWE=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ODdjMDc0YWY5ZmVlODgwMTZjNmE0NmIwZjBmZTY2NWE2NmZiZjk2ZDc0MGIy
|
14
|
+
M2E5MWRmNTM0NGU2OTU1YTM0MDAxYmRkYWE4MzdmMzVmYjQzYjdjMzU2Mzcw
|
15
|
+
ZmEyYmE3YzY2OWJkNGNhZjBjZDU5NGI2ZmE1OTZhYTZmZTU5ZWI=
|
data/README.md
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
Sermepa Gem for Rails
|
2
2
|
=====================
|
3
3
|
|
4
|
-
How to use
|
5
|
-
|
4
|
+
How to use (SOAP WebServices)
|
5
|
+
-----------------------------
|
6
6
|
|
7
7
|
### Configure
|
8
8
|
|
9
|
-
Add initalizer for sermepa configuration:
|
9
|
+
Add initalizer for sermepa configuration (config/initializers/sermepa.rb):
|
10
10
|
|
11
11
|
```ruby
|
12
12
|
Sermepa.configure do |config|
|
@@ -20,7 +20,7 @@ Sermepa.configure do |config|
|
|
20
20
|
config.terminal = '1' # Terminal code
|
21
21
|
config.currency = :EUR # Currency (:EUR, :USD, :GBP, :JPY)
|
22
22
|
config.raise_errors = true # If true will raise exceptions when error ocurrs
|
23
|
-
config.
|
23
|
+
config.merchant_url = "Here goes callback URL"
|
24
24
|
end
|
25
25
|
```
|
26
26
|
|
@@ -59,4 +59,53 @@ Timeout::timeout(20) {
|
|
59
59
|
* Sermepa::SermepaRemoteError
|
60
60
|
* Sermepa::SermepaPaymentError
|
61
61
|
|
62
|
+
How to use (with Form)
|
63
|
+
-----------------------------
|
62
64
|
|
65
|
+
### Configure
|
66
|
+
|
67
|
+
Add initalizer for sermepa configuration (config/initializers/sermepa.rb):
|
68
|
+
|
69
|
+
```ruby
|
70
|
+
Sermepa.configure do |config|
|
71
|
+
# For testing
|
72
|
+
config.post_url = 'https://sis-t.sermepa.es:25443/sis/realizarPago'
|
73
|
+
# For production
|
74
|
+
# config.post_url = 'https://sis.sermepa.es/sis/realizarPago'
|
75
|
+
|
76
|
+
config.merchant_code = 'Here goes merchant code'
|
77
|
+
config.secret = 'Here goes secret'
|
78
|
+
config.terminal = '1' # Terminal code
|
79
|
+
config.currency = :EUR # Currency (:EUR, :USD, :GBP, :JPY)
|
80
|
+
config.merchant_url = "Here goes callback URL" # optional
|
81
|
+
config.url_ok = "Success url" # optional
|
82
|
+
config.url_ko = "Fail url" # optional
|
83
|
+
end
|
84
|
+
```
|
85
|
+
|
86
|
+
### Adding payment form
|
87
|
+
|
88
|
+
Include form in view
|
89
|
+
```ruby
|
90
|
+
<%= sermepa_payment_form amount, {options map} do %>
|
91
|
+
<%= submit_tag 'Send' %>
|
92
|
+
<% end %>
|
93
|
+
```
|
94
|
+
|
95
|
+
Or just:
|
96
|
+
```ruby
|
97
|
+
<%= sermepa_payment_form amount, {options map} %>
|
98
|
+
```
|
99
|
+
|
100
|
+
Allowed options are:
|
101
|
+
* currency (optional)
|
102
|
+
* description (optional)
|
103
|
+
* titular (optional)
|
104
|
+
* order (defaults to current timestamp)
|
105
|
+
* transaction_type
|
106
|
+
* merchant_url (defaults to config)
|
107
|
+
* url_ok (defaults to config)
|
108
|
+
* url_ko (defaults to config)
|
109
|
+
* consumer_language (default spanish)
|
110
|
+
* merchant_code (defaults to config)
|
111
|
+
* terminal (defaults to config)
|
data/lib/sermepa/constants.rb
CHANGED
@@ -1,20 +1,23 @@
|
|
1
1
|
module Sermepa
|
2
|
-
|
2
|
+
|
3
3
|
CURRENCIES = {
|
4
4
|
:EUR => '978',
|
5
5
|
:USD => '840',
|
6
6
|
:GBP => '826',
|
7
7
|
:JPY => '392'
|
8
8
|
}
|
9
|
-
|
9
|
+
|
10
10
|
TRANSACTION_TYPES = {
|
11
11
|
# Payment Requests
|
12
12
|
:traditional_payment => 'A',
|
13
13
|
:preauthorization => '1',
|
14
14
|
:deferred_authorization => 'O',
|
15
|
+
:authorization => '0',
|
16
|
+
|
15
17
|
# Recurrent payments
|
16
18
|
:recurrent_transaction => '5',
|
17
19
|
:deferred_initial_recurrent_authorization => 'R',
|
20
|
+
|
18
21
|
# Confirmation/Refund requests
|
19
22
|
:confirmation => '2',
|
20
23
|
:automatic_refund => '3',
|
@@ -24,5 +27,5 @@ module Sermepa
|
|
24
27
|
:deferred_authorization_cancel => 'Q',
|
25
28
|
:deferred_successive_transaction_authorization => 'S'
|
26
29
|
}
|
27
|
-
|
30
|
+
|
28
31
|
end
|
data/lib/sermepa/form_helper.rb
CHANGED
@@ -3,25 +3,24 @@ module Sermepa
|
|
3
3
|
def sermepa_payment_form(amount, params = {}, &block)
|
4
4
|
values = {
|
5
5
|
DS_MERCHANT_AMOUNT: (amount.to_f * 100).to_i,
|
6
|
-
DS_MERCHANT_CURRENCY: CURRENCIES[params[:currency] || config.currency],
|
6
|
+
DS_MERCHANT_CURRENCY: CURRENCIES[params[:currency] || Sermepa.config.currency],
|
7
7
|
DS_MERCHANT_PRODUCTDESCRIPTION: params[:description],
|
8
8
|
DS_MERCHANT_TITULAR: params[:titular],
|
9
9
|
DS_MERCHANT_ORDER: params[:order] || Time.now.to_i,
|
10
|
-
DS_MERCHANT_MERCHANTCODE: params[:merchant_code] || config.merchant_code,
|
11
|
-
DS_MERCHANT_TERMINAL: params[:terminal] || config.terminal,
|
10
|
+
DS_MERCHANT_MERCHANTCODE: params[:merchant_code] || Sermepa.config.merchant_code,
|
11
|
+
DS_MERCHANT_TERMINAL: params[:terminal] || Sermepa.config.terminal,
|
12
12
|
DS_MERCHANT_TRANSACTIONTYPE: TRANSACTION_TYPES[params[:transaction_type]],
|
13
|
-
DS_MERCHANT_MERCHANTURL: params[:merchant_url] || config.merchant_url,
|
14
|
-
DS_MERCHANT_URLOK: params[:url_ok] || config.url_ok,
|
15
|
-
DS_MERCHANT_URLKO: params[:url_ko] || config.url_ko,
|
16
|
-
DS_MERCHANT_CONSUMERLANGUAGE: params[:consumer_language] || config.consumer_language
|
13
|
+
DS_MERCHANT_MERCHANTURL: params[:merchant_url] || Sermepa.config.merchant_url,
|
14
|
+
DS_MERCHANT_URLOK: params[:url_ok] || Sermepa.config.url_ok,
|
15
|
+
DS_MERCHANT_URLKO: params[:url_ko] || Sermepa.config.url_ko,
|
16
|
+
DS_MERCHANT_CONSUMERLANGUAGE: params[:consumer_language] || Sermepa.config.consumer_language
|
17
17
|
}
|
18
|
-
values[:DS_MERCHANT_MERCHANTSIGNATURE] = signature(values)
|
19
|
-
|
18
|
+
values[:DS_MERCHANT_MERCHANTSIGNATURE] = Sermepa::signature(values)
|
19
|
+
|
20
20
|
output = ActiveSupport::SafeBuffer.new
|
21
|
-
|
22
|
-
form_tag config.post_url do
|
21
|
+
form_tag Sermepa.config.post_url do
|
23
22
|
output = ActiveSupport::SafeBuffer.new
|
24
|
-
values.each_pair do |k,v|
|
23
|
+
values.each_pair do |k,v|
|
25
24
|
output << hidden_field_tag(k, v) if v
|
26
25
|
end
|
27
26
|
if block_given?
|
@@ -30,7 +29,7 @@ module Sermepa
|
|
30
29
|
output << submit_tag(t 'send')
|
31
30
|
end
|
32
31
|
end
|
33
|
-
|
32
|
+
|
34
33
|
end
|
35
34
|
end
|
36
35
|
end
|
data/lib/sermepa/sermepa.rb
CHANGED
@@ -4,7 +4,7 @@ require 'sermepa/errors'
|
|
4
4
|
require 'sermepa/signature'
|
5
5
|
|
6
6
|
module Sermepa
|
7
|
-
|
7
|
+
|
8
8
|
def build_values(params, transaction_type)
|
9
9
|
values = {
|
10
10
|
DS_MERCHANT_MERCHANTCODE: params[:merchant_code] || Sermepa.config.merchant_code,
|
@@ -15,49 +15,49 @@ module Sermepa
|
|
15
15
|
DS_MERCHANT_TRANSACTIONTYPE: TRANSACTION_TYPES[transaction_type]
|
16
16
|
}
|
17
17
|
values[:DS_MERCHANT_MERCHANTURL] = Sermepa.config.merchant_url if Sermepa.config.merchant_url
|
18
|
-
|
18
|
+
|
19
19
|
values
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
def pay_request(params)
|
23
23
|
values = build_values(params, :traditional_payment)
|
24
24
|
values[:DS_MERCHANT_PAN] = params[:pan]
|
25
25
|
values[:DS_MERCHANT_CVV2] = params[:cvv2]
|
26
26
|
values[:DS_MERCHANT_EXPIRYDATE] = params[:expiration]
|
27
|
-
|
27
|
+
|
28
28
|
values[:DS_MERCHANT_MERCHANTSIGNATURE] = signature(values)
|
29
29
|
call(values)
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
def confirmation_request(params)
|
33
33
|
values = build_values(params, :confirmation)
|
34
34
|
|
35
35
|
values[:DS_MERCHANT_MERCHANTSIGNATURE] = signature(values)
|
36
36
|
call(values)
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
def refund_request(params)
|
40
40
|
values = build_values(params, :automatic_refund)
|
41
41
|
|
42
42
|
values[:DS_MERCHANT_MERCHANTSIGNATURE] = signature(values)
|
43
43
|
call(values)
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
def call(values = {})
|
47
47
|
client = Savon.client(config.service_url)
|
48
|
-
|
48
|
+
|
49
49
|
response = client.request :trata_peticion do
|
50
50
|
soap.body do |xml|
|
51
51
|
request_xml = values.to_xml(root: :DATOSENTRADA, dasherize: false, skip_instruct: true)
|
52
52
|
xml.DATOSENTRADA(request_xml)
|
53
|
-
|
53
|
+
|
54
54
|
end
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
57
|
result = Hash.from_xml response.to_hash[:trata_peticion_response][:trata_peticion_return]
|
58
58
|
error_code = result['RETORNOXML']['CODIGO'].to_sym
|
59
59
|
remote_error = error_code != :'0'
|
60
|
-
|
60
|
+
|
61
61
|
if remote_error
|
62
62
|
config._logger.warn("[Sermepa] Remote Error (#{error_code}): #{ERRORS[error_code]}")
|
63
63
|
if config.raise_errors
|
@@ -66,17 +66,17 @@ module Sermepa
|
|
66
66
|
return error_code
|
67
67
|
end
|
68
68
|
end
|
69
|
-
|
69
|
+
|
70
70
|
response_code = result['RETORNOXML']['OPERACION']['Ds_Response']
|
71
|
-
|
72
|
-
unless (0..99).include?(response_code.to_i) || response_code.to_i == 900
|
71
|
+
|
72
|
+
unless (0..99).include?(response_code.to_i) || response_code.to_i == 900
|
73
73
|
if config.raise_errors
|
74
74
|
raise SermepaPaymentError.new(response_code.to_sym)
|
75
75
|
else
|
76
76
|
return response_code.to_sym
|
77
77
|
end
|
78
78
|
end
|
79
|
-
|
79
|
+
|
80
80
|
return false # No errors
|
81
81
|
end
|
82
82
|
end
|
data/lib/sermepa/version.rb
CHANGED
data/lib/sermepa.rb
CHANGED
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sermepa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Endika Gutiérrez
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-07-24 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rails
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,7 +27,6 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: savon
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,7 +41,6 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: sqlite3
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ! '>='
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ! '>='
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -111,27 +104,26 @@ files:
|
|
111
104
|
- test/test_helper.rb
|
112
105
|
homepage: https://github.com/endSly/sermepa-rails
|
113
106
|
licenses: []
|
107
|
+
metadata: {}
|
114
108
|
post_install_message:
|
115
109
|
rdoc_options: []
|
116
110
|
require_paths:
|
117
111
|
- lib
|
118
112
|
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
-
none: false
|
120
113
|
requirements:
|
121
114
|
- - ! '>='
|
122
115
|
- !ruby/object:Gem::Version
|
123
116
|
version: '0'
|
124
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
|
-
none: false
|
126
118
|
requirements:
|
127
119
|
- - ! '>='
|
128
120
|
- !ruby/object:Gem::Version
|
129
121
|
version: '0'
|
130
122
|
requirements: []
|
131
123
|
rubyforge_project:
|
132
|
-
rubygems_version:
|
124
|
+
rubygems_version: 2.0.5
|
133
125
|
signing_key:
|
134
|
-
specification_version:
|
126
|
+
specification_version: 4
|
135
127
|
summary: Sermepa SOAP gateway for rails.
|
136
128
|
test_files:
|
137
129
|
- test/dummy/app/assets/javascripts/application.js
|