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
@@ -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
|