simple_payment 0.1.1 → 0.1.2

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