justifi 0.5.0 → 0.6.1
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 +9 -9
- data/README.md +15 -10
- data/lib/justifi/balance_transaction.rb +18 -0
- data/lib/justifi/payment.rb +2 -2
- data/lib/justifi/util.rb +7 -0
- data/lib/justifi/version.rb +1 -1
- data/lib/justifi/webhook.rb +11 -0
- data/lib/justifi.rb +2 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bcd2d68a4fce4e0a644aa81c8c65e9e0a11bb31991583379b86b00d5db3f79e2
|
4
|
+
data.tar.gz: 5c7edcdb32022a4f56bbd3a688b496d376838dbce1b4528ccb6201e0e2eaddf1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 150f2bb84c5fba3693dbf7d4c6889963809c00314e468845c3c6dbab3a9b2eec6b2b574fde0ab85821c62a9b519b116eddeafc65280dd0cf188e9941ff052bf5
|
7
|
+
data.tar.gz: e3612d77657510b4bcadaf8fbe6a316b642a9292f3048a5c7a4925b3d3852f9da8d3a14a58e0f04b1399f50b21ee5dd2d63b9dfd3c4bd62fb4c78b913e99ea7b
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
justifi (0.
|
4
|
+
justifi (0.6.1)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -22,7 +22,7 @@ GEM
|
|
22
22
|
public_suffix (4.0.7)
|
23
23
|
rainbow (3.1.1)
|
24
24
|
rake (13.0.6)
|
25
|
-
regexp_parser (2.
|
25
|
+
regexp_parser (2.4.0)
|
26
26
|
repo-small-badge (0.2.7)
|
27
27
|
victor (~> 0.2.8)
|
28
28
|
rexml (3.2.5)
|
@@ -39,16 +39,16 @@ GEM
|
|
39
39
|
diff-lcs (>= 1.2.0, < 2.0)
|
40
40
|
rspec-support (~> 3.11.0)
|
41
41
|
rspec-support (3.11.0)
|
42
|
-
rubocop (1.
|
42
|
+
rubocop (1.29.1)
|
43
43
|
parallel (~> 1.10)
|
44
44
|
parser (>= 3.1.0.0)
|
45
45
|
rainbow (>= 2.2.2, < 4.0)
|
46
46
|
regexp_parser (>= 1.8, < 3.0)
|
47
|
-
rexml
|
48
|
-
rubocop-ast (>= 1.
|
47
|
+
rexml (>= 3.2.5, < 4.0)
|
48
|
+
rubocop-ast (>= 1.17.0, < 2.0)
|
49
49
|
ruby-progressbar (~> 1.7)
|
50
50
|
unicode-display_width (>= 1.4.0, < 3.0)
|
51
|
-
rubocop-ast (1.
|
51
|
+
rubocop-ast (1.18.0)
|
52
52
|
parser (>= 3.1.1.0)
|
53
53
|
rubocop-performance (1.13.3)
|
54
54
|
rubocop (>= 1.7.0, < 2.0)
|
@@ -63,8 +63,8 @@ GEM
|
|
63
63
|
repo-small-badge (~> 0.2.7)
|
64
64
|
simplecov (~> 0.17)
|
65
65
|
simplecov_json_formatter (0.1.4)
|
66
|
-
standard (1.
|
67
|
-
rubocop (= 1.
|
66
|
+
standard (1.12.1)
|
67
|
+
rubocop (= 1.29.1)
|
68
68
|
rubocop-performance (= 1.13.3)
|
69
69
|
unicode-display_width (2.1.0)
|
70
70
|
victor (0.2.8)
|
@@ -89,4 +89,4 @@ DEPENDENCIES
|
|
89
89
|
webmock (>= 3.8.0)
|
90
90
|
|
91
91
|
BUNDLED WITH
|
92
|
-
2.2.
|
92
|
+
2.2.15
|
data/README.md
CHANGED
@@ -5,24 +5,15 @@ It includes a pre-defined set of modules and classes that are essentially wrappe
|
|
5
5
|
|
6
6
|
## Installation
|
7
7
|
|
8
|
-
From the command line:
|
9
|
-
```bash
|
10
|
-
gem install justifi --version "0.4.0" --source "https://rubygems.pkg.github.com/justifi-tech"
|
11
|
-
```
|
12
|
-
OR
|
13
|
-
|
14
8
|
Add these lines to your application's Gemfile:
|
15
9
|
|
16
10
|
```ruby
|
17
|
-
|
18
|
-
gem "justifi", "0.4.0"
|
19
|
-
end
|
11
|
+
gem "justifi"
|
20
12
|
```
|
21
13
|
And then execute:
|
22
14
|
|
23
15
|
$ bundle install
|
24
16
|
|
25
|
-
|
26
17
|
## Setup
|
27
18
|
|
28
19
|
The gem needs to be configured with your `client_id` and `client_secret` in order to access JustiFi API resources.
|
@@ -204,6 +195,20 @@ Justifi::PaymentIntent.create(params: payment_intent_params, seller_account_id:
|
|
204
195
|
Any API resource using the `seller_account_id` variable will include the `Seller-Account` header and be
|
205
196
|
processed as the seller account.
|
206
197
|
|
198
|
+
## Webhook Signature Verification
|
199
|
+
|
200
|
+
Webhooks are secured by signature verification. An encrypted header is sent as a POST to your API endpoint (JUSTIFI-SIGNATURE),
|
201
|
+
which will need to be decrypted and verified with the signature secret provided.
|
202
|
+
You can use the JustiFi Ruby gem to validate the signature.
|
203
|
+
|
204
|
+
```ruby
|
205
|
+
received_event = { id: "py_..." } # JustiFi webhook event
|
206
|
+
signature = "2463896d3cb..." # justifi-signature header
|
207
|
+
timestamp = "1651076887..." # justifi-timestamp header
|
208
|
+
secret_key = "sigk_2..." # secret key used for this webhook
|
209
|
+
Justifi::Webhook.verify_signature(received_event: received_event, timestamp: timestamp, secret_key: secret_key, signature: signature) # valid or not
|
210
|
+
```
|
211
|
+
|
207
212
|
## Contributing
|
208
213
|
|
209
214
|
### Release a new version of the gem
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Justifi
|
4
|
+
module BalanceTransaction
|
5
|
+
class << self
|
6
|
+
def list(params: {}, headers: {}, seller_account_id: nil)
|
7
|
+
headers[:seller_account] = seller_account_id if seller_account_id
|
8
|
+
JustifiOperations.execute_get_request("/v1/balance_transactions", params, headers)
|
9
|
+
end
|
10
|
+
|
11
|
+
def get(id:, headers: {})
|
12
|
+
JustifiOperations.execute_get_request("/v1/balance_transactions/#{id}",
|
13
|
+
{},
|
14
|
+
headers)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/justifi/payment.rb
CHANGED
@@ -11,8 +11,8 @@ module Justifi
|
|
11
11
|
headers: headers)
|
12
12
|
end
|
13
13
|
|
14
|
-
def create_refund(amount:, payment_id:, reason: nil, description: nil)
|
15
|
-
refund_params = {amount: amount, description: description, reason: reason}
|
14
|
+
def create_refund(amount:, payment_id:, reason: nil, description: nil, metadata: nil)
|
15
|
+
refund_params = {amount: amount, description: description, reason: reason, metadata: metadata}
|
16
16
|
JustifiOperations.idempotently_request("/v1/payments/#{payment_id}/refunds",
|
17
17
|
method: :post,
|
18
18
|
params: refund_params,
|
data/lib/justifi/util.rb
CHANGED
@@ -78,5 +78,12 @@ module Justifi
|
|
78
78
|
end
|
79
79
|
result
|
80
80
|
end
|
81
|
+
|
82
|
+
# Creates a computed signature that can verify the payload sent.
|
83
|
+
# Each webhook has its own signature key that can be achieved in JustiFi's platform
|
84
|
+
def self.compute_signature(received_event, timestamp, secret_key)
|
85
|
+
timestamp_payload = "#{timestamp}.#{received_event.to_json}"
|
86
|
+
OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha256"), secret_key, timestamp_payload)
|
87
|
+
end
|
81
88
|
end
|
82
89
|
end
|
data/lib/justifi/version.rb
CHANGED
@@ -0,0 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Justifi
|
4
|
+
module Webhook
|
5
|
+
class << self
|
6
|
+
def verify_signature(received_event:, timestamp:, secret_key:, signature:)
|
7
|
+
signature == Util.compute_signature(received_event, timestamp, secret_key)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
data/lib/justifi.rb
CHANGED
@@ -15,10 +15,12 @@ require "justifi/oauth"
|
|
15
15
|
require "justifi/payment"
|
16
16
|
require "justifi/refund"
|
17
17
|
require "justifi/payout"
|
18
|
+
require "justifi/balance_transaction"
|
18
19
|
require "justifi/dispute"
|
19
20
|
require "justifi/payment_method"
|
20
21
|
require "justifi/payment_intent"
|
21
22
|
require "justifi/in_memory_cache"
|
23
|
+
require "justifi/webhook"
|
22
24
|
|
23
25
|
module Justifi
|
24
26
|
@config = Justifi::Configuration.setup
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: justifi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- JustiFi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: byebug
|
@@ -161,6 +161,7 @@ files:
|
|
161
161
|
- justifi.gemspec
|
162
162
|
- lib/justifi.rb
|
163
163
|
- lib/justifi/api_operations.rb
|
164
|
+
- lib/justifi/balance_transaction.rb
|
164
165
|
- lib/justifi/configuration.rb
|
165
166
|
- lib/justifi/dispute.rb
|
166
167
|
- lib/justifi/in_memory_cache.rb
|
@@ -177,6 +178,7 @@ files:
|
|
177
178
|
- lib/justifi/refund.rb
|
178
179
|
- lib/justifi/util.rb
|
179
180
|
- lib/justifi/version.rb
|
181
|
+
- lib/justifi/webhook.rb
|
180
182
|
homepage: https://justifi.ai
|
181
183
|
licenses: []
|
182
184
|
metadata:
|