simple_payment 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 568aecde3af8a78ff56b34c0cd36c86068f796ea
4
- data.tar.gz: 48d17402840eb17adea4217a84e2cdd16b12bce1
3
+ metadata.gz: 5954a168d85d5b60a735070c92e5887f9fef84cd
4
+ data.tar.gz: 42d0f76d9b18b5d3fa319c2f7a7c5ee2542d8411
5
5
  SHA512:
6
- metadata.gz: 43add00d4ba7b5698f4fc541db86f46a29d88ce5b7f0acfd554d02222facc05a874a9ddd38f06a3796d7d5f068f948fc1f1030c243d26fb525e9bf7b964fbea6
7
- data.tar.gz: 8b8c1ba6dda9961654a9b45dc818a5e57983402297bec53614fac7546d214b5206e241efa54477a946b2ee0ee6b37fcc936689f911131e30922cdb54f450bd68
6
+ metadata.gz: 3dce402b8deac72d3f301187c5d1dad037d91a1137abdc6c33d530c2fd6dec8c152e5d68576f61e8938c4c3a0470bafc1fa9404d6ab5969f3c421aff2c6584d8
7
+ data.tar.gz: 0e9f8e3fad2638e54d35def3eb3197dcb523ce780e241f81dd88be5242568d62fa28689e21319246f1e5fbc10fc71b6e3bca8cd46ca10f35898ac633ffefc175
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- simple_payment (0.1.1)
4
+ simple_payment (0.1.2)
5
5
  aasm (~> 5)
6
6
  activerecord (~> 5)
7
7
  braintree (~> 2)
@@ -14,7 +14,11 @@ require 'simple_payment/test/response'
14
14
  module SimplePayment
15
15
  class << self
16
16
  def gateway
17
- @gateway.new
17
+ if @gateway.respond_to?(:new)
18
+ @gateway.new
19
+ else
20
+ @gateway
21
+ end
18
22
  end
19
23
 
20
24
  def configure(options)
@@ -3,6 +3,17 @@ require 'braintree'
3
3
  module SimplePayment
4
4
  module Braintree
5
5
  class Gateway
6
+ FEE_PERCENTAGE = 0.029
7
+ FEE_FLAT = 0.30
8
+
9
+ def initialize(settings={})
10
+ @settings = settings
11
+ end
12
+
13
+ def new_token
14
+ gateway.client_token.generate
15
+ end
16
+
6
17
  def execute(payment, nonce)
7
18
  result = gateway.transaction.sale(execute_args(payment, nonce))
8
19
  [Request.new(:sale), Response.new(result)]
@@ -31,10 +42,15 @@ module SimplePayment
31
42
  raise TransmissionError.new Request.new(:refund), e.message
32
43
  end
33
44
 
45
+ def calculate_fee(payment)
46
+ raise 'payment cannot be nil' unless payment
47
+ (payment.amount * FEE_PERCENTAGE) + FEE_FLAT
48
+ end
49
+
34
50
  private
35
51
 
36
52
  def gateway
37
- ::Braintree::Gateway.new
53
+ ::Braintree::Gateway.new @settings
38
54
  end
39
55
 
40
56
  def execute_args(payment, nonce)
@@ -12,6 +12,10 @@ module SimplePayment
12
12
  def success?
13
13
  @result.success?
14
14
  end
15
+
16
+ def external_id
17
+ @result.transaction.id
18
+ end
15
19
  end
16
20
  end
17
21
  end
@@ -57,7 +57,7 @@ module SimplePayment
57
57
  persist_transaction request, response
58
58
  response.success?
59
59
  rescue TransmissionError => e
60
- handle_error e
60
+ handle_error 'execute', e
61
61
  false
62
62
  end
63
63
 
@@ -67,34 +67,39 @@ module SimplePayment
67
67
  _complete! if gateway.completed?(self)
68
68
 
69
69
  rescue TransmissionError => e
70
- handle_error e
70
+ handle_error 'complete', e
71
71
  end
72
72
 
73
- # Calls the gateway to cancel an approved payment or
74
- # to refund a completed payment.
73
+ # Cancel a payment that is approved, but not settled
75
74
  def cancel!
76
75
  return unless approved?
77
76
  request, response = gateway.cancel self
78
77
  _cancel! if response.success?
79
78
  persist_transaction request, response
79
+ true
80
80
  rescue TransmissionError => e
81
- handle_error e
81
+ handle_error 'cancel', e
82
82
  end
83
83
 
84
+ # Refund payment that is settled
84
85
  def refund!
86
+
87
+ puts "refund! #{status}"
88
+
85
89
  return unless completed?
86
90
  request, response = gateway.refund self
87
91
  _refund! if response.success?
88
92
  persist_transaction request, response
93
+ true
89
94
  rescue TransmissionError => e
90
- handle_error e
95
+ handle_error 'refund', e
91
96
  end
92
97
 
93
98
  private
94
99
 
95
- def handle_error(error)
100
+ def handle_error(request, error)
96
101
  transactions.create! \
97
- request: error.request.serialize,
102
+ request: request,
98
103
  error: error.serialize
99
104
  end
100
105
 
@@ -3,6 +3,8 @@ module SimplePayment
3
3
 
4
4
  self.table_name = 'simple_transactions'
5
5
 
6
+ belongs_to :payment, class_name: '::SimplePayment::Payment'
7
+
6
8
  validates_presence_of :payment_id, :request
7
9
  end
8
10
  end
@@ -1,6 +1,10 @@
1
1
  module SimplePayment
2
2
  module Test
3
3
  class Gateway
4
+ def new_token
5
+ SecureRandom.hex(10)
6
+ end
7
+
4
8
  def execute(payment, nonce)
5
9
  [
6
10
  Request.new,
@@ -1,3 +1,3 @@
1
1
  module SimplePayment
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_payment
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Doug Knight
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-19 00:00:00.000000000 Z
11
+ date: 2018-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord