pagarme 2.0.2 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -0,0 +1,24 @@
|
|
1
|
+
module PagarMe
|
2
|
+
class Balance < PagarMeObject
|
3
|
+
|
4
|
+
class << self
|
5
|
+
def url(recipient_id = nil)
|
6
|
+
if recipient_id
|
7
|
+
"/recipients/#{recipient_id}/balance"
|
8
|
+
else
|
9
|
+
'/balance'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def balance
|
14
|
+
PagarMe::Request.get(url).call
|
15
|
+
end
|
16
|
+
|
17
|
+
def find_by_recipient_id(recipient_id = nil)
|
18
|
+
raise RequestError.new('Invalid ID') unless recipient_id.present?
|
19
|
+
PagarMe::Request.get(url recipient_id).call
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module PagarMe
|
2
|
+
class BalanceOperation < PagarMeObject
|
3
|
+
|
4
|
+
def method_missing(name, *args, &block)
|
5
|
+
if @attributes['movement_object'] && @attributes['movement_object'].respond_to?(name)
|
6
|
+
return movement_object.public_send(name, *args, &block)
|
7
|
+
end
|
8
|
+
|
9
|
+
super name, *args, &block
|
10
|
+
end
|
11
|
+
|
12
|
+
class << self
|
13
|
+
def url(recipient_id = nil)
|
14
|
+
if recipient_id
|
15
|
+
"/recipients/#{recipient_id}/balance/operations"
|
16
|
+
else
|
17
|
+
'/balance/operations'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def balance_operations(page = 1, count = 10)
|
22
|
+
raise RequestError.new('Invalid page count') if page < 1 or count < 1
|
23
|
+
|
24
|
+
params = { page: page, count: count }
|
25
|
+
PagarMe::Request.get(url, params: params).call
|
26
|
+
end
|
27
|
+
|
28
|
+
def find_by_recipient_id(recipient_id, page = 1, count = 10)
|
29
|
+
raise RequestError.new('Invalid ID') unless recipient_id.present?
|
30
|
+
|
31
|
+
params = { page: page, count: count }
|
32
|
+
PagarMe::Request.get(url(recipient_id), params: params).call
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module PagarMe
|
2
|
+
class BulkAnticipation < NestedModel
|
3
|
+
def confirm
|
4
|
+
update self.class.confirm(parent_id, id).attributes
|
5
|
+
self
|
6
|
+
end
|
7
|
+
|
8
|
+
def delete
|
9
|
+
self.class.delete parent_id, id
|
10
|
+
end
|
11
|
+
|
12
|
+
def cancel
|
13
|
+
update self.class.cancel(parent_id, id).attributes
|
14
|
+
self
|
15
|
+
end
|
16
|
+
|
17
|
+
class << self
|
18
|
+
def parent_resource_name
|
19
|
+
'recipients'
|
20
|
+
end
|
21
|
+
|
22
|
+
def confirm(recipient_id, id)
|
23
|
+
PagarMe::Request.post( url(recipient_id, id, 'confirm') ).call
|
24
|
+
end
|
25
|
+
|
26
|
+
def delete(recipient_id, id)
|
27
|
+
PagarMe::Request.delete( url(recipient_id, id) ).call
|
28
|
+
end
|
29
|
+
|
30
|
+
def cancel(recipient_id, id)
|
31
|
+
PagarMe::Request.post( url(recipient_id, id, 'cancel') ).call
|
32
|
+
end
|
33
|
+
|
34
|
+
def create(params = Hash.new)
|
35
|
+
super normalize_params(params)
|
36
|
+
end
|
37
|
+
|
38
|
+
def bulk_anticipations_limits(recipient_id, params = Hash.new)
|
39
|
+
PagarMe::Request.get(url(recipient_id, 'limits'), params: normalize_params(params) ).call
|
40
|
+
end
|
41
|
+
|
42
|
+
protected
|
43
|
+
def normalize_params(params = Hash.new)
|
44
|
+
normalized_params = Hash[ params.map{ |key, value| [key.to_sym, value] } ]
|
45
|
+
normalized_params[:timeframe] = :start if normalized_params[:timeframe].blank?
|
46
|
+
|
47
|
+
raise RequestError.new('Missing payment_date param') if normalized_params[:payment_date].blank?
|
48
|
+
normalized_params[:payment_date] = date_to_milliseconds_since_epoch normalized_params[:payment_date]
|
49
|
+
|
50
|
+
normalized_params
|
51
|
+
end
|
52
|
+
|
53
|
+
def date_to_milliseconds_since_epoch(date)
|
54
|
+
case date
|
55
|
+
when Date
|
56
|
+
date.to_time.to_i * 1000
|
57
|
+
when Time
|
58
|
+
date.to_i * 1000
|
59
|
+
else
|
60
|
+
date
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module PagarMe
|
2
|
+
class Company < PagarMeObject
|
3
|
+
def default_recipient
|
4
|
+
PagarMe::Recipient.find default_recipient_by_env
|
5
|
+
end
|
6
|
+
|
7
|
+
protected
|
8
|
+
def default_recipient_by_env
|
9
|
+
if ENV['production']
|
10
|
+
default_recipient_id.live
|
11
|
+
else
|
12
|
+
default_recipient_id.test
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.default_recipient
|
17
|
+
company.default_recipient
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.company
|
21
|
+
PagarMe::Request.get('/company').call
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.temporary
|
25
|
+
PagarMe::Request.post('/companies/temporary').call
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
File without changes
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module PagarMe
|
2
|
+
class Zipcode < PagarMeObject
|
3
|
+
ZIPCODE_REGEXP = /\d{5}[-\.\_\s]?\d{3}/
|
4
|
+
|
5
|
+
def self.find(zipcode)
|
6
|
+
raise PagarMe::RequestError.new('invalid zipcode') unless valid_zipcode?(zipcode)
|
7
|
+
sanitized_zipcode = zipcode.gsub(/[-\.\_\s]/, '')
|
8
|
+
self.new PagarMe::Request.get("/zipcodes/#{sanitized_zipcode}").run
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.valid_zipcode?(zipcode)
|
12
|
+
zipcode.match ZIPCODE_REGEXP
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module PagarMe
|
2
|
+
class Postback < PagarMeObject
|
3
|
+
def valid?
|
4
|
+
self.class.validate id, fingerprint
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.validate(id, fingerprint)
|
8
|
+
fingerprint_for(id) == fingerprint
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.fingerprint_for(id)
|
12
|
+
Digest::SHA1.hexdigest id.to_s + "#" + PagarMe.api_key
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module PagarMe
|
2
|
+
class Recipient < Model
|
3
|
+
def bulk_anticipations_limits(params = Hash.new)
|
4
|
+
PagarMe::BulkAnticipation.bulk_anticipations_limits id, params
|
5
|
+
end
|
6
|
+
|
7
|
+
def bulk_anticipations(page = 1, count = 10)
|
8
|
+
raise RequestError.new('Invalid page count') if page < 1 or count < 1
|
9
|
+
PagarMe::BulkAnticipation.all id, page, count
|
10
|
+
end
|
11
|
+
|
12
|
+
def bulk_anticipate(params = Hash.new)
|
13
|
+
PagarMe::BulkAnticipation.create params.merge(parent_id: id)
|
14
|
+
end
|
15
|
+
|
16
|
+
def balance
|
17
|
+
PagarMe::Balance.find_by_recipient_id id
|
18
|
+
end
|
19
|
+
|
20
|
+
def balance_operations(*args)
|
21
|
+
PagarMe::BalanceOperation.find_by_recipient_id id, *args
|
22
|
+
end
|
23
|
+
|
24
|
+
def receive(amount)
|
25
|
+
PagarMe::Transfer.create recipient_id: id, amount: amount
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.default
|
29
|
+
Company.default_recipient
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module PagarMe
|
2
|
+
class Subscription < TransactionCommon
|
3
|
+
def create
|
4
|
+
set_plan_id
|
5
|
+
super
|
6
|
+
end
|
7
|
+
|
8
|
+
def save
|
9
|
+
set_plan_id
|
10
|
+
super
|
11
|
+
end
|
12
|
+
|
13
|
+
# TODO: Test it
|
14
|
+
def postbacks
|
15
|
+
PagarMe::Request.get( url 'postbacks' ).call
|
16
|
+
end
|
17
|
+
|
18
|
+
def cancel
|
19
|
+
update PagarMe::Request.post( url 'cancel' ).run
|
20
|
+
end
|
21
|
+
|
22
|
+
def transactions
|
23
|
+
PagarMe::Request.get( url 'transactions' ).call
|
24
|
+
end
|
25
|
+
|
26
|
+
def charge(amount, installments = 1)
|
27
|
+
PagarMe::Request.post(url('transactions'), params: {
|
28
|
+
amount: amount,
|
29
|
+
installments: installments
|
30
|
+
}).run
|
31
|
+
|
32
|
+
update PagarMe::Request.get(url).run
|
33
|
+
end
|
34
|
+
|
35
|
+
protected
|
36
|
+
def set_plan_id
|
37
|
+
if plan
|
38
|
+
self.plan_id = plan.id
|
39
|
+
self.plan = nil
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module PagarMe
|
2
|
+
class Transaction < TransactionCommon
|
3
|
+
alias :charge :create
|
4
|
+
|
5
|
+
def split_rules
|
6
|
+
PagarMe::Request.get( url 'split_rules' ).call
|
7
|
+
end
|
8
|
+
|
9
|
+
def antifraud_analyses
|
10
|
+
PagarMe::Request.get( url 'antifraud_analyses' ).call
|
11
|
+
end
|
12
|
+
|
13
|
+
def payables
|
14
|
+
PagarMe::Request.get( url 'payables' ).call
|
15
|
+
end
|
16
|
+
|
17
|
+
def postbacks
|
18
|
+
PagarMe::Request.get( url 'postbacks' ).call
|
19
|
+
end
|
20
|
+
|
21
|
+
def collect_payment(params={})
|
22
|
+
PagarMe::Request.post(url('collect_payment'), params: params).run
|
23
|
+
end
|
24
|
+
|
25
|
+
def capture(params={})
|
26
|
+
update PagarMe::Request.post(url('capture'), params: params).run
|
27
|
+
end
|
28
|
+
|
29
|
+
def refund(params={})
|
30
|
+
update PagarMe::Request.post(url('refund'), params: params).run
|
31
|
+
end
|
32
|
+
|
33
|
+
class << self
|
34
|
+
def calculate_installments(params)
|
35
|
+
PagarMe::Request.get(url('calculate_installments_amount'), query: params).run
|
36
|
+
end
|
37
|
+
|
38
|
+
alias :charge :create
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -1,44 +1,41 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require File.join(File.dirname(__FILE__), '..', 'pagarme')
|
3
|
-
|
4
1
|
module PagarMe
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
2
|
+
class TransactionCommon < Model
|
3
|
+
|
4
|
+
def initialize(response = {})
|
5
|
+
super(response)
|
6
|
+
|
7
|
+
self.payment_method ||= 'credit_card'
|
8
|
+
self.installments ||= 1
|
9
|
+
self.status ||= 'local'
|
10
|
+
end
|
11
|
+
|
12
|
+
def create
|
13
|
+
check_card_object
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
17
|
+
def save
|
18
|
+
check_card_object
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
def check_card_object
|
24
|
+
if card
|
25
|
+
if card.id
|
26
|
+
self.card_id = self.card.id
|
27
|
+
else
|
28
|
+
self.card_number = card.card_number
|
29
|
+
self.card_holder_name = card.card_holder_name
|
30
|
+
self.card_expiration_year = card.card_expiration_year
|
31
|
+
self.card_expiration_month = card.card_expiration_month
|
32
|
+
self.card_cvv = card.card_cvv
|
33
|
+
self.card_expiration_date = "#{card_expiration_month}#{card_expiration_year}"
|
34
|
+
end
|
35
|
+
self.card = nil
|
36
|
+
end
|
37
|
+
|
38
|
+
self.card_expiration_date ||= "#{card_expiration_month}#{card_expiration_year}"
|
39
|
+
end
|
40
|
+
end
|
44
41
|
end
|