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.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +3 -2
  4. data/README.md +285 -4
  5. data/Rakefile +16 -19
  6. data/lib/pagarme.rb +17 -32
  7. data/lib/pagarme/core_ext.rb +9 -0
  8. data/lib/pagarme/errors.rb +39 -25
  9. data/lib/pagarme/model.rb +40 -45
  10. data/lib/pagarme/nested_model.rb +56 -0
  11. data/lib/pagarme/object.rb +133 -92
  12. data/lib/pagarme/request.rb +96 -46
  13. data/lib/pagarme/resources/address.rb +4 -0
  14. data/lib/pagarme/resources/antifraud_analysis.rb +4 -0
  15. data/lib/pagarme/resources/balance.rb +24 -0
  16. data/lib/pagarme/resources/balance_operation.rb +37 -0
  17. data/lib/pagarme/resources/bank_account.rb +4 -0
  18. data/lib/pagarme/resources/bulk_anticipation.rb +65 -0
  19. data/lib/pagarme/resources/card.rb +4 -0
  20. data/lib/pagarme/resources/company.rb +28 -0
  21. data/lib/pagarme/{customer.rb → resources/customer.rb} +0 -0
  22. data/lib/pagarme/resources/payable.rb +11 -0
  23. data/lib/pagarme/resources/phone.rb +4 -0
  24. data/lib/pagarme/{plan.rb → resources/plan.rb} +0 -2
  25. data/lib/pagarme/resources/postal_code.rb +15 -0
  26. data/lib/pagarme/resources/postback.rb +15 -0
  27. data/lib/pagarme/resources/recipient.rb +32 -0
  28. data/lib/pagarme/resources/split_rule.rb +4 -0
  29. data/lib/pagarme/resources/subscription.rb +43 -0
  30. data/lib/pagarme/resources/transaction.rb +41 -0
  31. data/lib/pagarme/{transfer.rb → resources/transfer.rb} +0 -3
  32. data/lib/pagarme/{phone.rb → resources/user.rb} +1 -1
  33. data/lib/pagarme/transaction_common.rb +39 -42
  34. data/lib/pagarme/version.rb +3 -0
  35. data/pagarme.gemspec +16 -13
  36. data/test/assertions.rb +195 -0
  37. data/test/fixtures.rb +222 -0
  38. data/test/pagarme/error_test.rb +13 -0
  39. data/test/pagarme/object_test.rb +19 -0
  40. data/test/pagarme/pagarme_test.rb +10 -0
  41. data/test/pagarme/resources/balance_test.rb +46 -0
  42. data/test/pagarme/resources/bank_account_test.rb +35 -0
  43. data/test/pagarme/resources/bulk_anticipation_test.rb +72 -0
  44. data/test/pagarme/resources/card_test.rb +22 -0
  45. data/test/pagarme/resources/payable_test.rb +30 -0
  46. data/test/pagarme/resources/plan_test.rb +57 -0
  47. data/test/pagarme/resources/postback_test.rb +18 -0
  48. data/test/pagarme/resources/recipient_test.rb +41 -0
  49. data/test/pagarme/resources/subscription_test.rb +100 -0
  50. data/test/pagarme/resources/transaction_test.rb +221 -0
  51. data/test/pagarme/resources/transfer_test.rb +23 -0
  52. data/test/pagarme/resources/zipcode_test.rb +15 -0
  53. data/test/test_helper.rb +52 -175
  54. metadata +102 -30
  55. data/lib/pagarme/address.rb +0 -4
  56. data/lib/pagarme/bank_account.rb +0 -9
  57. data/lib/pagarme/card.rb +0 -7
  58. data/lib/pagarme/subscription.rb +0 -43
  59. data/lib/pagarme/transaction.rb +0 -33
  60. data/lib/pagarme/util.rb +0 -78
  61. data/pagarme.rb +0 -12
  62. data/test/pagarme/bank_account.rb +0 -46
  63. data/test/pagarme/card.rb +0 -26
  64. data/test/pagarme/object.rb +0 -29
  65. data/test/pagarme/pagarme.rb +0 -10
  66. data/test/pagarme/plan.rb +0 -70
  67. data/test/pagarme/subscription.rb +0 -123
  68. data/test/pagarme/transaction.rb +0 -215
  69. data/test/pagarme/transfer.rb +0 -42
@@ -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
@@ -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
@@ -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
@@ -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
-