epayco-ruby 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d14ab1c47083da981f32de52f7c3df2f63dbb1bd
4
+ data.tar.gz: e1486095edce95c71976a768c44dbb01cb75c130
5
+ SHA512:
6
+ metadata.gz: cba2946a945f7f26c15de902ea606dcc7cd8688c89d261be7128e3dd9609cf3cad5484bf7cbd2cde33496679ce5a799e0b048c210fe44d353ce0990abfc73b06
7
+ data.tar.gz: f9f0be852dc5c76587e535b080093a4153716df5800ce4460f06b4409747706141a58897edf558f2fc71ad7ce00dbe350be10eb64fc8cc8512cbb1593dd3abfb
data/bin/epayco ADDED
@@ -0,0 +1 @@
1
+ #!/usr/bin/env ruby
@@ -0,0 +1,2 @@
1
+ # Describe global library
2
+ require File.dirname(__FILE__) + '/epayco'
data/lib/epayco.rb ADDED
@@ -0,0 +1,148 @@
1
+ require 'rest-client'
2
+ require 'json'
3
+ require 'openssl'
4
+ require 'base64'
5
+ require 'open-uri'
6
+ require 'socket'
7
+ require_relative 'epayco/resources'
8
+
9
+ module Epayco
10
+
11
+ # Set custom error
12
+ class Error < StandardError
13
+ include Enumerable
14
+ attr_accessor :errors
15
+
16
+ # Get code, lang and show custom error
17
+ def initialize code, lang
18
+ file = open("https://s3-us-west-2.amazonaws.com/epayco/message_api/errors.json").read
19
+ data_hash = JSON.parse(file)
20
+ super data_hash[code][lang]
21
+ @errors = errors
22
+ end
23
+
24
+ def each
25
+ @errors.each { |e| yield *e.first }
26
+ end
27
+ end
28
+
29
+ # Endpoints
30
+ @api_base = 'https://api.secure.payco.co'
31
+ @api_base_secure = 'https://secure.payco.co'
32
+
33
+ # Init sdk parameters
34
+ class << self
35
+ attr_accessor :apiKey, :privateKey, :lang, :test
36
+ end
37
+
38
+ # Eject request and show response or error
39
+ def self.request(method, url, extra=nil, params={}, headers={}, switch)
40
+ method = method.to_sym
41
+
42
+ if !apiKey || !privateKey || !lang || !test
43
+ raise Error.new('100', lang)
44
+ end
45
+
46
+ payload = JSON.generate(params) if method == :post || method == :patch
47
+ params = nil unless method == :get
48
+
49
+ # Switch secure or api
50
+ if switch
51
+ if method == :post || method == :patch
52
+ enc = encrypt_aes(payload)
53
+ payload = enc.to_json
54
+ end
55
+ url = @api_base_secure + url
56
+ else
57
+ if method == :post || method == :patch
58
+ rb_hash = JSON.parse(payload)
59
+ rb_hash["test"] = test ? "TRUE" : "FALSE"
60
+ rb_hash["ip"] = local_ip
61
+ payload = rb_hash.to_json
62
+ end
63
+ url = @api_base + url
64
+ end
65
+
66
+ headers = {
67
+ :params => params,
68
+ :content_type => 'application/json',
69
+ :type => 'sdk'
70
+ }.merge(headers)
71
+
72
+ options = {
73
+ :headers => headers,
74
+ :user => apiKey,
75
+ :method => method,
76
+ :url => url,
77
+ :payload => payload
78
+ }
79
+
80
+ # Open library rest client
81
+ begin
82
+ response = execute_request(options)
83
+ return {} if response.code == 204 and method == :delete
84
+ JSON.parse(response.body, :symbolize_names => true)
85
+ rescue RestClient::Exception => e
86
+ handle_errors e
87
+ end
88
+ end
89
+
90
+ private
91
+
92
+ # Get response successful
93
+ def self.execute_request(options)
94
+ RestClient::Request.execute(options)
95
+ end
96
+
97
+ # Get response with errors
98
+ def self.handle_errors exception
99
+ body = JSON.parse exception.http_body
100
+ raise Error.new(exception.to_s, body['errors'])
101
+ end
102
+
103
+ def self.local_ip
104
+ orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true
105
+ UDPSocket.open do |s|
106
+ s.connect '64.233.187.99', 1
107
+ s.addr.last
108
+ end
109
+ ensure
110
+ Socket.do_not_reverse_lookup = orig
111
+ end
112
+
113
+ def self.encrypt_aes data
114
+ sandbox = Epayco.test ? "TRUE" : "FALSE"
115
+ @tags = JSON.parse(data)
116
+ @seted = {}
117
+ @tags.each {
118
+ |key, value|
119
+ @seted[lang_key(key)] = encrypt(value, Epayco.privateKey)
120
+ }
121
+ @seted["public_key"] = Epayco.apiKey
122
+ @seted["i"] = Base64.encode64("0000000000000000")
123
+ @seted["enpruebas"] = encrypt(sandbox, Epayco.privateKey)
124
+ @seted["lenguaje"] = "ruby"
125
+ @seted["ip"] = encrypt(local_ip, Epayco.privateKey)
126
+ @seted["p"] = ""
127
+ return @seted
128
+ end
129
+
130
+ def self.encrypt(str, key)
131
+ cipher = OpenSSL::Cipher.new('AES-128-CBC')
132
+ cipher.encrypt
133
+ iv = "0000000000000000"
134
+ cipher.iv = iv
135
+ cipher.key = key
136
+ str = iv + str
137
+ data = cipher.update(str) + cipher.final
138
+ Base64.urlsafe_encode64(data)
139
+ end
140
+
141
+ # Traslate secure petitions
142
+ def self.lang_key key
143
+ file = File.read(File.dirname(__FILE__) + '/keylang.json')
144
+ data_hash = JSON.parse(file)
145
+ data_hash[key]
146
+ end
147
+
148
+ end
@@ -0,0 +1,106 @@
1
+ module Epayco
2
+ module Operations
3
+ module ClassMethods
4
+
5
+ private
6
+
7
+ # Action create
8
+ def create params={}, extra=nil
9
+ if self.url == "token"
10
+ url = "/v1/tokens"
11
+ elsif self.url == "customers"
12
+ url = "/payment/v1/customer/create"
13
+ elsif self.url == "plan"
14
+ url = "/recurring/v1/plan/create"
15
+ elsif self.url == "subscriptions"
16
+ url = "/recurring/v1/subscription/create"
17
+ elsif self.url == "bank"
18
+ url = "/restpagos/pagos/debitos.json"
19
+ elsif self.url == "cash"
20
+ if extra == "efecty"
21
+ url = "/restpagos/pagos/efecties.json"
22
+ elsif extra == "baloto"
23
+ url = "/restpagos/pagos/balotos.json"
24
+ elsif extra == "gana"
25
+ url = "/restpagos/pagos/ganas.json"
26
+ else
27
+ raise Error.new('109', Epayco.lang)
28
+ end
29
+ elsif self.url == "charge"
30
+ url = "/payment/v1/charge/create"
31
+ end
32
+ Epayco.request :post, url, extra, params, self.switch
33
+ end
34
+
35
+ # Action retrieve from id
36
+ def get uid, params={}, extra=nil
37
+ switch = self.switch;
38
+ if self.url == "customers"
39
+ url = "/payment/v1/customer/" + Epayco.apiKey + "/" + uid + "/"
40
+ elsif self.url == "plan"
41
+ url = "/recurring/v1/plan/" + Epayco.apiKey + "/" + uid + "/"
42
+ elsif self.url == "subscriptions"
43
+ url = "/recurring/v1/subscription/" + uid + "/" + Epayco.apiKey + "/"
44
+ elsif self.url == "bank"
45
+ url = "/restpagos/pse/transactioninfomation.json?transactionID=" + uid + "&public_key=" + Epayco.apiKey
46
+ switch = true
47
+ elsif self.url == "cash" || self.url == "charge"
48
+ url = "/restpagos/transaction/response.json?ref_payco=" + uid + "&public_key=" + Epayco.apiKey
49
+ switch = true
50
+ end
51
+ Epayco.request :get, url, extra, params, switch
52
+ end
53
+
54
+ # Action update
55
+ def update uid, params={}, extra=nil
56
+ if self.url == "customers"
57
+ url = "/payment/v1/customer/edit/" + Epayco.apiKey + "/" + uid + "/"
58
+ end
59
+ Epayco.request :post, url, extra, params, self.switch
60
+ end
61
+
62
+ # Action retrieve all documents from user
63
+ def list params={}, extra=nil
64
+ if self.url == "customers"
65
+ url = "/payment/v1/customers/" + Epayco.apiKey + "/"
66
+ elsif self.url == "plan"
67
+ url = "/recurring/v1/plans/" + Epayco.apiKey + "/"
68
+ elsif self.url == "subscriptions"
69
+ url = "/recurring/v1/subscriptions/" + Epayco.apiKey
70
+ end
71
+ Epayco.request :get, url, extra, params, self.switch
72
+ end
73
+
74
+ # Remove data from api
75
+ def delete uid, params={}, extra=nil
76
+ if self.url == "plan"
77
+ url = "/recurring/v1/plan/remove/" + Epayco.apiKey + "/" + uid + "/"
78
+ end
79
+ Epayco.request :post, url, extra, params, self.switch
80
+ end
81
+
82
+ # Cance subscription
83
+ def cancel uid, params={}, extra=nil
84
+ params["id"] = uid
85
+ params["public_key"] = Epayco.apiKey
86
+ if self.url == "subscriptions"
87
+ url = "/recurring/v1/subscription/cancel"
88
+ end
89
+ Epayco.request :post, url, extra, params, self.switch
90
+ end
91
+
92
+ def charge params={}, extra=nil
93
+ if self.url == "subscriptions"
94
+ url = "/payment/v1/charge/subscription/create"
95
+ end
96
+ Epayco.request :post, url, extra, params, self.switch
97
+ end
98
+
99
+ end
100
+
101
+ # Export methods
102
+ def self.included(base)
103
+ base.extend(ClassMethods)
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,48 @@
1
+ require_relative 'operations'
2
+
3
+ module Epayco
4
+ class Resource
5
+ include Operations
6
+
7
+ # Def url endpoint
8
+ def self.url id=nil
9
+ self.name.split('::').last.downcase
10
+ end
11
+
12
+ # Case switch secure or api
13
+ def self.switch
14
+ self.url == "bank" || self.url == "cash" ? true : false
15
+ end
16
+ end
17
+
18
+ # Resources and CRUD
19
+
20
+ class Token < Resource
21
+ public_class_method :create
22
+ end
23
+
24
+ class Customers < Resource
25
+ public_class_method :create, :get, :list, :update
26
+ end
27
+
28
+ class Plan < Resource
29
+ public_class_method :create, :get, :list, :delete
30
+ end
31
+
32
+ class Subscriptions < Resource
33
+ public_class_method :create, :get, :list, :cancel, :charge
34
+ end
35
+
36
+ class Bank < Resource
37
+ public_class_method :create, :get
38
+ end
39
+
40
+ class Cash < Resource
41
+ public_class_method :create, :get
42
+ end
43
+
44
+ class Charge < Resource
45
+ public_class_method :create, :get
46
+ end
47
+
48
+ end
data/lib/keylang.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "bank": "banco",
3
+ "invoice": "factura",
4
+ "description": "descripcion",
5
+ "value": "valor",
6
+ "tax": "iva",
7
+ "tax_base": "baseiva",
8
+ "currency": "moneda",
9
+ "type_person": "tipo_persona",
10
+ "doc_type": "tipo_doc",
11
+ "doc_number": "documento",
12
+ "name": "nombres",
13
+ "last_name": "apellidos",
14
+ "email": "email",
15
+ "country": "pais",
16
+ "department": "depto",
17
+ "city": "ciudad",
18
+ "phone": "telefono",
19
+ "cell_phone": "celular",
20
+ "address": "direccion",
21
+ "ip": "ip",
22
+ "url_response": "url_respuesta",
23
+ "url_confirmation": "url_confirmacion",
24
+ "method_confirmation": "metodoconfirmacion",
25
+ "end_date": "fechaexpiracion"
26
+ }
@@ -0,0 +1,123 @@
1
+
2
+ module Epayco
3
+ @mock_rest_client = nil
4
+
5
+ def self.mock_rest_client=(mock_client)
6
+ @mock_rest_client = mock_client
7
+ end
8
+ end
9
+
10
+ def credit_info
11
+ {
12
+ "card[number]" => "4575623182290326",
13
+ "card[exp_year]" => "2017",
14
+ "card[exp_month]" => "07",
15
+ "card[cvc]" => "123"
16
+ }
17
+ end
18
+
19
+ def customer_info
20
+ {
21
+ token_card: "eXj5Wdqgj7xzvC7AR",
22
+ name: "Joe Doe",
23
+ email: "joe@payco.co",
24
+ phone: "3005234321",
25
+ default: true
26
+ }
27
+ end
28
+
29
+ def update_customer_info
30
+ {
31
+ name: "Juan"
32
+ }
33
+ end
34
+
35
+ def plan_info
36
+ {
37
+ id_plan: "coursereact",
38
+ name: "Course react js",
39
+ description: "Course react and redux",
40
+ amount: 30000,
41
+ currency: "cop",
42
+ interval: "month",
43
+ interval_count: 1,
44
+ trial_days: 30
45
+ }
46
+ end
47
+
48
+ def subscription_info
49
+ {
50
+ id_plan: "coursereact",
51
+ customer: "A6ZGiJ6rgxK5RB2WT",
52
+ token_card: "eXj5Wdqgj7xzvC7AR",
53
+ doc_type: "CC",
54
+ doc_number: "5234567"
55
+ }
56
+ end
57
+
58
+ def pse_info
59
+ {
60
+ bank: "1007",
61
+ invoice: "1472050778",
62
+ description: "Pago pruebas",
63
+ value: "10000",
64
+ tax: "0",
65
+ tax_base: "0",
66
+ currency: "COP",
67
+ type_person: "0",
68
+ doc_type: "CC",
69
+ doc_number: "10358519",
70
+ name: "PRUEBAS",
71
+ last_name: "PAYCO",
72
+ email: "no-responder@payco.co",
73
+ country: "CO",
74
+ cell_phone: "3010000001",
75
+ ip: "186.116.10.133",
76
+ url_response: "https:/secure.payco.co/restpagos/testRest/endpagopse.php",
77
+ url_confirmation: "https:/secure.payco.co/restpagos/testRest/endpagopse.php",
78
+ method_confirmation: "GET",
79
+ }
80
+ end
81
+
82
+ def cash_info
83
+ {
84
+ invoice: "1472050778",
85
+ description: "Pago pruebas",
86
+ value: "20000",
87
+ tax: "0",
88
+ tax_base: "0",
89
+ currency: "COP",
90
+ type_person: "0",
91
+ doc_type: "CC",
92
+ doc_number: "10358519",
93
+ name: "PRUEBAS",
94
+ last_name: "PAYCO",
95
+ email: "test@mailinator.com",
96
+ cell_phone: "3010000001",
97
+ end_date: "2017-12-05",
98
+ ip: "186.116.10.133",
99
+ url_response: "https:/secure.payco.co/restpagos/testRest/endpagopse.php",
100
+ url_confirmation: "https:/secure.payco.co/restpagos/testRest/endpagopse.php",
101
+ method_confirmation: "GET",
102
+ }
103
+ end
104
+
105
+ def payment_info
106
+ {
107
+ token_card: "eXj5Wdqgj7xzvC7AR",
108
+ customer_id: "A6ZGiJ6rgxK5RB2WT",
109
+ doc_type: "CC",
110
+ doc_number: "1035851980",
111
+ name: "John",
112
+ last_name: "Doe",
113
+ email: "example@email.com",
114
+ ip: "192.198.2.114",
115
+ bill: "OR-1234",
116
+ description: "Test Payment",
117
+ value: "116000",
118
+ tax: "16000",
119
+ tax_base: "100000",
120
+ currency: "COP",
121
+ dues: "12"
122
+ }
123
+ end
data/tests/testing.rb ADDED
@@ -0,0 +1,209 @@
1
+ require File.expand_path("../lib/epayco", File.dirname(__FILE__))
2
+ require File.expand_path("test_helper", File.dirname(__FILE__))
3
+
4
+ require "cutest"
5
+ require "mocha/api"
6
+ include Mocha::API
7
+
8
+ prepare do
9
+ Epayco.apiKey = '491d6a0b6e992cf924edd8d3d088aff1'
10
+ Epayco.privateKey = '268c8e0162990cf2ce97fa7ade2eff5a'
11
+ Epayco.lang = 'ES'
12
+ Epayco.test = true
13
+ end
14
+
15
+ setup do
16
+ Epayco.mock_rest_client = mock
17
+ end
18
+
19
+ test "create token" do |mock|
20
+ begin
21
+ token = Epayco::Token.create credit_info
22
+ assert(token)
23
+ rescue Epayco::Error => e
24
+ puts e
25
+ end
26
+ end
27
+
28
+ # Customers
29
+
30
+ test "create customer" do |mock|
31
+ begin
32
+ customer = Epayco::Customers.create customer_info
33
+ assert(customer)
34
+ rescue Epayco::Error => e
35
+ puts e
36
+ end
37
+ end
38
+
39
+ test "retrieve customer" do |mock|
40
+ begin
41
+ customer = Epayco::Customers.get "123"
42
+ assert(customer)
43
+ rescue Epayco::Error => e
44
+ puts e
45
+ end
46
+ end
47
+
48
+ test "list customers" do |mock|
49
+ begin
50
+ customer = Epayco::Customers.list
51
+ assert(customer)
52
+ rescue Epayco::Error => e
53
+ puts e
54
+ end
55
+ end
56
+
57
+ test "update customer" do |mock|
58
+ begin
59
+ customer = Epayco::Customers.update "123", update_customer_info
60
+ assert(customer)
61
+ rescue Epayco::Error => e
62
+ puts e
63
+ end
64
+ end
65
+
66
+ # Plan
67
+
68
+ test "create plan" do |mock|
69
+ begin
70
+ plan = Epayco::Plan.create plan_info
71
+ assert(plan)
72
+ rescue Epayco::Error => e
73
+ puts e
74
+ end
75
+ end
76
+
77
+ test "retrieve plan" do |mock|
78
+ begin
79
+ plan = Epayco::Plan.get "coursereact"
80
+ assert(plan)
81
+ rescue Epayco::Error => e
82
+ puts e
83
+ end
84
+ end
85
+
86
+ test "list plan" do |mock|
87
+ begin
88
+ plan = Epayco::Plan.list
89
+ assert(plan)
90
+ rescue Epayco::Error => e
91
+ puts e
92
+ end
93
+ end
94
+
95
+ test "remove plan" do |mock|
96
+ begin
97
+ plan = Epayco::Plan.delete "coursereact"
98
+ assert(plan)
99
+ rescue Epayco::Error => e
100
+ puts e
101
+ end
102
+ end
103
+
104
+ # Subscriptions
105
+
106
+ test "create subscription" do |mock|
107
+ begin
108
+ sub = Epayco::Subscriptions.create subscription_info
109
+ assert(sub)
110
+ rescue Epayco::Error => e
111
+ puts e
112
+ end
113
+ end
114
+
115
+ test "charge subscription" do |mock|
116
+ begin
117
+ sub = Epayco::Subscriptions.charge subscription_info
118
+ assert(sub)
119
+ rescue Epayco::Error => e
120
+ puts e
121
+ end
122
+ end
123
+
124
+ test "retrieve subscriptions" do |mock|
125
+ begin
126
+ sub = Epayco::Subscriptions.get "123"
127
+ assert(sub)
128
+ rescue Epayco::Error => e
129
+ puts e
130
+ end
131
+ end
132
+
133
+ test "list subscriptions" do |mock|
134
+ begin
135
+ sub = Epayco::Subscriptions.list
136
+ assert(sub)
137
+ rescue Epayco::Error => e
138
+ puts e
139
+ end
140
+ end
141
+
142
+ test "cancel subscriptions" do |mock|
143
+ begin
144
+ sub = Epayco::Subscriptions.cancel "123"
145
+ assert(sub)
146
+ rescue Epayco::Error => e
147
+ puts e
148
+ end
149
+ end
150
+
151
+ # PSE
152
+
153
+ test "create pse" do |mock|
154
+ begin
155
+ pse = Epayco::Bank.create pse_info
156
+ assert(pse)
157
+ rescue Epayco::Error => e
158
+ puts e
159
+ end
160
+ end
161
+
162
+ test "retrieve pse" do |mock|
163
+ begin
164
+ pse = Epayco::Bank.get "123"
165
+ assert(pse)
166
+ rescue Epayco::Error => e
167
+ puts e
168
+ end
169
+ end
170
+
171
+ # Cash
172
+
173
+ test "create cash" do |mock|
174
+ begin
175
+ cash = Epayco::Cash.create cash_info, "efecty"
176
+ assert(cash)
177
+ rescue Epayco::Error => e
178
+ puts e
179
+ end
180
+ end
181
+
182
+ test "retrieve cash" do |mock|
183
+ begin
184
+ cash = Epayco::Cash.get "123"
185
+ assert(cash)
186
+ rescue Epayco::Error => e
187
+ puts e
188
+ end
189
+ end
190
+
191
+ # Payment
192
+
193
+ test "create payment" do |mock|
194
+ begin
195
+ pay = Epayco::Charge.create payment_info
196
+ assert(pay)
197
+ rescue Epayco::Error => e
198
+ puts e
199
+ end
200
+ end
201
+
202
+ test "retrieve payment" do |mock|
203
+ begin
204
+ pay = Epayco::Charge.get "123"
205
+ assert(pay)
206
+ rescue Epayco::Error => e
207
+ puts e
208
+ end
209
+ end
metadata ADDED
@@ -0,0 +1,114 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: epayco-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
+ platform: ruby
6
+ authors:
7
+ - Epayco development team
8
+ - Jonathan Aguirre
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2017-04-05 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rest-client
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: '1.7'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: '1.7'
28
+ - !ruby/object:Gem::Dependency
29
+ name: json
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ~>
33
+ - !ruby/object:Gem::Version
34
+ version: '2.0'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: '2.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: cutest
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: '1.2'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: '1.2'
56
+ - !ruby/object:Gem::Dependency
57
+ name: mocha
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: '1.1'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '1.1'
70
+ description: |-
71
+ API to interact with Epayco
72
+ https://epayco.co
73
+ email:
74
+ - jaguirre@payco.co
75
+ executables:
76
+ - epayco
77
+ extensions: []
78
+ extra_rdoc_files: []
79
+ files:
80
+ - bin/epayco
81
+ - lib/epayco.rb
82
+ - lib/keylang.json
83
+ - lib/epayco-ruby.rb
84
+ - lib/epayco/resources.rb
85
+ - lib/epayco/operations.rb
86
+ - tests/testing.rb
87
+ - tests/test_helper.rb
88
+ homepage: https://epayco.co/
89
+ licenses:
90
+ - MIT
91
+ metadata: {}
92
+ post_install_message:
93
+ rdoc_options: []
94
+ require_paths:
95
+ - lib
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ required_rubygems_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ requirements: []
107
+ rubyforge_project:
108
+ rubygems_version: 2.0.14.1
109
+ signing_key:
110
+ specification_version: 4
111
+ summary: Ruby wrapper for Epayco API
112
+ test_files:
113
+ - tests/testing.rb
114
+ - tests/test_helper.rb