rubyqrpay 0.2.7 → 0.3.0

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
  SHA1:
3
- metadata.gz: ee1e0d77229c46e13160d309f8e53ba3e9aa698f
4
- data.tar.gz: acff42309be3b3643ebbf1d212a80c415e35f545
3
+ metadata.gz: 9f7ddd5708398d0d24af250eb9f241c413d09b10
4
+ data.tar.gz: 80ac96125c087228424949eb30e8e77e7a64fd4d
5
5
  SHA512:
6
- metadata.gz: e18712dd154ccd8ec56f6fd50ba5956643533274014a9594c7925ae65e4bb19440b98c0b577fc773722d98d311563f201c3f1f4e141369975ab534626b018f6f
7
- data.tar.gz: 6765f294d08b7c3fbcc71440aae8632789a7d74c8003c0f1e881dfbc1f3ebee1969b5c27069db8f5491c3fecaf7b234dc4eba3f00d6a91a58fcac52ef9e47e18
6
+ metadata.gz: d23925218a5a2d11908247c5321f388879d768bddcd423e3effa27154c15a0199d15fba60117fbe7a806eaf9bc4c18cff21a7eed195419708c553fbc6c948752
7
+ data.tar.gz: 969a2a4692d3dac288f84f1fb8b59ed14c7b184c19ea97b076cecadff7451052443ab91bf712739c4b9135f1d0a20112f1e9963b13a22373090200082bf1a0ff
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubyqrpay (0.2.7)
4
+ rubyqrpay (0.3.0)
5
5
  countries (~> 2.1)
6
6
  digest-crc (~> 0.4)
7
7
  dry-validation (~> 0.11)
@@ -95,4 +95,4 @@ DEPENDENCIES
95
95
  rubyqrpay!
96
96
 
97
97
  BUNDLED WITH
98
- 1.16.4
98
+ 1.17.3
@@ -1 +1,2 @@
1
1
  require_relative 'rubyqrpay/generator'
2
+ require_relative 'rubyqrpay/parser'
@@ -1,61 +1,59 @@
1
1
  module Rubyqrpay
2
- class Generator
3
- ID_PAYLOAD_FORMAT = '00'
4
- ID_POI_METHOD = '01'
5
- ID_MERCHANT_INFORMATION_32 = '32'
6
- ID_MERCHANT_INFORMATION_33 = '33'
7
- ID_MERCHANT_CATEGORY_CODE = '52'
8
- ID_TRANSACTION_CURRENCY = '53'
9
- ID_TRANSACTION_AMOUNT = '54'
10
- ID_TIP_OF_CONVENIENCE_INDICATOR = '55'
11
- ID_VALUE_OF_CONVENIENCE_FEE_FIXED = '56'
12
- ID_VALUE_OF_CONVENIENCE_FEE_PERCENTAGE = '57'
13
- ID_COUNTRY = '58'
14
- ID_MERCHANT_NAME = '59'
15
- ID_MERCHANT_CITY = '60'
16
- ID_POSTAL_CODE = '61'
17
- ID_ADDITIONAL_DATA_FIELD = '62'
18
- ID_MERCHANT_INFORMATION_LANGUAGE = '64'
19
- ID_CRC = '63'
2
+ ID_PAYLOAD_FORMAT = '00'
3
+ ID_POI_METHOD = '01'
4
+ ID_MERCHANT_INFORMATION_32 = '32'
5
+ ID_MERCHANT_INFORMATION_33 = '33'
6
+ ID_MERCHANT_CATEGORY_CODE = '52'
7
+ ID_TRANSACTION_CURRENCY = '53'
8
+ ID_TRANSACTION_AMOUNT = '54'
9
+ ID_TIP_OF_CONVENIENCE_INDICATOR = '55'
10
+ ID_VALUE_OF_CONVENIENCE_FEE_FIXED = '56'
11
+ ID_VALUE_OF_CONVENIENCE_FEE_PERCENTAGE = '57'
12
+ ID_COUNTRY = '58'
13
+ ID_MERCHANT_NAME = '59'
14
+ ID_MERCHANT_CITY = '60'
15
+ ID_POSTAL_CODE = '61'
16
+ ID_ADDITIONAL_DATA_FIELD = '62'
17
+ ID_MERCHANT_INFORMATION_LANGUAGE = '64'
18
+ ID_CRC = '63'
20
19
 
21
- PAYLOAD_FORMAT_EMV_QRCPS_MERCHANT_PRESENTED_MODE = '01'
22
- POI_METHOD_STATIC = '11'
23
- POI_METHOD_DYNAMIC = '12'
24
- CONVENIENCE_INDICATOR_FIXED = '02'
25
- CONVENIENCE_INDICATOR_PERCENTAGE = '03'
26
- MERCHANT_INFORMATION_TEMPLATE_ID_GUID = '00'
27
- # ID_MERCHANT_INFORMATION_32
28
- ID_SERVICE_CODE_ERIP = '01'
29
- ID_PAYER_UNIQUE = '10'
30
- ID_PAYER_NUMBER = '11'
31
- ID_AMOUNT_EDIT_POSSIBILITY = '12'
32
- # ID_MERCHANT_INFORMATION_33
33
- ID_SERVICE_PRODUCER_CODE = '03'
34
- ID_SERVICE_CODE = '04'
35
- ID_OUTLET = '05'
36
- ID_ORDER_CODE = '06'
37
- # ID_ADDITIONAL_DATA_FIELD
38
- ID_BILL_NUMBER = '01'
39
- ID_MOBILE_NUMBER = '02'
40
- ID_STORE_LABEL = '03'
41
- ID_LOYALTY_NUMBER = '04'
42
- ID_REFERENCE_LABEL = '05'
43
- ID_CUSTOMER_LABEL = '06'
44
- ID_TERMINAL_LABEL = '07'
45
- ID_PURPOSE_OF_TRANSACTION = '08'
46
- ID_CONSUMER_DATA_REQUEST = '09'
47
- # ID_MERCHANT_INFORMATION_LANGUAGE
48
- ID_LANGUAGE_REFERENCE = '00'
49
- ID_MERCHANT_NAME_ALTERNATE = '01'
50
- ID_MERCHANT_CITY_ALTERNATE = '02'
20
+ PAYLOAD_FORMAT_EMV_QRCPS_MERCHANT_PRESENTED_MODE = '01'
21
+ POI_METHOD_STATIC = '11'
22
+ POI_METHOD_DYNAMIC = '12'
23
+ CONVENIENCE_INDICATOR_FIXED = '02'
24
+ CONVENIENCE_INDICATOR_PERCENTAGE = '03'
25
+ MERCHANT_INFORMATION_TEMPLATE_ID_GUID = '00'
26
+ # ID_MERCHANT_INFORMATION_32
27
+ ID_SERVICE_CODE_ERIP = '01'
28
+ ID_PAYER_UNIQUE = '10'
29
+ ID_PAYER_NUMBER = '11'
30
+ ID_AMOUNT_EDIT_POSSIBILITY = '12'
31
+ # ID_MERCHANT_INFORMATION_33
32
+ ID_SERVICE_PRODUCER_CODE = '03'
33
+ ID_SERVICE_CODE = '04'
34
+ ID_OUTLET = '05'
35
+ ID_ORDER_CODE = '06'
36
+ # ID_ADDITIONAL_DATA_FIELD
37
+ ID_BILL_NUMBER = '01'
38
+ ID_MOBILE_NUMBER = '02'
39
+ ID_STORE_LABEL = '03'
40
+ ID_LOYALTY_NUMBER = '04'
41
+ ID_REFERENCE_LABEL = '05'
42
+ ID_CUSTOMER_LABEL = '06'
43
+ ID_TERMINAL_LABEL = '07'
44
+ ID_PURPOSE_OF_TRANSACTION = '08'
45
+ ID_CONSUMER_DATA_REQUEST = '09'
46
+ # ID_MERCHANT_INFORMATION_LANGUAGE
47
+ ID_LANGUAGE_REFERENCE = '00'
48
+ ID_MERCHANT_NAME_ALTERNATE = '01'
49
+ ID_MERCHANT_CITY_ALTERNATE = '02'
51
50
 
52
- GUID_PROMPTPAY_32 = 'by.raschet'
53
- GUID_PROMPTPAY_33 = 'by.epos.'
54
- CRC_SYMBOL_SIZE = '04'
55
- AEP_DEFAULT = '11'
56
- AEP_FALSE = '12'
51
+ GUID_PROMPTPAY_32 = 'by.raschet'
52
+ GUID_PROMPTPAY_33 = 'by.epos.'
53
+ CRC_SYMBOL_SIZE = '04'
54
+ AEP_DEFAULT = '11'
55
+ AEP_FALSE = '12'
57
56
 
58
- K_SIZE_FUNC = 0.15
59
- B_SIZE_FUNC = 140
60
- end
57
+ K_SIZE_FUNC = 0.15
58
+ B_SIZE_FUNC = 140
61
59
  end
@@ -0,0 +1,36 @@
1
+ module Rubyqrpay
2
+ class Parser
3
+ NESTED_DATA_IDS = [ID_MERCHANT_INFORMATION_32,
4
+ ID_MERCHANT_INFORMATION_33,
5
+ ID_ADDITIONAL_DATA_FIELD,
6
+ ID_MERCHANT_INFORMATION_LANGUAGE]
7
+
8
+ class << self
9
+ def parse_payload(payload)
10
+ parse_to_params(URI.unescape payload)
11
+ end
12
+
13
+ private
14
+
15
+ def parse_to_params(payload)
16
+ {}.tap do |params|
17
+ index = 0
18
+
19
+ until payload[index + 4].nil?
20
+ key = payload[index, 2]
21
+ size = payload[index + 2, 2].to_i
22
+ value = payload[index + 4, size]
23
+
24
+ params[key] = if NESTED_DATA_IDS.include? key
25
+ parse_to_params value
26
+ else
27
+ value
28
+ end
29
+
30
+ index += 4 + size
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,3 +1,3 @@
1
1
  module Rubyqrpay
2
- VERSION = "0.2.7"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyqrpay
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Egor Shpalov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-09-03 00:00:00.000000000 Z
11
+ date: 2019-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -157,6 +157,7 @@ files:
157
157
  - lib/rubyqrpay.rb
158
158
  - lib/rubyqrpay/constants.rb
159
159
  - lib/rubyqrpay/generator.rb
160
+ - lib/rubyqrpay/parser.rb
160
161
  - lib/rubyqrpay/validator.rb
161
162
  - lib/rubyqrpay/version.rb
162
163
  - rubyqrpay.gemspec