pagarme 2.0.2 → 2.1.0
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 +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +3 -2
- data/README.md +285 -4
- data/Rakefile +16 -19
- data/lib/pagarme.rb +17 -32
- data/lib/pagarme/core_ext.rb +9 -0
- data/lib/pagarme/errors.rb +39 -25
- data/lib/pagarme/model.rb +40 -45
- data/lib/pagarme/nested_model.rb +56 -0
- data/lib/pagarme/object.rb +133 -92
- data/lib/pagarme/request.rb +96 -46
- data/lib/pagarme/resources/address.rb +4 -0
- data/lib/pagarme/resources/antifraud_analysis.rb +4 -0
- data/lib/pagarme/resources/balance.rb +24 -0
- data/lib/pagarme/resources/balance_operation.rb +37 -0
- data/lib/pagarme/resources/bank_account.rb +4 -0
- data/lib/pagarme/resources/bulk_anticipation.rb +65 -0
- data/lib/pagarme/resources/card.rb +4 -0
- data/lib/pagarme/resources/company.rb +28 -0
- data/lib/pagarme/{customer.rb → resources/customer.rb} +0 -0
- data/lib/pagarme/resources/payable.rb +11 -0
- data/lib/pagarme/resources/phone.rb +4 -0
- data/lib/pagarme/{plan.rb → resources/plan.rb} +0 -2
- data/lib/pagarme/resources/postal_code.rb +15 -0
- data/lib/pagarme/resources/postback.rb +15 -0
- data/lib/pagarme/resources/recipient.rb +32 -0
- data/lib/pagarme/resources/split_rule.rb +4 -0
- data/lib/pagarme/resources/subscription.rb +43 -0
- data/lib/pagarme/resources/transaction.rb +41 -0
- data/lib/pagarme/{transfer.rb → resources/transfer.rb} +0 -3
- data/lib/pagarme/{phone.rb → resources/user.rb} +1 -1
- data/lib/pagarme/transaction_common.rb +39 -42
- data/lib/pagarme/version.rb +3 -0
- data/pagarme.gemspec +16 -13
- data/test/assertions.rb +195 -0
- data/test/fixtures.rb +222 -0
- data/test/pagarme/error_test.rb +13 -0
- data/test/pagarme/object_test.rb +19 -0
- data/test/pagarme/pagarme_test.rb +10 -0
- data/test/pagarme/resources/balance_test.rb +46 -0
- data/test/pagarme/resources/bank_account_test.rb +35 -0
- data/test/pagarme/resources/bulk_anticipation_test.rb +72 -0
- data/test/pagarme/resources/card_test.rb +22 -0
- data/test/pagarme/resources/payable_test.rb +30 -0
- data/test/pagarme/resources/plan_test.rb +57 -0
- data/test/pagarme/resources/postback_test.rb +18 -0
- data/test/pagarme/resources/recipient_test.rb +41 -0
- data/test/pagarme/resources/subscription_test.rb +100 -0
- data/test/pagarme/resources/transaction_test.rb +221 -0
- data/test/pagarme/resources/transfer_test.rb +23 -0
- data/test/pagarme/resources/zipcode_test.rb +15 -0
- data/test/test_helper.rb +52 -175
- metadata +102 -30
- data/lib/pagarme/address.rb +0 -4
- data/lib/pagarme/bank_account.rb +0 -9
- data/lib/pagarme/card.rb +0 -7
- data/lib/pagarme/subscription.rb +0 -43
- data/lib/pagarme/transaction.rb +0 -33
- data/lib/pagarme/util.rb +0 -78
- data/pagarme.rb +0 -12
- data/test/pagarme/bank_account.rb +0 -46
- data/test/pagarme/card.rb +0 -26
- data/test/pagarme/object.rb +0 -29
- data/test/pagarme/pagarme.rb +0 -10
- data/test/pagarme/plan.rb +0 -70
- data/test/pagarme/subscription.rb +0 -123
- data/test/pagarme/transaction.rb +0 -215
- data/test/pagarme/transfer.rb +0 -42
data/test/pagarme/pagarme.rb
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require_relative '../test_helper'
|
3
|
-
|
4
|
-
module PagarMe
|
5
|
-
class PagarMeTest < Test::Unit::TestCase
|
6
|
-
should 'validate fingerprint correctly' do
|
7
|
-
assert PagarMe::validate_fingerprint(123, Digest::SHA1.hexdigest( "123" + "#" + PagarMe::api_key)) == true
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
data/test/pagarme/plan.rb
DELETED
@@ -1,70 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require_relative '../test_helper'
|
3
|
-
|
4
|
-
module PagarMe
|
5
|
-
class PlanTest < Test::Unit::TestCase
|
6
|
-
should 'be able to create a plan' do
|
7
|
-
plan = test_plan
|
8
|
-
plan.create
|
9
|
-
test_plan_response(plan)
|
10
|
-
end
|
11
|
-
|
12
|
-
should 'be able to update plan' do
|
13
|
-
plan = test_plan
|
14
|
-
plan.create
|
15
|
-
plan.name = "plano silver"
|
16
|
-
plan.save
|
17
|
-
assert plan.name == 'plano silver'
|
18
|
-
end
|
19
|
-
|
20
|
-
should 'be able to search by anything' do
|
21
|
-
plan = test_plan
|
22
|
-
plan.create
|
23
|
-
|
24
|
-
plans = PagarMe::Plan.find_by({:trial_days => 5})
|
25
|
-
|
26
|
-
assert plans.size
|
27
|
-
plans.each do |p|
|
28
|
-
assert p.trial_days == 5
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
should 'validate plan' do
|
33
|
-
exception = assert_raises PagarMeError do
|
34
|
-
plan = Plan.new({
|
35
|
-
:amount => -1
|
36
|
-
})
|
37
|
-
plan.create
|
38
|
-
end
|
39
|
-
assert exception.errors.first.parameter_name == 'amount'
|
40
|
-
exception = assert_raises PagarMeError do
|
41
|
-
plan = Plan.new({
|
42
|
-
:amount => 1000,
|
43
|
-
:days => -1,
|
44
|
-
})
|
45
|
-
plan.create
|
46
|
-
end
|
47
|
-
assert exception.errors.first.parameter_name == 'days'
|
48
|
-
|
49
|
-
exception = assert_raises PagarMeError do
|
50
|
-
plan = Plan.new({
|
51
|
-
:amount => 1000,
|
52
|
-
:days => 30,
|
53
|
-
})
|
54
|
-
plan.create
|
55
|
-
end
|
56
|
-
assert exception.errors.first.parameter_name == 'name'
|
57
|
-
exception = assert_raises PagarMeError do
|
58
|
-
plan = Plan.new({
|
59
|
-
:amount => 1000,
|
60
|
-
:days => 30,
|
61
|
-
:name => "Plano Silver"
|
62
|
-
})
|
63
|
-
plan.create
|
64
|
-
plan.days = 'Plano gold'
|
65
|
-
plan.save
|
66
|
-
end
|
67
|
-
assert exception.errors.first.parameter_name == 'days'
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,123 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require_relative '../test_helper'
|
3
|
-
|
4
|
-
module PagarMe
|
5
|
-
class SubscriptionTest < Test::Unit::TestCase
|
6
|
-
should 'be able to create subscription with plan' do
|
7
|
-
plan = test_plan
|
8
|
-
plan.create
|
9
|
-
subscription = test_subscription
|
10
|
-
subscription.plan = plan
|
11
|
-
subscription.create
|
12
|
-
test_plan_response(subscription.plan)
|
13
|
-
test_transaction_with_customer(subscription)
|
14
|
-
end
|
15
|
-
|
16
|
-
should 'be able to create subscription with plan and unsaved card' do
|
17
|
-
plan = test_plan
|
18
|
-
plan.create
|
19
|
-
|
20
|
-
card = test_card
|
21
|
-
|
22
|
-
subscription = PagarMe::Subscription.new({
|
23
|
-
:postback_url => 'http://test.com/postback',
|
24
|
-
:payment_method => 'credit_card',
|
25
|
-
:card => card,
|
26
|
-
:plan => plan,
|
27
|
-
:customer => {
|
28
|
-
:email => 'customer@pagar.me'
|
29
|
-
}
|
30
|
-
})
|
31
|
-
subscription.create
|
32
|
-
|
33
|
-
assert subscription.id
|
34
|
-
assert subscription.plan.id == plan.id
|
35
|
-
end
|
36
|
-
|
37
|
-
should 'be able to create subscription with plan and saved card' do
|
38
|
-
plan = test_plan
|
39
|
-
plan.create
|
40
|
-
|
41
|
-
card = test_card
|
42
|
-
card.create
|
43
|
-
|
44
|
-
subscription = PagarMe::Subscription.new({
|
45
|
-
:postback_url => 'http://test.com/postback',
|
46
|
-
:payment_method => 'credit_card',
|
47
|
-
:card => card,
|
48
|
-
:plan => plan,
|
49
|
-
:customer => {
|
50
|
-
:email => 'customer@pagar.me'
|
51
|
-
}
|
52
|
-
})
|
53
|
-
subscription.create
|
54
|
-
|
55
|
-
assert subscription.id
|
56
|
-
assert subscription.plan.id == plan.id
|
57
|
-
end
|
58
|
-
|
59
|
-
should 'be able to create subscription without plan' do
|
60
|
-
subscription = test_subscription({:amount => 2000})
|
61
|
-
subscription.create
|
62
|
-
assert subscription.current_transaction.amount == 2000
|
63
|
-
subscription.charge(2000)
|
64
|
-
assert subscription.current_transaction.kind_of?(PagarMe::Transaction)
|
65
|
-
test_subscription_transaction_response(subscription.current_transaction)
|
66
|
-
end
|
67
|
-
|
68
|
-
should 'be able to create subscription without plan and charge with installments' do
|
69
|
-
subscription = test_subscription({:amount => 2000, :installments => 6})
|
70
|
-
subscription.create
|
71
|
-
# assert subscription.current_transaction.amount == 2000
|
72
|
-
# assert subscription.current_transaction.installments == 6
|
73
|
-
subscription.charge(1500, 3)
|
74
|
-
assert subscription.current_transaction.kind_of?(PagarMe::Transaction)
|
75
|
-
test_subscription_transaction_response(subscription.current_transaction, 1500, 3)
|
76
|
-
end
|
77
|
-
|
78
|
-
should 'be able to update subscription' do
|
79
|
-
subscription = test_subscription
|
80
|
-
subscription.create
|
81
|
-
subscription.payment_method = 'boleto'
|
82
|
-
subscription.save
|
83
|
-
|
84
|
-
subscription2 = PagarMe::Subscription.find_by_id(subscription.id)
|
85
|
-
assert subscription2.payment_method == 'boleto'
|
86
|
-
end
|
87
|
-
|
88
|
-
should 'be able to change plans' do
|
89
|
-
subscription = test_subscription
|
90
|
-
plan = test_plan
|
91
|
-
plan.create
|
92
|
-
|
93
|
-
plan2 = PagarMe::Plan.new({
|
94
|
-
:name => "Plano Silver",
|
95
|
-
:days => 30,
|
96
|
-
:amount => 3000
|
97
|
-
});
|
98
|
-
plan2.create
|
99
|
-
|
100
|
-
subscription.plan = plan
|
101
|
-
subscription.create
|
102
|
-
|
103
|
-
assert subscription.plan.id == plan.id
|
104
|
-
subscription.plan = plan2
|
105
|
-
subscription.save
|
106
|
-
|
107
|
-
assert subscription.plan.id == plan2.id
|
108
|
-
end
|
109
|
-
|
110
|
-
should 'be able to cancel a subscription' do
|
111
|
-
subscription = test_subscription
|
112
|
-
plan = test_plan
|
113
|
-
plan.create
|
114
|
-
|
115
|
-
subscription.plan = plan
|
116
|
-
subscription.create
|
117
|
-
|
118
|
-
subscription.cancel
|
119
|
-
|
120
|
-
assert subscription.status == 'canceled'
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
data/test/pagarme/transaction.rb
DELETED
@@ -1,215 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require_relative '../test_helper'
|
3
|
-
|
4
|
-
module PagarMe
|
5
|
-
class TransactionTest < Test::Unit::TestCase
|
6
|
-
should 'be able to charge' do
|
7
|
-
transaction = test_transaction
|
8
|
-
assert transaction.status == 'local'
|
9
|
-
transaction.charge
|
10
|
-
assert transaction.status == 'paid'
|
11
|
-
test_transaction_response(transaction)
|
12
|
-
end
|
13
|
-
|
14
|
-
should 'be able to charge with a saved card' do
|
15
|
-
card = test_card
|
16
|
-
card.create
|
17
|
-
|
18
|
-
transaction = PagarMe::Transaction.new({
|
19
|
-
:card => card,
|
20
|
-
:amount => 1000,
|
21
|
-
:payment_method => 'credit_card'
|
22
|
-
})
|
23
|
-
|
24
|
-
transaction.charge
|
25
|
-
assert transaction.status == 'paid'
|
26
|
-
end
|
27
|
-
|
28
|
-
should 'be able to charge with an unsaved card' do
|
29
|
-
card = test_card
|
30
|
-
transaction = PagarMe::Transaction.new({
|
31
|
-
:card => card,
|
32
|
-
:amount => 1000,
|
33
|
-
:payment_method => 'credit_card'
|
34
|
-
})
|
35
|
-
|
36
|
-
transaction.charge
|
37
|
-
assert transaction.status == 'paid'
|
38
|
-
end
|
39
|
-
|
40
|
-
should 'return a card object' do
|
41
|
-
transaction = test_transaction
|
42
|
-
transaction.create
|
43
|
-
assert transaction.card.id
|
44
|
-
assert transaction.card.first_digits == '490172'
|
45
|
-
assert transaction.card.last_digits == '4448'
|
46
|
-
end
|
47
|
-
|
48
|
-
should 'be able to refund' do
|
49
|
-
transaction = test_transaction
|
50
|
-
transaction.charge
|
51
|
-
test_transaction_response(transaction)
|
52
|
-
transaction.refund
|
53
|
-
assert transaction.status == 'refunded'
|
54
|
-
end
|
55
|
-
|
56
|
-
should 'be able to create transaciton with boleto' do
|
57
|
-
transaction = PagarMe::Transaction.new({
|
58
|
-
:payment_method => "boleto",
|
59
|
-
:amount => "1000"
|
60
|
-
})
|
61
|
-
transaction.charge
|
62
|
-
|
63
|
-
assert transaction.payment_method == 'boleto'
|
64
|
-
assert transaction.status == 'waiting_payment'
|
65
|
-
assert transaction.amount.to_s == '1000'
|
66
|
-
end
|
67
|
-
|
68
|
-
should 'be able to send metadata' do
|
69
|
-
transaction = test_transaction
|
70
|
-
transaction.metadata = {event: {:name => "Evento foda", :id => 335}}
|
71
|
-
transaction.charge
|
72
|
-
assert transaction.metadata
|
73
|
-
|
74
|
-
transaction2 = PagarMe::Transaction.find_by_id(transaction.id)
|
75
|
-
assert transaction2.metadata.event.id.to_i == 335
|
76
|
-
assert transaction2.metadata.event.name == "Evento foda"
|
77
|
-
end
|
78
|
-
|
79
|
-
should 'be able to find a transaction' do
|
80
|
-
transaction = test_transaction
|
81
|
-
transaction.charge
|
82
|
-
test_transaction_response(transaction)
|
83
|
-
|
84
|
-
transaction_2 = PagarMe::Transaction.find_by_id(transaction.id)
|
85
|
-
assert transaction_2.id == transaction.id
|
86
|
-
end
|
87
|
-
|
88
|
-
should 'accept parameters on the refund' do
|
89
|
-
transaction = PagarMe::Transaction.new({
|
90
|
-
:payment_method => 'boleto',
|
91
|
-
:amount => '1000'
|
92
|
-
})
|
93
|
-
|
94
|
-
transaction2 = PagarMe::Transaction.new({
|
95
|
-
:payment_method => 'boleto',
|
96
|
-
:amount => '1000'
|
97
|
-
})
|
98
|
-
|
99
|
-
transaction.charge
|
100
|
-
transaction2.charge
|
101
|
-
|
102
|
-
transaction.status = 'paid'
|
103
|
-
transaction.save
|
104
|
-
|
105
|
-
transaction2.status = 'paid'
|
106
|
-
transaction2.save
|
107
|
-
|
108
|
-
transaction.refund({bank_account: {:bank_code => '399', :agencia => '1234', :conta => '1234567', :conta_dv => '1', :legal_name => 'Jose da silva', :document_number => '68782915423'}})
|
109
|
-
assert transaction.status == 'pending_refund'
|
110
|
-
end
|
111
|
-
|
112
|
-
should 'be able to create transaction with customer' do
|
113
|
-
transaction = test_transaction_with_customer
|
114
|
-
transaction.charge
|
115
|
-
test_transaction_response(transaction)
|
116
|
-
assert transaction.address.class == Address
|
117
|
-
assert transaction.address.street== 'Av. Brigadeiro Faria Lima'
|
118
|
-
assert transaction.customer.class == Customer
|
119
|
-
test_customer_response(transaction.customer)
|
120
|
-
assert transaction.customer.email = "henrique+test@pagar.me"
|
121
|
-
end
|
122
|
-
|
123
|
-
should 'be able to refund transaction with customer' do
|
124
|
-
transaction = test_transaction_with_customer
|
125
|
-
transaction.charge
|
126
|
-
test_transaction_response(transaction)
|
127
|
-
assert transaction.customer.class == Customer
|
128
|
-
test_customer_response(transaction.customer)
|
129
|
-
transaction.refund
|
130
|
-
|
131
|
-
assert transaction.status == 'refunded'
|
132
|
-
end
|
133
|
-
|
134
|
-
should 'be able to capture a transaction and pass an amount' do
|
135
|
-
transaction = test_transaction({:capture => false})
|
136
|
-
transaction.charge
|
137
|
-
assert transaction.status == 'authorized'
|
138
|
-
transaction.capture({:amount => 1000})
|
139
|
-
assert transaction.status == 'paid'
|
140
|
-
assert transaction.amount == 1000
|
141
|
-
end
|
142
|
-
|
143
|
-
should 'validate invalid transaction' do
|
144
|
-
|
145
|
-
#Test invalid card_number
|
146
|
-
exception = assert_raises PagarMeError do
|
147
|
-
transaction = PagarMe::Transaction.new({
|
148
|
-
:amount => "1000",
|
149
|
-
:card_number => '123456',
|
150
|
-
:card_holder_name => "Jose da Silva",
|
151
|
-
})
|
152
|
-
transaction.charge
|
153
|
-
end
|
154
|
-
assert exception.errors.first.parameter_name == 'card_number'
|
155
|
-
|
156
|
-
#Test missing card_holder_name
|
157
|
-
exception = assert_raises PagarMeError do
|
158
|
-
transaction = PagarMe::Transaction.new({
|
159
|
-
:card_number => '4111111111111111',
|
160
|
-
:amount => "1000",
|
161
|
-
})
|
162
|
-
transaction.charge
|
163
|
-
end
|
164
|
-
assert exception.errors.first.parameter_name == 'card_holder_name'
|
165
|
-
|
166
|
-
#Test invalid expiracy month
|
167
|
-
exception = assert_raises PagarMeError do
|
168
|
-
transaction = PagarMe::Transaction.new({
|
169
|
-
:card_number => '4111111111111111',
|
170
|
-
:card_holder_name => "Jose da Silva",
|
171
|
-
:amount => "1000",
|
172
|
-
:card_expiracy_month => 15
|
173
|
-
})
|
174
|
-
transaction.charge
|
175
|
-
end
|
176
|
-
assert exception.errors.first.parameter_name == 'card_expiration_date'
|
177
|
-
|
178
|
-
#Test invalid expiracy year
|
179
|
-
exception = assert_raises PagarMeError do
|
180
|
-
transaction = PagarMe::Transaction.new({
|
181
|
-
:card_number => '4111111111111111',
|
182
|
-
:card_holder_name => "Jose da Silva",
|
183
|
-
:amount => "1000",
|
184
|
-
:card_expiration_month => 12,
|
185
|
-
:card_expiration_year => -1,
|
186
|
-
})
|
187
|
-
transaction.charge
|
188
|
-
end
|
189
|
-
assert exception.errors.first.parameter_name == 'card_expiration_date'
|
190
|
-
|
191
|
-
#Test invalid expiracy year
|
192
|
-
exception = assert_raises PagarMeError do
|
193
|
-
transaction = PagarMe::Transaction.new({
|
194
|
-
:card_number => '4111111111111111',
|
195
|
-
:card_holder_name => "Jose da Silva",
|
196
|
-
:amount => "1000",
|
197
|
-
:card_expiration_month => 12,
|
198
|
-
:card_expiration_year => 16,
|
199
|
-
})
|
200
|
-
transaction.charge
|
201
|
-
end
|
202
|
-
assert exception.errors.first.parameter_name == 'card_cvv'
|
203
|
-
end
|
204
|
-
|
205
|
-
should 'calculate installments' do
|
206
|
-
installments_result = PagarMe::Transaction.calculate_installments({
|
207
|
-
amount: 10000,
|
208
|
-
interest_rate: 0
|
209
|
-
})
|
210
|
-
|
211
|
-
assert installments_result['installments'].size == 12
|
212
|
-
assert installments_result['installments']['2']['installment_amount'] == 5000
|
213
|
-
end
|
214
|
-
end
|
215
|
-
end
|
data/test/pagarme/transfer.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require_relative '../test_helper'
|
3
|
-
|
4
|
-
module PagarMe
|
5
|
-
class TransferTest < Test::Unit::TestCase
|
6
|
-
def setup
|
7
|
-
super
|
8
|
-
|
9
|
-
t = PagarMe::Transaction.new({
|
10
|
-
:payment_method => 'boleto',
|
11
|
-
:amount => 10000
|
12
|
-
})
|
13
|
-
|
14
|
-
t.charge
|
15
|
-
t.status = 'paid'
|
16
|
-
t.save
|
17
|
-
end
|
18
|
-
|
19
|
-
should 'be able to create a transfer' do
|
20
|
-
transfer = test_transfer
|
21
|
-
transfer.create
|
22
|
-
|
23
|
-
assert transfer.id != nil
|
24
|
-
assert transfer.fee != nil
|
25
|
-
assert transfer.object == "transfer"
|
26
|
-
assert %w(doc credito_em_conta ted).include?(transfer.type)
|
27
|
-
end
|
28
|
-
|
29
|
-
should 'be able to find with id' do
|
30
|
-
transfer_r = test_transfer
|
31
|
-
transfer_r.create
|
32
|
-
|
33
|
-
transfer = PagarMe::Transfer.find_by_id transfer_r.id
|
34
|
-
|
35
|
-
assert transfer.id != nil
|
36
|
-
assert transfer.fee != nil
|
37
|
-
assert transfer.object == "transfer"
|
38
|
-
assert %w(doc credito_em_conta ted).include?(transfer.type)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|