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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0cc47da7070971ded0369dbc9c2585f4a5a35990cd71dee534abaa417eb1926f
4
- data.tar.gz: c83e001aaf639127e66217c80afa0b7c7da03e852e16518fa167a15697bc1802
3
+ metadata.gz: 2c09427f81d0f0efc89e60222716d8d66490eec414145f244df791d9c6f486dd
4
+ data.tar.gz: 87b350ffcec8b48c8506278fd3c0cb24892c99a04348990ffa36f2d242aabfa6
5
5
  SHA512:
6
- metadata.gz: 32cf87089a35994c5a93c701c4652ee7e534f2ec492a79df05089cb8dd67646ee9b46cc5b584ffe821de2ed6c56bddc3393075c22da7dc5d4359ea36481493e8
7
- data.tar.gz: 6e2b585477f4c0d7a654ad05bf42ce1c59a9e3f47a49998f5c3ba5a119f6caa7d22f8af1176478a07a011f4548e0d1a6dfa7fde5cdf59e5fc5507c70c788f0ec
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.0...HEAD
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
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- solidgate-ruby-sdk (0.2.0)
4
+ solidgate-ruby-sdk (0.2.1)
5
5
  faraday
6
6
  faraday-multipart
7
7
 
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Solidgate
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
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.0
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-05-05 00:00:00.000000000 Z
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