solidgate-ruby-sdk 0.2.0 → 0.2.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/CHANGELOG.md +10 -1
- data/Gemfile.lock +1 -1
- data/lib/solidgate/client.rb +38 -0
- data/lib/solidgate/version.rb +1 -1
- data/solidgate.gemspec +43 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2c09427f81d0f0efc89e60222716d8d66490eec414145f244df791d9c6f486dd
|
|
4
|
+
data.tar.gz: 87b350ffcec8b48c8506278fd3c0cb24892c99a04348990ffa36f2d242aabfa6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 58cbef4744fbf27bf91b43921d25284b46af5c0be8b50b05c5a938172b418f7d762d708c0f19a59b3686b62d6002a290a3e01ac532d9f8d933e46ad729f89266
|
|
7
|
+
data.tar.gz: 4244c8c9944e9c1175868ed53726781a36d26d21cd00acf75efe67cc4cbd3fce1a3cbdaf425c38c04d471d06e116b814309c0c640b5d03a5ad04772549290c3e
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.2.1] - 2026-06-11
|
|
11
|
+
### Added
|
|
12
|
+
- `decrypt_intent` public method to decrypt payment intents generated by `generate_intent`.
|
|
13
|
+
- Internal `decrypt_payload` helper using AES-256-CBC with IV-prefix parsing.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- Added client spec coverage for encrypt/decrypt round-trip and invalid payload handling.
|
|
17
|
+
|
|
10
18
|
## [0.2.0] - 2026-05-05
|
|
11
19
|
### Added
|
|
12
20
|
- `apm_order_status` endpoint for checking alternative payment method order status.
|
|
@@ -94,7 +102,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
94
102
|
- Thread-safe configuration
|
|
95
103
|
- Comprehensive documentation and examples
|
|
96
104
|
|
|
97
|
-
[Unreleased]: https://github.com/carrfane/solidgate-ruby-sdk/compare/v0.2.
|
|
105
|
+
[Unreleased]: https://github.com/carrfane/solidgate-ruby-sdk/compare/v0.2.1...HEAD
|
|
106
|
+
[0.2.1]: https://github.com/carrfane/solidgate-ruby-sdk/compare/v0.2.0...v0.2.1
|
|
98
107
|
[0.2.0]: https://github.com/carrfane/solidgate-ruby-sdk/compare/v0.1.17...v0.2.0
|
|
99
108
|
[0.1.17]: https://github.com/carrfane/solidgate-ruby-sdk/releases/tag/v0.1.17
|
|
100
109
|
[0.1.16]: https://github.com/carrfane/solidgate-ruby-sdk/releases/tag/v0.1.16
|
data/Gemfile.lock
CHANGED
data/lib/solidgate/client.rb
CHANGED
|
@@ -289,6 +289,19 @@ module Solidgate
|
|
|
289
289
|
encrypt_payload(params)
|
|
290
290
|
end
|
|
291
291
|
|
|
292
|
+
# Decrypts an encrypted payment intent generated by {#generate_intent}.
|
|
293
|
+
#
|
|
294
|
+
# @param encrypted_payload [String] URL-safe Base64 encrypted payload
|
|
295
|
+
# @return [String] decrypted JSON payload
|
|
296
|
+
# @raise [ArgumentError] if payload cannot be decoded/decrypted
|
|
297
|
+
#
|
|
298
|
+
# @example Decrypt payment intent
|
|
299
|
+
# payload = client.decrypt_intent(encrypted_intent)
|
|
300
|
+
#
|
|
301
|
+
def decrypt_intent(encrypted_payload)
|
|
302
|
+
decrypt_payload(encrypted_payload)
|
|
303
|
+
end
|
|
304
|
+
|
|
292
305
|
# Updates an existing price for a product.
|
|
293
306
|
# Use this to modify the amount, currency, or billing interval of a price.
|
|
294
307
|
#
|
|
@@ -663,5 +676,30 @@ module Solidgate
|
|
|
663
676
|
base64_encoded = Base64.urlsafe_encode64(iv + encrypted)
|
|
664
677
|
base64_encoded.gsub('+', '-').gsub('/', '_')
|
|
665
678
|
end
|
|
679
|
+
|
|
680
|
+
# Decrypts a URL-safe Base64 payload encrypted with AES-256-CBC.
|
|
681
|
+
# Expects the IV to be prepended to the encrypted content.
|
|
682
|
+
#
|
|
683
|
+
# @param encrypted_payload [String] URL-safe Base64 encrypted payload
|
|
684
|
+
# @return [String] decrypted payload
|
|
685
|
+
# @raise [ArgumentError] if payload format/content is invalid
|
|
686
|
+
#
|
|
687
|
+
def decrypt_payload(encrypted_payload)
|
|
688
|
+
raw_payload = Base64.urlsafe_decode64(encrypted_payload)
|
|
689
|
+
raise ArgumentError, "Invalid encrypted payload" if raw_payload.bytesize <= IV_LENGTH
|
|
690
|
+
|
|
691
|
+
iv = raw_payload[0, IV_LENGTH]
|
|
692
|
+
encrypted_data = raw_payload[IV_LENGTH..]
|
|
693
|
+
key = config.private_key[0, KEY_LENGTH]
|
|
694
|
+
|
|
695
|
+
cipher = OpenSSL::Cipher.new('aes-256-cbc')
|
|
696
|
+
cipher.decrypt
|
|
697
|
+
cipher.key = key
|
|
698
|
+
cipher.iv = iv
|
|
699
|
+
|
|
700
|
+
cipher.update(encrypted_data) + cipher.final
|
|
701
|
+
rescue ArgumentError, OpenSSL::Cipher::CipherError
|
|
702
|
+
raise ArgumentError, "Invalid encrypted payload"
|
|
703
|
+
end
|
|
666
704
|
end
|
|
667
705
|
end
|
data/lib/solidgate/version.rb
CHANGED
data/solidgate.gemspec
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "lib/solidgate/version"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |spec|
|
|
6
|
+
spec.name = "solidgate-ruby-sdk"
|
|
7
|
+
spec.version = Solidgate::VERSION
|
|
8
|
+
spec.authors = ["Hector Carrillo"]
|
|
9
|
+
spec.email = ["carrfane@gmail.com"]
|
|
10
|
+
|
|
11
|
+
spec.summary = "Ruby SDK for Solidgate payment processing"
|
|
12
|
+
spec.description = "A Ruby SDK for integrating with the Solidgate payment gateway API"
|
|
13
|
+
spec.homepage = "https://github.com/carrfane/solidgate-ruby-sdk"
|
|
14
|
+
spec.license = "MIT"
|
|
15
|
+
spec.required_ruby_version = ">= 2.6.0"
|
|
16
|
+
|
|
17
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
|
18
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
|
19
|
+
spec.metadata["source_code_uri"] = "https://github.com/carrfane/solidgate-ruby-sdk"
|
|
20
|
+
spec.metadata["changelog_uri"] = "https://github.com/carrfane/solidgate-ruby-sdk/blob/master/CHANGELOG.md"
|
|
21
|
+
|
|
22
|
+
# Specify which files should be added to the gem when it is released.
|
|
23
|
+
spec.files = Dir.chdir(__dir__) do
|
|
24
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
|
25
|
+
(f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|circleci)|appveyor)})
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
spec.bindir = "exe"
|
|
30
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
|
31
|
+
spec.require_paths = ["lib"]
|
|
32
|
+
|
|
33
|
+
# Runtime dependencies
|
|
34
|
+
spec.add_dependency "faraday"
|
|
35
|
+
spec.add_dependency "faraday-multipart"
|
|
36
|
+
|
|
37
|
+
#Development dependencies
|
|
38
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
|
39
|
+
spec.add_development_dependency "webmock", "~> 3.0"
|
|
40
|
+
spec.add_development_dependency "vcr", "~> 6.0"
|
|
41
|
+
spec.add_development_dependency "rubocop", "~> 1.0"
|
|
42
|
+
spec.add_development_dependency "pry", "~> 0.14"
|
|
43
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: solidgate-ruby-sdk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Hector Carrillo
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-06-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
@@ -133,6 +133,7 @@ files:
|
|
|
133
133
|
- lib/solidgate/payment.rb
|
|
134
134
|
- lib/solidgate/version.rb
|
|
135
135
|
- lib/solidgate/webhook.rb
|
|
136
|
+
- solidgate.gemspec
|
|
136
137
|
homepage: https://github.com/carrfane/solidgate-ruby-sdk
|
|
137
138
|
licenses:
|
|
138
139
|
- MIT
|