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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/simple_payment.rb +5 -1
- data/lib/simple_payment/braintree/gateway.rb +17 -1
- data/lib/simple_payment/braintree/response.rb +4 -0
- data/lib/simple_payment/models/payment.rb +13 -8
- data/lib/simple_payment/models/transaction.rb +2 -0
- data/lib/simple_payment/test/gateway.rb +4 -0
- data/lib/simple_payment/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5954a168d85d5b60a735070c92e5887f9fef84cd
|
4
|
+
data.tar.gz: 42d0f76d9b18b5d3fa319c2f7a7c5ee2542d8411
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3dce402b8deac72d3f301187c5d1dad037d91a1137abdc6c33d530c2fd6dec8c152e5d68576f61e8938c4c3a0470bafc1fa9404d6ab5969f3c421aff2c6584d8
|
7
|
+
data.tar.gz: 0e9f8e3fad2638e54d35def3eb3197dcb523ce780e241f81dd88be5242568d62fa28689e21319246f1e5fbc10fc71b6e3bca8cd46ca10f35898ac633ffefc175
|
data/Gemfile.lock
CHANGED
data/lib/simple_payment.rb
CHANGED
@@ -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)
|
@@ -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
|
-
#
|
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:
|
102
|
+
request: request,
|
98
103
|
error: error.serialize
|
99
104
|
end
|
100
105
|
|
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.
|
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-
|
11
|
+
date: 2018-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|