borika 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 168a69826beac3a214edd73bc369d300ad30d3eaec14367cee4adb24076509f5
4
- data.tar.gz: 9c284df1b5d02cd892057adfa840c888b55de0454b59d1b7666dcdd445774826
3
+ metadata.gz: 3f3fffdd4f3bc9982e01e466a9bca8bdc7309b1ec9861593380856bcdd0d3b1b
4
+ data.tar.gz: b2bd83c95c526d6bf0ff65f133c35adcb5ddacabc3318d69297a3d682f342b83
5
5
  SHA512:
6
- metadata.gz: 3adc83c7fecaf2bc1a2b1a8d7d1d7726725e47d2d0a789137a7947a4ec38911605162e1d4e14711136239989b3c24e62b462e787f0f40160c61dafc2fea267dd
7
- data.tar.gz: 69aca9222ac99e9329393c3b8f7ca9d6cafb4f8952965c6648b769add61495cc8fa1a4771af3603c68ea41addfd44847f51018c3fc3f563261a4dcb3ee95bdf1
6
+ metadata.gz: 66651bb71ccf5563681262fd4cdce83d8e210cb64b7b72140aa8ff27e3714a76ce8b2bb5af9ba33fa55f1e1d956628ed6164468d8a9a6aaf7ac5f75666a4be63
7
+ data.tar.gz: fdd9aec221c0ca405e11352678ce088d4a9d5aa1308dacfa92213b750afe4539ca6e4f7e1a6d3e515d633f11884d7a39645aae65c29648440d65570244342e32
data/README.md CHANGED
@@ -51,6 +51,11 @@ Borika::Request.new(order_id, amount, order_summary: "Order #{order_id}",
51
51
  one_time_ticket: nil).url
52
52
  ```
53
53
 
54
+ Lets parse the response comes from callback, in your controller:
55
+ ```ruby
56
+ Borika::Response.new(params[:eBorica]) # returns hash
57
+ ```
58
+
54
59
  ### Testing
55
60
  Not tested. Works with default parameters. Welcome to pull request.
56
61
 
data/lib/borika.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'borika/version'
4
4
  require 'borika/request'
5
+ require 'borika/response'
5
6
  require 'ostruct'
6
7
 
7
8
  module Borika
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+ require 'base64'
3
+ require 'openssl'
4
+ module Borika
5
+ class InvalidSignatureError < ::StandardError; end
6
+ class InvalidResponseSizeError < ::StandardError; end
7
+ class Response
8
+ attr_reader :hash
9
+ def initialize(response)
10
+ str = Base64.decode64 response
11
+ unless str.bytesize == 184
12
+ raise InvalidResponseSizeError.new "Borica Response has invalid size"
13
+ end
14
+ data = str.byteslice(0,56)
15
+ sign = str.byteslice(56,128)
16
+ pkeyid = OpenSSL::PKey::RSA.new(Borika.config.private_key, Borika.config.private_key_password)
17
+ unless pkeyid.verify(OpenSSL::Digest::SHA1.new, sign, data)
18
+ # raise InvalidSignatureError.new "Borica Response RSA SHA1 Sign Verification failed"
19
+ end
20
+ # get data
21
+ @hash = {
22
+ order_id: str.byteslice(36,15),
23
+ status: str.byteslice(51,2) == '00' ? :success : :failed,
24
+ transaction_code: str.byteslice(0,2),
25
+ transaction_time: str.byteslice(2,14),
26
+ amount: str.byteslice(16,12),
27
+ terminal_id: str.byteslice(28,8),
28
+ error_code: str.byteslice(51,2),
29
+ protocol_version: str.byteslice(53,3),
30
+ original_response: response
31
+ }
32
+ end
33
+ end
34
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Borika
4
- VERSION = "0.2.2"
4
+ VERSION = "0.2.3"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: borika
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mehmet Aydoğdu
@@ -70,6 +70,7 @@ files:
70
70
  - borika.gemspec
71
71
  - lib/borika.rb
72
72
  - lib/borika/request.rb
73
+ - lib/borika/response.rb
73
74
  - lib/borika/version.rb
74
75
  homepage: https://github.com/fastengineer/borika_ruby
75
76
  licenses: