openpay 1.0.3 → 1.0.4
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 +13 -5
- data/.gitignore +1 -0
- data/.idea/.rakeTasks +2 -2
- data/.idea/OpenPay.iml +30 -20
- data/.idea/runConfigurations/Run_spec__bankaccounts_spec___OpenPay.xml +1 -0
- data/.idea/runConfigurations/Run_spec__cards_spec___OpenPay.xml +1 -0
- data/.idea/runConfigurations/Run_spec__charges_spec___OpenPay.xml +1 -0
- data/.idea/runConfigurations/Run_spec__customers_spec___OpenPay.xml +1 -0
- data/.idea/runConfigurations/Run_spec__exceptions_spec___OpenPay.xml +1 -0
- data/.idea/runConfigurations/Run_spec__fees_spec___OpenPay.xml +1 -0
- data/.idea/runConfigurations/Run_spec__payouts_spec___OpenPay.xml +1 -0
- data/.idea/runConfigurations/Run_spec__plans_spec___OpenPay.xml +1 -0
- data/.idea/runConfigurations/Run_spec__subscriptions_spec___OpenPay.xml +1 -0
- data/.idea/runConfigurations/Run_spec__transfers_spec___OpenPay.xml +1 -0
- data/.idea/runConfigurations/all_specs.xml +1 -0
- data/.idea/workspace.xml +484 -268
- data/Gemfile +0 -6
- data/README.md +111 -29
- data/lib/openpay.rb +7 -3
- data/lib/openpay/bankaccounts.rb +10 -11
- data/lib/openpay/cards.rb +12 -14
- data/lib/openpay/charges.rb +38 -14
- data/lib/openpay/customers.rb +73 -67
- data/lib/openpay/errors/openpay_exception_factory.rb +14 -26
- data/lib/openpay/fees.rb +1 -1
- data/lib/openpay/open_pay_resource.rb +77 -77
- data/lib/openpay/open_pay_resource_factory.rb +1 -1
- data/lib/openpay/openpay_api.rb +6 -16
- data/lib/openpay/payouts.rb +13 -17
- data/lib/openpay/plans.rb +1 -7
- data/lib/openpay/subscriptions.rb +21 -29
- data/lib/openpay/transfers.rb +14 -18
- data/lib/openpay/utils/search_params.rb +20 -0
- data/lib/version.rb +1 -2
- data/openpay.gemspec +0 -8
- data/test/Factories.rb +80 -126
- data/test/spec/bankaccounts_spec.rb +55 -61
- data/test/spec/cards_spec.rb +56 -76
- data/test/spec/charges_spec.rb +89 -84
- data/test/spec/customers_spec.rb +37 -47
- data/test/spec/exceptions_spec.rb +4 -21
- data/test/spec/fees_spec.rb +51 -7
- data/test/spec/payouts_spec.rb +102 -65
- data/test/spec/plans_spec.rb +27 -50
- data/test/spec/subscriptions_spec.rb +87 -24
- data/test/spec/transfers_spec.rb +42 -44
- data/test/spec/utils/search_params_spec.rb +36 -0
- data/test/spec_helper.rb +1 -5
- metadata +15 -55
- data/lib/OpenPay/Cards.rb +0 -75
- data/lib/OpenPay/Charges.rb +0 -77
- data/lib/OpenPay/Customers.rb +0 -194
- data/lib/OpenPay/Fees.rb +0 -5
- data/lib/OpenPay/Payouts.rb +0 -59
- data/lib/OpenPay/Plans.rb +0 -23
- data/lib/OpenPay/Subscriptions.rb +0 -58
- data/lib/OpenPay/Transfers.rb +0 -43
- data/lib/OpenPay/bankaccounts.rb +0 -59
- data/lib/OpenPay/errors/openpay_connection_exception.rb +0 -3
- data/lib/OpenPay/errors/openpay_exception.rb +0 -29
- data/lib/OpenPay/errors/openpay_exception_factory.rb +0 -60
- data/lib/OpenPay/errors/openpay_transaction_exception.rb +0 -5
- data/lib/OpenPay/open_pay_resource.rb +0 -242
- data/lib/OpenPay/open_pay_resource_factory.rb +0 -10
- data/lib/OpenPay/openpay_api.rb +0 -58
data/lib/openpay/charges.rb
CHANGED
@@ -11,36 +11,53 @@ class Charges < OpenPayResource
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
|
-
def cancel(transaction_id,customer_id=nil)
|
14
|
+
def cancel(transaction_id, customer_id=nil)
|
16
15
|
if customer_id
|
17
16
|
customers=@api_hook.create(:customers)
|
18
17
|
customers.cancel_charge(customer_id, transaction_id)
|
19
18
|
else
|
20
|
-
|
21
|
-
|
19
|
+
post('', transaction_id+'/cancel')
|
20
|
+
end
|
22
21
|
end
|
23
22
|
|
24
|
-
|
25
|
-
def refund(transaction_id,description,customer_id=nil)
|
23
|
+
def refund(transaction_id, description, customer_id=nil)
|
26
24
|
if customer_id
|
27
25
|
customers=@api_hook.create(:customers)
|
28
|
-
customers.refund_charge(customer_id,transaction_id,description)
|
26
|
+
customers.refund_charge(customer_id, transaction_id, description)
|
29
27
|
else
|
30
28
|
post(description, transaction_id+'/refund')
|
31
29
|
end
|
32
30
|
end
|
33
31
|
|
34
|
-
|
35
|
-
def capture(transaction_id,customer_id=nil)
|
32
|
+
def capture(transaction_id, customer_id=nil)
|
36
33
|
if customer_id
|
37
34
|
customers=@api_hook.create(:customers)
|
38
|
-
customers.capture_charge(customer_id,transaction_id
|
35
|
+
customers.capture_charge(customer_id, transaction_id)
|
39
36
|
else
|
40
|
-
post(
|
37
|
+
post('', transaction_id+'/capture')
|
41
38
|
end
|
42
39
|
end
|
43
40
|
|
41
|
+
def confirm_capture(options)
|
42
|
+
|
43
|
+
customer_id = options.fetch(:customer_id) { '' }
|
44
|
+
transaction_id = options.fetch(:transaction_id)
|
45
|
+
amount = options.fetch(:amount)
|
46
|
+
|
47
|
+
if amount.nil? or transaction_id.nil?
|
48
|
+
raise OpenpayException.new
|
49
|
+
end
|
50
|
+
|
51
|
+
amount_hash = { amount: amount }
|
52
|
+
|
53
|
+
unless customer_id.empty?
|
54
|
+
customers=@api_hook.create(:customers)
|
55
|
+
customers.confirm_customer_capture(customer_id, transaction_id, amount_hash)
|
56
|
+
else
|
57
|
+
post(amount_hash, transaction_id+'/capture')
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
44
61
|
|
45
62
|
def each(customer_id=nil)
|
46
63
|
if customer_id
|
@@ -54,8 +71,6 @@ class Charges < OpenPayResource
|
|
54
71
|
end
|
55
72
|
end
|
56
73
|
|
57
|
-
|
58
|
-
|
59
74
|
def get(charge='', customer_id=nil)
|
60
75
|
if customer_id
|
61
76
|
customers=@api_hook.create(:customers)
|
@@ -74,4 +89,13 @@ class Charges < OpenPayResource
|
|
74
89
|
end
|
75
90
|
end
|
76
91
|
|
77
|
-
|
92
|
+
def list(search_params, customer_id=nil)
|
93
|
+
if customer_id
|
94
|
+
customers=@api_hook.create(:customers)
|
95
|
+
customers.list_charges(customer_id, search_params)
|
96
|
+
else
|
97
|
+
super search_params
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
data/lib/openpay/customers.rb
CHANGED
@@ -1,16 +1,13 @@
|
|
1
1
|
require 'open_pay_resource'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
3
|
class Customers < OpenPayResource
|
6
4
|
|
7
|
-
|
8
5
|
#Bankaccount
|
9
|
-
def create_bank_account(customer,bank_account)
|
10
|
-
create(bank_account,"#{customer}/bankaccounts")
|
6
|
+
def create_bank_account(customer, bank_account)
|
7
|
+
create(bank_account, "#{customer}/bankaccounts")
|
11
8
|
end
|
12
9
|
|
13
|
-
def get_bank_account(customer,bank_id)
|
10
|
+
def get_bank_account(customer, bank_id)
|
14
11
|
get("#{customer}/bankaccounts/#{bank_id}")
|
15
12
|
end
|
16
13
|
|
@@ -18,89 +15,102 @@ class Customers < OpenPayResource
|
|
18
15
|
get("#{customer}/bankaccounts/")
|
19
16
|
end
|
20
17
|
|
18
|
+
def list_bankaccounts(customer, search_params)
|
19
|
+
get("#{customer}/bankaccounts#{search_params.to_s}")
|
20
|
+
end
|
21
|
+
|
21
22
|
def each_bank_account(customer)
|
22
23
|
get("#{customer}/bankaccounts/").each do |account|
|
23
|
-
|
24
|
+
yield account
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
27
|
-
|
28
|
-
def delete_bank_account(customer,bank_id)
|
28
|
+
def delete_bank_account(customer, bank_id)
|
29
29
|
delete("#{customer}/bankaccounts/#{bank_id}")
|
30
30
|
end
|
31
31
|
|
32
32
|
def delete_all_bank_accounts(customer)
|
33
33
|
if env == :production
|
34
|
-
raise OpenpayException.new('This method is not supported on PRODUCTION',false)
|
34
|
+
raise OpenpayException.new('This method is not supported on PRODUCTION', false)
|
35
35
|
end
|
36
36
|
each_bank_account(customer) do |account|
|
37
37
|
delete("#{customer}/bankaccounts/#{account['id']}")
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
-
|
42
|
-
#Charges
|
41
|
+
#Charges
|
43
42
|
# customers.create_charge(customer_id,charge)
|
44
|
-
def create_charge(customer_id,charge)
|
45
|
-
|
43
|
+
def create_charge(customer_id, charge)
|
44
|
+
create(charge, "#{customer_id}/charges")
|
46
45
|
end
|
47
46
|
|
48
47
|
#gets a charge_id for a given customer_id
|
49
|
-
def get_charge(customer_id,charge_id)
|
48
|
+
def get_charge(customer_id, charge_id)
|
50
49
|
get("#{customer_id}/charges/#{charge_id}")
|
51
50
|
end
|
52
51
|
|
52
|
+
def list_charges(customer, search_params)
|
53
|
+
get("#{customer}/charges#{search_params.to_s}")
|
54
|
+
end
|
55
|
+
|
53
56
|
#return all charges for the given customer_id
|
54
57
|
def all_charges(customer_id)
|
55
58
|
get("#{customer_id}/charges/")
|
56
59
|
end
|
57
60
|
|
58
|
-
def cancel_charge(customer_id,charge_id)
|
59
|
-
post(charge_id,"#{customer_id}/charges/#{charge_id}/cancel")
|
61
|
+
def cancel_charge(customer_id, charge_id)
|
62
|
+
post(charge_id, "#{customer_id}/charges/#{charge_id}/cancel")
|
60
63
|
end
|
61
64
|
|
62
|
-
def refund_charge(customer_id,charge_id,description)
|
63
|
-
post(description,"#{customer_id}/charges/#{charge_id}/refund")
|
65
|
+
def refund_charge(customer_id, charge_id, description)
|
66
|
+
post(description, "#{customer_id}/charges/#{charge_id}/refund")
|
64
67
|
end
|
65
68
|
|
66
|
-
def capture_charge(customer_id,charge_id)
|
67
|
-
|
69
|
+
def capture_charge(customer_id, charge_id)
|
70
|
+
post('', "#{customer_id}/charges/#{charge_id}/capture")
|
68
71
|
end
|
69
72
|
|
70
|
-
|
73
|
+
def confirm_customer_capture(customer_id, charge_id, amount)
|
74
|
+
post(amount, "#{customer_id}/charges/#{charge_id}/capture")
|
75
|
+
end
|
71
76
|
|
72
77
|
#Payouts
|
73
|
-
def create_payout(customer_id,payout)
|
74
|
-
post(payout,"#{customer_id}/payouts")
|
78
|
+
def create_payout(customer_id, payout)
|
79
|
+
post(payout, "#{customer_id}/payouts")
|
75
80
|
end
|
76
81
|
|
77
82
|
def all_payouts(customer_id)
|
78
|
-
|
83
|
+
get("#{customer_id}/payouts")
|
79
84
|
end
|
80
85
|
|
81
|
-
def get_payout(customer_id,payout_id)
|
86
|
+
def get_payout(customer_id, payout_id)
|
82
87
|
get("#{customer_id}/payouts/#{payout_id}")
|
83
88
|
end
|
84
89
|
|
85
90
|
def each_payout(customer_id)
|
86
|
-
|
87
|
-
|
88
|
-
|
91
|
+
all_payouts(customer_id).each do |pay|
|
92
|
+
yield pay
|
93
|
+
end
|
89
94
|
end
|
90
95
|
|
91
|
-
|
92
|
-
|
96
|
+
def list_payouts(customer, search_params)
|
97
|
+
get("#{customer}/payouts#{search_params.to_s}")
|
98
|
+
end
|
93
99
|
|
94
100
|
#Transfers
|
95
|
-
def create_transfer(customer_id,transfer)
|
96
|
-
post(transfer,"#{customer_id}/transfers")
|
101
|
+
def create_transfer(customer_id, transfer)
|
102
|
+
post(transfer, "#{customer_id}/transfers")
|
97
103
|
end
|
98
104
|
|
99
105
|
def all_transfers(customer_id)
|
100
106
|
get("#{customer_id}/transfers/")
|
101
107
|
end
|
102
108
|
|
103
|
-
def
|
109
|
+
def list_transfers(customer, search_params)
|
110
|
+
get("#{customer}/transfers#{search_params.to_s}")
|
111
|
+
end
|
112
|
+
|
113
|
+
def get_transfer(customer_id, transfer_id)
|
104
114
|
get("#{customer_id}/transfers/#{transfer_id}")
|
105
115
|
end
|
106
116
|
|
@@ -110,85 +120,81 @@ class Customers < OpenPayResource
|
|
110
120
|
end
|
111
121
|
end
|
112
122
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
123
|
#Subscriptions
|
117
|
-
def create_subscription(subscription,
|
118
|
-
|
124
|
+
def create_subscription(subscription, customer_id)
|
125
|
+
#revisar la url
|
126
|
+
post(subscription, "#{customer_id}/subscriptions")
|
119
127
|
end
|
120
128
|
|
121
|
-
|
122
|
-
def delete_subscription(customer_id,subscription_id)
|
129
|
+
def delete_subscription(customer_id, subscription_id)
|
123
130
|
delete("#{customer_id}/subscriptions/#{subscription_id}")
|
124
131
|
end
|
125
132
|
|
126
|
-
|
127
|
-
def get_subscription(customer_id,subscription_id)
|
133
|
+
def get_subscription(customer_id, subscription_id)
|
128
134
|
get("#{customer_id}/subscriptions/#{subscription_id}")
|
129
135
|
end
|
130
136
|
|
131
|
-
|
132
137
|
def all_subscriptions(customer_id)
|
133
138
|
get("#{customer_id}/subscriptions/")
|
134
139
|
end
|
135
140
|
|
141
|
+
def list_subscriptions(customer, search_params)
|
142
|
+
get("#{customer}/subscriptions#{search_params.to_s}")
|
143
|
+
end
|
144
|
+
|
136
145
|
def each_subscription(customer_id)
|
137
146
|
all_subscriptions(customer_id).each do |cust|
|
138
|
-
|
147
|
+
yield cust
|
139
148
|
end
|
140
149
|
end
|
141
150
|
|
151
|
+
def update_subscription(subscription, customer, params)
|
152
|
+
put(params, "#{customer}/subscriptions/#{subscription}")
|
153
|
+
end
|
142
154
|
|
143
155
|
def delete_all_subscriptions(customer_id)
|
144
156
|
if env == :production
|
145
|
-
raise
|
157
|
+
raise OpenpayException.new('This method is not supported on PRODUCTION', false)
|
146
158
|
end
|
147
159
|
all_subscriptions(customer_id).each do |sub|
|
148
|
-
delete_subscription(customer_id,sub['id'])
|
160
|
+
delete_subscription(customer_id, sub['id'])
|
149
161
|
end
|
150
162
|
end
|
151
163
|
|
152
|
-
|
153
|
-
|
154
|
-
|
155
164
|
#Card
|
156
|
-
def create_card(customer,card)
|
157
|
-
|
165
|
+
def create_card(customer, card)
|
166
|
+
create(card, "#{customer}/cards")
|
158
167
|
end
|
159
168
|
|
160
|
-
|
161
|
-
def get_card(customer,card_id)
|
169
|
+
def get_card(customer, card_id)
|
162
170
|
get("#{customer}/cards/#{card_id}")
|
163
171
|
end
|
164
172
|
|
165
|
-
|
166
|
-
|
167
|
-
delete("#{customer}/cards/#{card_id}")
|
173
|
+
def delete_card(customer, card_id)
|
174
|
+
delete("#{customer}/cards/#{card_id}")
|
168
175
|
end
|
169
176
|
|
170
|
-
|
171
177
|
def delete_all_cards(customer_id)
|
172
178
|
if env == :production
|
173
|
-
raise
|
179
|
+
raise OpenpayException.new('This method is not supported on PRODUCTION', false)
|
174
180
|
end
|
175
181
|
each_card(customer_id) do |card|
|
176
|
-
delete_card(customer_id,card['id'])
|
182
|
+
delete_card(customer_id, card['id'])
|
177
183
|
end
|
178
184
|
end
|
179
185
|
|
180
|
-
|
181
186
|
def each_card(customer)
|
182
|
-
|
183
|
-
|
184
|
-
|
187
|
+
get("#{customer}/cards").each do |card|
|
188
|
+
yield card
|
189
|
+
end
|
185
190
|
end
|
186
191
|
|
192
|
+
def list_cards(customer, search_params)
|
193
|
+
get("#{customer}/cards#{search_params.to_s}")
|
194
|
+
end
|
187
195
|
|
188
196
|
def all_cards(customer)
|
189
197
|
get("#{customer}/cards")
|
190
198
|
end
|
191
199
|
|
192
|
-
|
193
|
-
|
194
|
-
end
|
200
|
+
end
|
@@ -1,49 +1,43 @@
|
|
1
1
|
class OpenpayExceptionFactory
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
def OpenpayExceptionFactory::create(exception)
|
3
|
+
def OpenpayExceptionFactory::create(exception)
|
6
4
|
|
7
5
|
LOG.warn("An exception has been raised (original exception class: #{exception.class})")
|
8
|
-
LOG.warn("An exception has been raised (original exception class: #{exception.message })")
|
9
|
-
|
10
6
|
|
11
7
|
case exception
|
12
8
|
|
13
9
|
#resource not found
|
14
10
|
#malformed jason, invalid data, invalid request
|
15
|
-
when
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
oe=OpenpayTransactionException.new exception.http_body
|
20
|
-
LOG.warn "-OpenpayTransactionException: #{exception.http_body}"
|
21
|
-
@errors=true
|
22
|
-
raise oe
|
23
|
-
|
11
|
+
when RestClient::BadRequest, RestClient::ResourceNotFound,
|
12
|
+
RestClient::Conflict, RestClient::PaymentRequired,
|
13
|
+
RestClient::UnprocessableEntity
|
24
14
|
|
15
|
+
oe=OpenpayTransactionException.new exception.http_body
|
16
|
+
LOG.warn "-OpenpayTransactionException: #{exception.http_body}"
|
17
|
+
@errors=true
|
18
|
+
raise oe
|
25
19
|
|
26
20
|
#connection, timeouts, network related errors
|
27
|
-
when Errno::EADDRINUSE
|
28
|
-
#since this
|
21
|
+
when Errno::EADDRINUSE, Errno::ETIMEDOUT, OpenSSL::SSL::SSLError
|
22
|
+
#since this exceptions are not based on the rest api exceptions
|
29
23
|
#we do not have the json message so we just build the exception
|
30
24
|
#with the original exception message set in e.description and e.message
|
31
25
|
oe=OpenpayConnectionException.new(exception.message,false)
|
32
26
|
LOG.warn exception.message
|
33
27
|
@errors=true
|
34
|
-
raise
|
28
|
+
raise oe
|
35
29
|
#badgateway-connection error, invalid credentials
|
36
30
|
when RestClient::BadGateway, RestClient::Unauthorized
|
37
31
|
oe=OpenpayConnectionException.new exception.http_body
|
38
32
|
LOG.warn exception.http_body
|
39
33
|
@errors=true
|
40
|
-
raise
|
34
|
+
raise oe
|
41
35
|
|
42
36
|
when RestClient::Exception , RestClient::InternalServerError
|
43
37
|
oe=OpenpayException.new exception.http_body
|
44
38
|
LOG.warn exception.http_body
|
45
39
|
@errors=true
|
46
|
-
|
40
|
+
raise oe
|
47
41
|
else
|
48
42
|
#We won't hide unknown exceptions , those should be raised
|
49
43
|
LOG.warn exception.message
|
@@ -51,10 +45,4 @@ class OpenpayExceptionFactory
|
|
51
45
|
end
|
52
46
|
end
|
53
47
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
end
|
48
|
+
end
|
data/lib/openpay/fees.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
1
|
#This class is the abstract base class for other Openpay resources
|
4
2
|
#This class defines the basic rest verbs making use of the rest-api gem.
|
5
3
|
#Method aliases are created to provide friendly names.
|
@@ -7,21 +5,20 @@ class OpenPayResource
|
|
7
5
|
|
8
6
|
attr_accessor :api_hook
|
9
7
|
|
10
|
-
def initialize(merchant_id,private_key,production=false)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
8
|
+
def initialize(merchant_id, private_key, production=false)
|
9
|
+
@merchant_id=merchant_id
|
10
|
+
@private_key=private_key
|
11
|
+
#assigns base url depending the requested env
|
12
|
+
@base_url=OpenpayApi::base_url(production)
|
13
|
+
@errors=false
|
16
14
|
@production=production
|
17
15
|
@timeout=90
|
18
|
-
|
16
|
+
#created resources should have a hook with the base class to keep control of created resources
|
19
17
|
@api_hook=nil
|
20
18
|
end
|
21
19
|
|
22
|
-
|
23
20
|
#returns the env set
|
24
|
-
def
|
21
|
+
def env
|
25
22
|
if @production
|
26
23
|
:production
|
27
24
|
else
|
@@ -31,12 +28,11 @@ class OpenPayResource
|
|
31
28
|
|
32
29
|
#errors on last call
|
33
30
|
def errors?
|
34
|
-
|
31
|
+
@errors
|
35
32
|
end
|
36
33
|
|
37
|
-
|
38
|
-
|
39
|
-
@base_url+ "#{@merchant_id}/"+ self.class.name.to_s.downcase+"/"+args
|
34
|
+
def list(search_params)
|
35
|
+
get(search_params.to_s)
|
40
36
|
end
|
41
37
|
|
42
38
|
def each
|
@@ -48,7 +44,7 @@ class OpenPayResource
|
|
48
44
|
def delete_all
|
49
45
|
|
50
46
|
if env == :production
|
51
|
-
raise OpenpayException.new('delete_all method cannot be used on production',false)
|
47
|
+
raise OpenpayException.new('delete_all method cannot be used on production', false)
|
52
48
|
end
|
53
49
|
|
54
50
|
each do |res|
|
@@ -59,13 +55,18 @@ class OpenPayResource
|
|
59
55
|
|
60
56
|
def get(args='')
|
61
57
|
|
62
|
-
@errors=false
|
58
|
+
@errors = false
|
59
|
+
terminated = true
|
63
60
|
|
64
|
-
|
65
|
-
|
61
|
+
if is_filter_string?(args)
|
62
|
+
terminated = false
|
63
|
+
end
|
64
|
+
|
65
|
+
LOG.debug("#{resource_name}:")
|
66
|
+
LOG.debug(" GET Resource URL:#{url(args, terminated)}")
|
66
67
|
res=RestClient::Request.new(
|
67
68
|
:method => :get,
|
68
|
-
:url => url(args),
|
69
|
+
:url => url(args, terminated),
|
69
70
|
:user => @private_key,
|
70
71
|
:timeout => @timeout,
|
71
72
|
:headers => {:accept => :json,
|
@@ -76,7 +77,7 @@ class OpenPayResource
|
|
76
77
|
json_out=nil
|
77
78
|
begin
|
78
79
|
json_out=res.execute
|
79
|
-
|
80
|
+
#exceptions
|
80
81
|
rescue Exception => e
|
81
82
|
@errors=true
|
82
83
|
#will raise the appropriate exception and return
|
@@ -87,42 +88,39 @@ class OpenPayResource
|
|
87
88
|
|
88
89
|
end
|
89
90
|
|
90
|
-
|
91
|
+
def delete(args)
|
91
92
|
|
92
|
-
|
93
|
+
@errors=false
|
93
94
|
|
94
|
-
|
95
|
-
|
95
|
+
LOG.debug("#{self.class.name.downcase}:")
|
96
|
+
LOG.debug(" DELETE URL:#{url(args)}")
|
96
97
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
98
|
+
res=''
|
99
|
+
req=RestClient::Request.new(
|
100
|
+
:method => :delete,
|
101
|
+
:url => url(args),
|
102
|
+
:user => @private_key,
|
103
|
+
:timeout => @timeout,
|
104
|
+
:headers => {:accept => :json,
|
105
|
+
:content_type => :json,
|
106
|
+
:user_agent => 'Openpay/v1 Ruby-API',
|
107
|
+
}
|
108
|
+
)
|
108
109
|
|
109
|
-
|
110
|
+
begin
|
110
111
|
res=req.execute
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
112
|
+
#exceptions
|
113
|
+
rescue Exception => e
|
114
|
+
@errors=true
|
115
|
+
#will raise the appropriate exception and return
|
116
|
+
OpenpayExceptionFactory::create(e)
|
117
|
+
end
|
118
118
|
#returns a hash
|
119
|
-
|
120
|
-
|
121
|
-
end
|
119
|
+
JSON[res] if not res.empty?
|
120
|
+
end
|
122
121
|
|
123
|
-
def post(message,args='')
|
122
|
+
def post(message, args='')
|
124
123
|
|
125
|
-
return_hash=false
|
126
124
|
@errors=false
|
127
125
|
|
128
126
|
if message.is_a?(Hash)
|
@@ -133,17 +131,16 @@ class OpenPayResource
|
|
133
131
|
return_hash=false
|
134
132
|
end
|
135
133
|
|
136
|
-
LOG.debug("#{self.class.name.downcase}:")
|
137
|
-
|
138
|
-
|
139
|
-
#LOG.debug " json: #{json}"
|
134
|
+
# LOG.debug("#{self.class.name.downcase}:")
|
135
|
+
LOG.debug " POST URL:#{url(args)}"
|
136
|
+
LOG.debug " json: #{json}"
|
140
137
|
|
141
138
|
begin
|
142
139
|
|
143
|
-
|
144
|
-
|
140
|
+
#request
|
141
|
+
res= RestClient::Request.new(
|
145
142
|
:method => :post,
|
146
|
-
:url => url(args)
|
143
|
+
:url => url(args),
|
147
144
|
:user => @private_key,
|
148
145
|
:timeout => @timeout,
|
149
146
|
:payload => json,
|
@@ -151,9 +148,9 @@ class OpenPayResource
|
|
151
148
|
:content_type => :json,
|
152
149
|
:user_agent => 'Openpay/v1 Ruby-API',
|
153
150
|
:json => json}
|
154
|
-
)
|
151
|
+
).execute
|
155
152
|
|
156
|
-
|
153
|
+
#exceptions
|
157
154
|
rescue Exception => e
|
158
155
|
@errors=true
|
159
156
|
#will raise the appropriate exception and return
|
@@ -169,9 +166,7 @@ class OpenPayResource
|
|
169
166
|
|
170
167
|
end
|
171
168
|
|
172
|
-
|
173
|
-
|
174
|
-
def put (message,args='')
|
169
|
+
def put(message, args='')
|
175
170
|
|
176
171
|
return_hash=false
|
177
172
|
|
@@ -183,7 +178,6 @@ class OpenPayResource
|
|
183
178
|
return_hash=false
|
184
179
|
end
|
185
180
|
|
186
|
-
|
187
181
|
LOG.info "PUT URL:#{url}"
|
188
182
|
#LOG.info " json: #{json}"
|
189
183
|
|
@@ -198,29 +192,25 @@ class OpenPayResource
|
|
198
192
|
:content_type => :json,
|
199
193
|
:user_agent => 'Openpay/v1 Ruby-API',
|
200
194
|
:json => json}
|
201
|
-
)
|
202
|
-
rescue
|
195
|
+
).execute
|
196
|
+
rescue RestClient::BadRequest => e
|
203
197
|
warn e.http_body
|
204
198
|
@errors=true
|
205
|
-
return JSON.parse
|
199
|
+
return JSON.parse e.http_body
|
206
200
|
end
|
207
201
|
|
208
|
-
|
209
202
|
if return_hash
|
210
|
-
|
203
|
+
JSON.parse res
|
211
204
|
else
|
212
|
-
|
205
|
+
res
|
213
206
|
end
|
214
207
|
|
215
208
|
end
|
216
209
|
|
217
|
-
|
218
210
|
#aliases for rest verbs
|
219
211
|
alias_method :all, :get
|
220
|
-
alias_method :list, :get
|
221
212
|
alias_method :update, :put
|
222
|
-
alias_method
|
223
|
-
|
213
|
+
alias_method :create, :post
|
224
214
|
|
225
215
|
def hash2json(jash)
|
226
216
|
JSON.generate(jash)
|
@@ -230,13 +220,23 @@ class OpenPayResource
|
|
230
220
|
JSON[json]
|
231
221
|
end
|
232
222
|
|
223
|
+
private
|
233
224
|
|
234
|
-
|
235
|
-
|
236
|
-
@base_url+"#{@merchant_id}/"+
|
225
|
+
def url(args = '', terminated = true)
|
226
|
+
termination = terminated ? '/' : ''
|
227
|
+
@base_url + "#{@merchant_id}/" + resource_name + termination + args
|
237
228
|
end
|
238
229
|
|
230
|
+
def resource_name
|
231
|
+
self.class.name.to_s.downcase
|
232
|
+
end
|
239
233
|
|
234
|
+
def is_filter_string?(args)
|
235
|
+
is_filter = false
|
236
|
+
if args =~ /^\?/
|
237
|
+
is_filter = true
|
238
|
+
end
|
239
|
+
is_filter
|
240
|
+
end
|
240
241
|
|
241
|
-
|
242
|
-
end
|
242
|
+
end
|