qrcode_pix_ruby 0.3.2 → 0.3.3
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/.github/workflows/ci.yml +1 -1
- data/.rubocop.yml +28 -0
- data/CHANGELOG.md +5 -0
- data/README.md +3 -2
- data/Rakefile +3 -1
- data/lib/qrcode_pix_ruby/payload.rb +39 -36
- data/lib/qrcode_pix_ruby/version.rb +1 -1
- data/qrcode_pix_ruby.gemspec +14 -12
- metadata +34 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52492ab7a9acf126608e98b81527ed1dace5f8acd90519b5caee3c555e43a9f0
|
4
|
+
data.tar.gz: 295667fb9a0927cb28d8969629b72d2ded040ed6d99d26009de22fa51c5b6508
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4fc1af95bea11a989799aa457fe2c54e8c782e4428dc1efc0f9911dd9e9e0ed0433bebcef29ee2cf76bd17f7a6cf9a54ac58e5e8a862ab3b0df30f31a88444eb
|
7
|
+
data.tar.gz: ce85d33b412995d7a8ef16b08a704c184cb7c73d57a35520d12d3957921172546dfe3dac5298cccaa5050fcf8a7151f688521f90366bf93b3d8c56b2b0400c73
|
data/.github/workflows/ci.yml
CHANGED
data/.rubocop.yml
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
AllCops:
|
2
|
+
NewCops: enable
|
3
|
+
SuggestExtensions: false
|
4
|
+
Exclude:
|
5
|
+
- spec/*
|
6
|
+
|
7
|
+
Layout/LineLength:
|
8
|
+
Max: 120
|
9
|
+
Exclude:
|
10
|
+
- qrcode_pix_ruby.gemspec
|
11
|
+
|
12
|
+
Metrics/MethodLength:
|
13
|
+
Max: 20
|
14
|
+
|
15
|
+
Gemspec/RequiredRubyVersion:
|
16
|
+
Enabled: false
|
17
|
+
|
18
|
+
Style/Documentation:
|
19
|
+
Enabled: false
|
20
|
+
|
21
|
+
Metrics/AbcSize:
|
22
|
+
Enabled: false
|
23
|
+
|
24
|
+
Metrics/BlockNesting:
|
25
|
+
Enabled: false
|
26
|
+
|
27
|
+
Style/IfUnlessModifier:
|
28
|
+
Enabled: false
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -7,6 +7,7 @@
|
|
7
7
|
[]()
|
8
8
|
[]()
|
9
9
|
[](https://github.com/pedrofurtado/qrcode_pix_ruby)
|
10
|
+
[](https://github.com/rubocop/rubocop)
|
10
11
|
|
11
12
|
Ruby gem for Qrcode generation of Pix (Pagamento Instantâneo Brasileiro - Banco Central do Brasil).
|
12
13
|
|
@@ -83,8 +84,8 @@ git clone https://github.com/pedrofurtado/qrcode_pix_ruby
|
|
83
84
|
cd qrcode_pix_ruby/
|
84
85
|
docker build -t qrcode_pix_ruby_specs .
|
85
86
|
|
86
|
-
# Then, run this command how many times you want,
|
87
|
-
# after editing local files, and so on, to get
|
87
|
+
# Then, run this command how many times you want,
|
88
|
+
# after editing local files, and so on, to get
|
88
89
|
# feedback from test suite of gem.
|
89
90
|
docker run -v $(pwd):/app/ -it qrcode_pix_ruby_specs
|
90
91
|
```
|
data/Rakefile
CHANGED
@@ -4,22 +4,22 @@ require 'rqrcode'
|
|
4
4
|
|
5
5
|
module QrcodePixRuby
|
6
6
|
class Payload
|
7
|
-
ID_PAYLOAD_FORMAT_INDICATOR = '00'
|
8
|
-
ID_POINT_OF_INITIATION_METHOD = '01'
|
9
|
-
ID_MERCHANT_ACCOUNT_INFORMATION = '26'
|
10
|
-
ID_MERCHANT_ACCOUNT_INFORMATION_GUI = '00'
|
11
|
-
ID_MERCHANT_ACCOUNT_INFORMATION_KEY = '01'
|
12
|
-
ID_MERCHANT_ACCOUNT_INFORMATION_DESCRIPTION = '02'
|
13
|
-
ID_MERCHANT_CATEGORY_CODE = '52'
|
14
|
-
ID_TRANSACTION_CURRENCY = '53'
|
15
|
-
ID_TRANSACTION_AMOUNT = '54'
|
16
|
-
ID_COUNTRY_CODE = '58'
|
17
|
-
ID_MERCHANT_NAME = '59'
|
18
|
-
ID_MERCHANT_CITY = '60'
|
19
|
-
ID_POSTAL_CODE = '61'
|
20
|
-
ID_ADDITIONAL_DATA_FIELD_TEMPLATE = '62'
|
21
|
-
ID_ADDITIONAL_DATA_FIELD_TEMPLATE_TXID = '05'
|
22
|
-
ID_CRC16 = '63'
|
7
|
+
ID_PAYLOAD_FORMAT_INDICATOR = '00'
|
8
|
+
ID_POINT_OF_INITIATION_METHOD = '01'
|
9
|
+
ID_MERCHANT_ACCOUNT_INFORMATION = '26'
|
10
|
+
ID_MERCHANT_ACCOUNT_INFORMATION_GUI = '00'
|
11
|
+
ID_MERCHANT_ACCOUNT_INFORMATION_KEY = '01'
|
12
|
+
ID_MERCHANT_ACCOUNT_INFORMATION_DESCRIPTION = '02'
|
13
|
+
ID_MERCHANT_CATEGORY_CODE = '52'
|
14
|
+
ID_TRANSACTION_CURRENCY = '53'
|
15
|
+
ID_TRANSACTION_AMOUNT = '54'
|
16
|
+
ID_COUNTRY_CODE = '58'
|
17
|
+
ID_MERCHANT_NAME = '59'
|
18
|
+
ID_MERCHANT_CITY = '60'
|
19
|
+
ID_POSTAL_CODE = '61'
|
20
|
+
ID_ADDITIONAL_DATA_FIELD_TEMPLATE = '62'
|
21
|
+
ID_ADDITIONAL_DATA_FIELD_TEMPLATE_TXID = '05'
|
22
|
+
ID_CRC16 = '63'
|
23
23
|
|
24
24
|
attr_accessor :pix_key,
|
25
25
|
:repeatable,
|
@@ -33,7 +33,7 @@ module QrcodePixRuby
|
|
33
33
|
:amount
|
34
34
|
|
35
35
|
def payload
|
36
|
-
p
|
36
|
+
p = ''
|
37
37
|
|
38
38
|
p += emv(ID_PAYLOAD_FORMAT_INDICATOR, '01')
|
39
39
|
p += emv_repeatable
|
@@ -51,7 +51,17 @@ module QrcodePixRuby
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def base64
|
54
|
-
::RQRCode::QRCode.new(payload).as_png(
|
54
|
+
::RQRCode::QRCode.new(payload).as_png(
|
55
|
+
bit_depth: 1,
|
56
|
+
border_modules: 0,
|
57
|
+
color_mode: 0,
|
58
|
+
color: 'black',
|
59
|
+
file: nil,
|
60
|
+
fill: 'white',
|
61
|
+
module_px_size: 6,
|
62
|
+
resize_exactly_to: false,
|
63
|
+
resize_gte_to: false
|
64
|
+
).to_data_url
|
55
65
|
end
|
56
66
|
|
57
67
|
private
|
@@ -66,41 +76,34 @@ module QrcodePixRuby
|
|
66
76
|
end
|
67
77
|
|
68
78
|
def emv_merchant
|
69
|
-
merchant_gui = emv
|
70
|
-
merchant_pix_key = emv
|
79
|
+
merchant_gui = emv(ID_MERCHANT_ACCOUNT_INFORMATION_GUI, 'BR.GOV.BCB.PIX')
|
80
|
+
merchant_pix_key = emv(ID_MERCHANT_ACCOUNT_INFORMATION_KEY, pix_key)
|
71
81
|
merchant_description = emv(ID_MERCHANT_ACCOUNT_INFORMATION_DESCRIPTION, description) if description
|
72
|
-
|
73
|
-
emv ID_MERCHANT_ACCOUNT_INFORMATION, "#{merchant_gui}#{merchant_pix_key}#{merchant_description}"
|
82
|
+
emv(ID_MERCHANT_ACCOUNT_INFORMATION, "#{merchant_gui}#{merchant_pix_key}#{merchant_description}")
|
74
83
|
end
|
75
84
|
|
76
85
|
def emv_additional_data
|
77
86
|
txid = emv(ID_ADDITIONAL_DATA_FIELD_TEMPLATE_TXID, transaction_id || '***')
|
78
|
-
emv
|
87
|
+
emv(ID_ADDITIONAL_DATA_FIELD_TEMPLATE, txid)
|
79
88
|
end
|
80
89
|
|
81
|
-
def crc16(
|
82
|
-
extended_payload = "#{
|
90
|
+
def crc16(text)
|
91
|
+
extended_payload = "#{text}#{ID_CRC16}04"
|
83
92
|
extended_payload_length = extended_payload.length
|
84
93
|
polynomial = 0x1021
|
85
94
|
result = 0xFFFF
|
86
95
|
|
87
|
-
if extended_payload_length
|
96
|
+
if extended_payload_length.positive?
|
88
97
|
offset = 0
|
89
98
|
|
90
99
|
while offset < extended_payload_length
|
91
|
-
result
|
92
|
-
|
100
|
+
result ^= extended_payload[offset].bytes[0] << 8
|
93
101
|
bitwise = 0
|
94
102
|
|
95
103
|
while bitwise < 8
|
96
|
-
result
|
97
|
-
|
98
|
-
|
99
|
-
result = result ^ polynomial
|
100
|
-
end
|
101
|
-
|
102
|
-
result = result & 0xFFFF
|
103
|
-
|
104
|
+
result <<= 1
|
105
|
+
result ^= polynomial if result & 0x10000 != 0
|
106
|
+
result &= 0xFFFF
|
104
107
|
bitwise += 1
|
105
108
|
end
|
106
109
|
|
data/qrcode_pix_ruby.gemspec
CHANGED
@@ -5,15 +5,16 @@ require_relative 'lib/qrcode_pix_ruby/version'
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'qrcode_pix_ruby'
|
7
7
|
spec.version = QrcodePixRuby::VERSION
|
8
|
-
spec.authors = [
|
9
|
-
spec.email = [
|
10
|
-
spec.summary =
|
11
|
-
spec.description =
|
12
|
-
spec.homepage =
|
13
|
-
spec.license =
|
14
|
-
spec.metadata[
|
15
|
-
spec.metadata[
|
16
|
-
spec.metadata[
|
8
|
+
spec.authors = ['Pedro Furtado', 'Marcio de Jesus', 'William Radi', 'Leonardo Comar']
|
9
|
+
spec.email = ['pedro.felipe.azevedo.furtado@gmail.com', 'marciodejesusrj@gmail.com', 'williamw@lbv.org.br', 'lfcomar@lbv.org.br']
|
10
|
+
spec.summary = 'Ruby gem for Qrcode generation of Pix (Pagamento Instantâneo Brasileiro - Banco Central do Brasil)'
|
11
|
+
spec.description = 'Ruby gem for Qrcode generation of Pix (Pagamento Instantâneo Brasileiro - Banco Central do Brasil)'
|
12
|
+
spec.homepage = 'https://github.com/pedrofurtado/qrcode_pix_ruby'
|
13
|
+
spec.license = 'MIT'
|
14
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
15
|
+
spec.metadata['source_code_uri'] = spec.homepage
|
16
|
+
spec.metadata['changelog_uri'] = "#{spec.homepage}/CHANGELOG.md"
|
17
|
+
spec.required_ruby_version = '>= 2.3.0'
|
17
18
|
|
18
19
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
19
20
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
|
@@ -23,7 +24,8 @@ Gem::Specification.new do |spec|
|
|
23
24
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
24
25
|
spec.require_paths = ['lib']
|
25
26
|
|
26
|
-
spec.add_dependency '
|
27
|
-
spec.
|
28
|
-
spec.
|
27
|
+
spec.add_dependency 'rqrcode'
|
28
|
+
spec.add_development_dependency 'rake'
|
29
|
+
spec.add_development_dependency 'rspec'
|
30
|
+
spec.add_development_dependency 'rubocop'
|
29
31
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qrcode_pix_ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pedro Furtado
|
@@ -11,50 +11,64 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date: 2021-06-
|
14
|
+
date: 2021-06-26 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
|
-
name:
|
17
|
+
name: rqrcode
|
18
18
|
requirement: !ruby/object:Gem::Requirement
|
19
19
|
requirements:
|
20
|
-
- - "
|
20
|
+
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- - "
|
27
|
+
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '0'
|
37
|
+
type: :development
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
30
44
|
- !ruby/object:Gem::Dependency
|
31
45
|
name: rspec
|
32
46
|
requirement: !ruby/object:Gem::Requirement
|
33
47
|
requirements:
|
34
|
-
- - "
|
48
|
+
- - ">="
|
35
49
|
- !ruby/object:Gem::Version
|
36
|
-
version: '
|
37
|
-
type: :
|
50
|
+
version: '0'
|
51
|
+
type: :development
|
38
52
|
prerelease: false
|
39
53
|
version_requirements: !ruby/object:Gem::Requirement
|
40
54
|
requirements:
|
41
|
-
- - "
|
55
|
+
- - ">="
|
42
56
|
- !ruby/object:Gem::Version
|
43
|
-
version: '
|
57
|
+
version: '0'
|
44
58
|
- !ruby/object:Gem::Dependency
|
45
|
-
name:
|
59
|
+
name: rubocop
|
46
60
|
requirement: !ruby/object:Gem::Requirement
|
47
61
|
requirements:
|
48
|
-
- - "
|
62
|
+
- - ">="
|
49
63
|
- !ruby/object:Gem::Version
|
50
|
-
version: '
|
51
|
-
type: :
|
64
|
+
version: '0'
|
65
|
+
type: :development
|
52
66
|
prerelease: false
|
53
67
|
version_requirements: !ruby/object:Gem::Requirement
|
54
68
|
requirements:
|
55
|
-
- - "
|
69
|
+
- - ">="
|
56
70
|
- !ruby/object:Gem::Version
|
57
|
-
version: '
|
71
|
+
version: '0'
|
58
72
|
description: Ruby gem for Qrcode generation of Pix (Pagamento Instantâneo Brasileiro
|
59
73
|
- Banco Central do Brasil)
|
60
74
|
email:
|
@@ -70,6 +84,7 @@ files:
|
|
70
84
|
- ".github/workflows/rubygems.yml"
|
71
85
|
- ".gitignore"
|
72
86
|
- ".rspec"
|
87
|
+
- ".rubocop.yml"
|
73
88
|
- CHANGELOG.md
|
74
89
|
- CODE_OF_CONDUCT.md
|
75
90
|
- Dockerfile
|
@@ -99,7 +114,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
99
114
|
requirements:
|
100
115
|
- - ">="
|
101
116
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
117
|
+
version: 2.3.0
|
103
118
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
119
|
requirements:
|
105
120
|
- - ">="
|