qrcode_pix_ruby 0.3.4 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +11 -0
- data/.github/workflows/heroku.yml +7 -1
- data/.gitignore +1 -1
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +4 -0
- data/Dockerfile +2 -4
- data/README.md +51 -24
- data/demo/Gemfile +1 -1
- data/demo/config.ru +8 -4
- data/lib/qrcode_pix_ruby/payload.rb +5 -2
- data/lib/qrcode_pix_ruby/version.rb +1 -1
- metadata +3 -4
- data/demo/Gemfile.lock +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4286f32be5f071b29e6f504834595f8f5dbc0ef1fdced824b76cfef429763c15
|
4
|
+
data.tar.gz: 24c12240f5df73f9dff448f1521401e990b0b2f7d3b78b4131a6e5294e14f61e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71a8669277a170358742ffbb6bbfbb7dc6c0a4d6050640050ae793d329e6af5b535756672f27b156bd9dc22c0c1a465e371cdd0393097e09fdb2074101221f5c
|
7
|
+
data.tar.gz: 93e4f118bd2df45b4ed2f56a012808a0d63e40e40e9c5283ad34baf4550684997d434694f14b7227b52f0bdfda42933f5e862763a66be2dd355013d3d154d5c7
|
data/.github/workflows/ci.yml
CHANGED
@@ -3,6 +3,17 @@ name: CI
|
|
3
3
|
on: [push, pull_request]
|
4
4
|
|
5
5
|
jobs:
|
6
|
+
dockerfile:
|
7
|
+
runs-on: ubuntu-latest
|
8
|
+
steps:
|
9
|
+
- uses: actions/checkout@v2
|
10
|
+
|
11
|
+
- name: Build Dockerfile
|
12
|
+
run: docker build -t qrcode_pix_ruby_specs .
|
13
|
+
|
14
|
+
- name: Run tests inside Docker container
|
15
|
+
run: docker run -v $(pwd):/app/ -i qrcode_pix_ruby_specs
|
16
|
+
|
6
17
|
tests:
|
7
18
|
runs-on: ubuntu-latest
|
8
19
|
strategy:
|
@@ -18,6 +18,7 @@ jobs:
|
|
18
18
|
- name: Install dependencies
|
19
19
|
run: |
|
20
20
|
cd demo/
|
21
|
+
bundle install
|
21
22
|
bundle update qrcode_pix_ruby
|
22
23
|
cd ../
|
23
24
|
|
@@ -41,4 +42,9 @@ jobs:
|
|
41
42
|
HEROKU_APP_NAME: ${{ secrets.HEROKU_APP_NAME }}
|
42
43
|
|
43
44
|
- name: Publish to Heroku
|
44
|
-
run:
|
45
|
+
run: |
|
46
|
+
git config user.name 'Pedro Furtado'
|
47
|
+
git config user.email 'pedro.felipe.azevedo.furtado@gmail.com'
|
48
|
+
git add --all
|
49
|
+
git commit -m 'Publish to Heroku'
|
50
|
+
git push heroku `git subtree split --prefix demo master`:master --force
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/Dockerfile
CHANGED
data/README.md
CHANGED
@@ -29,13 +29,14 @@ Or install it yourself as:
|
|
29
29
|
|
30
30
|
gem install qrcode_pix_ruby
|
31
31
|
|
32
|
-
## Usage
|
32
|
+
## Usage (examples)
|
33
|
+
|
34
|
+
### Static QR Code
|
33
35
|
|
34
36
|
```ruby
|
35
37
|
require 'qrcode_pix_ruby'
|
36
38
|
|
37
|
-
pix
|
38
|
-
|
39
|
+
pix = QrcodePixRuby::Payload.new
|
39
40
|
pix.pix_key = 'minhachavedopix'
|
40
41
|
pix.description = 'Pagamento do pedido 123456'
|
41
42
|
pix.merchant_name = 'Fulano de Tal'
|
@@ -50,31 +51,31 @@ pix.repeatable = false
|
|
50
51
|
# QRCode copia-e-cola
|
51
52
|
puts pix.payload
|
52
53
|
|
53
|
-
# QRCode
|
54
|
+
# QRCode para uso em imagens
|
54
55
|
puts pix.base64
|
55
56
|
```
|
56
57
|
|
57
|
-
|
58
|
+
### Dynamic QR Code
|
58
59
|
|
59
|
-
|
60
|
+
```ruby
|
61
|
+
require 'qrcode_pix_ruby'
|
60
62
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
* https://github.com/entria/awesome-pix
|
63
|
+
pix = QrcodePixRuby::Payload.new
|
64
|
+
pix.url = 'https://example.com'
|
65
|
+
pix.merchant_name = 'Fulano de Tal'
|
66
|
+
pix.merchant_city = 'SAO PAULO'
|
67
|
+
pix.amount = '100.00'
|
68
|
+
pix.transaction_id = 'TID12345'
|
69
|
+
pix.repeatable = false
|
70
|
+
|
71
|
+
# QRCode copia-e-cola
|
72
|
+
puts pix.payload
|
73
|
+
|
74
|
+
# QRCode para uso em imagens
|
75
|
+
puts pix.base64
|
76
|
+
```
|
77
|
+
|
78
|
+
🚨 Important note: BACEN (Banco Central do Brasil) sets a variety of rules for each field in QRCode Payload (maximum number of characters, invalid values, mandatory and optional fields, and so on). So, pay attention that a QRCode payload+base64 generated by the gem can be valid, theorically, but may not be accepted in banking apps because of these restrictions (that are out of scope of gem).
|
78
79
|
|
79
80
|
## Execute tests/specs
|
80
81
|
|
@@ -93,12 +94,38 @@ docker run -v $(pwd):/app/ -it qrcode_pix_ruby_specs
|
|
93
94
|
|
94
95
|
## Demo
|
95
96
|
|
96
|
-
It's provided a simple demo app, in Heroku, that uses the gem always in latest
|
97
|
+
It's provided a simple demo app, in Heroku, that uses the gem always in latest commit. You can check and test your QRCodes here:
|
97
98
|
|
98
99
|
https://qrcode-pix-ruby.herokuapp.com
|
99
100
|
|
100
101
|
🚨 Important note: The first page load can be slow, because of Heroku free tier. But don't worry, the demo works well 🤓
|
101
102
|
|
103
|
+
## Useful links
|
104
|
+
|
105
|
+
* https://github.com/joseviniciusnunes/qrcode-pix
|
106
|
+
* https://www.bcb.gov.br/content/estabilidadefinanceira/forumpireunioes/AnexoI-PadroesParaIniciacaodoPix.pdf
|
107
|
+
* https://github.com/renatomb/php_qrcode_pix
|
108
|
+
* https://www.gerarpix.com.br
|
109
|
+
* https://github.com/fbbergamo/gerador-pix
|
110
|
+
* https://pix.ae
|
111
|
+
* https://pix.nascent.com.br/tools/pix-qr-decoder
|
112
|
+
* https://openpix.com.br/qrcode/scanner
|
113
|
+
* https://openpix.com.br/qrcode/debug
|
114
|
+
* https://github.com/william-costa/wdev-qrcode-pix-estatico-php
|
115
|
+
* https://github.com/william-costa/wdev-qrcode-pix-php
|
116
|
+
* https://www.youtube.com/watch?v=eO11iFgrdCA
|
117
|
+
* https://qrcodepix.dinheiro.tech
|
118
|
+
* http://decoder.qrcodepix.dinheiro.tech
|
119
|
+
* https://www.bcb.gov.br/estabilidadefinanceira/pix
|
120
|
+
* https://gerencianet.com.br/blog/qr-code-estatico-qr-code-dinamico-no-pix
|
121
|
+
* https://blog.juno.com.br/pix-qr-code-estatico-x-qr-code-dinamico
|
122
|
+
* https://github.com/entria/awesome-pix
|
123
|
+
* https://zxing.org/w/decode.jspx
|
124
|
+
* https://github.com/hiagodotme/gpix
|
125
|
+
* https://github.com/EnssureIT/faz-um-pix
|
126
|
+
* https://github.com/jesobreira/pixkey
|
127
|
+
* https://github.com/pedrinholemes/pix-br
|
128
|
+
|
102
129
|
## Contributing
|
103
130
|
|
104
131
|
Bug reports and pull requests are welcome on GitHub at https://github.com/pedrofurtado/qrcode_pix_ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/pedrofurtado/qrcode_pix_ruby/blob/master/CODE_OF_CONDUCT.md).
|
data/demo/Gemfile
CHANGED
data/demo/config.ru
CHANGED
@@ -10,6 +10,7 @@ def generate_html_with(env)
|
|
10
10
|
|
11
11
|
unless qrcode_data.empty?
|
12
12
|
pix.pix_key = qrcode_data['pix_key'] unless qrcode_data['pix_key'].nil?
|
13
|
+
pix.url = qrcode_data['url'] unless qrcode_data['url'].nil?
|
13
14
|
pix.description = qrcode_data['description'] unless qrcode_data['description'].nil?
|
14
15
|
pix.merchant_name = qrcode_data['merchant_name'] unless qrcode_data['merchant_name'].nil?
|
15
16
|
pix.merchant_city = qrcode_data['merchant_city'] unless qrcode_data['merchant_city'].nil?
|
@@ -63,7 +64,11 @@ def generate_html_with(env)
|
|
63
64
|
<form action='https://qrcode-pix-ruby.herokuapp.com' method='post'>
|
64
65
|
<div class='mb-3'>
|
65
66
|
<label for='pix_key'>Pix key</label>
|
66
|
-
<input
|
67
|
+
<input type='text' class='form-control' id='pix_key' value='#{qrcode_data["pix_key"]}' name='pix_key'>
|
68
|
+
</div>
|
69
|
+
<div class='mb-3'>
|
70
|
+
<label for='url'>URL</label>
|
71
|
+
<input type='text' class='form-control' id='url' value='#{qrcode_data["url"]}' name='url'>
|
67
72
|
</div>
|
68
73
|
<div class='mb-3'>
|
69
74
|
<label for='description'>Description</label>
|
@@ -99,7 +104,7 @@ def generate_html_with(env)
|
|
99
104
|
</div>
|
100
105
|
<div class='mb-3'>
|
101
106
|
<label for='postal_code'>Postal code</label>
|
102
|
-
<input
|
107
|
+
<input type='text' class='form-control' id='postal_code' value='#{qrcode_data["postal_code"]}' name='postal_code'>
|
103
108
|
</div>
|
104
109
|
<div class='mb-3'>
|
105
110
|
<label for='repeatable'>Repeatable?</label>
|
@@ -127,8 +132,7 @@ def generate_html_with(env)
|
|
127
132
|
</div>
|
128
133
|
<script>
|
129
134
|
new ClipboardJS('.btn-clipboard');
|
130
|
-
|
131
|
-
Array.from(document.querySelectorAll('[data-bs-toggle="tooltip"]')).forEach(function (tooltipTriggerEl) {
|
135
|
+
Array.from(document.querySelectorAll('[data-bs-toggle="tooltip"]')).forEach(function(tooltipTriggerEl) {
|
132
136
|
new bootstrap.Tooltip(tooltipTriggerEl);
|
133
137
|
});
|
134
138
|
</script>
|
@@ -10,6 +10,7 @@ module QrcodePixRuby
|
|
10
10
|
ID_MERCHANT_ACCOUNT_INFORMATION_GUI = '00'
|
11
11
|
ID_MERCHANT_ACCOUNT_INFORMATION_KEY = '01'
|
12
12
|
ID_MERCHANT_ACCOUNT_INFORMATION_DESCRIPTION = '02'
|
13
|
+
ID_MERCHANT_ACCOUNT_INFORMATION_URL = '25'
|
13
14
|
ID_MERCHANT_CATEGORY_CODE = '52'
|
14
15
|
ID_TRANSACTION_CURRENCY = '53'
|
15
16
|
ID_TRANSACTION_AMOUNT = '54'
|
@@ -22,6 +23,7 @@ module QrcodePixRuby
|
|
22
23
|
ID_CRC16 = '63'
|
23
24
|
|
24
25
|
attr_accessor :pix_key,
|
26
|
+
:url,
|
25
27
|
:repeatable,
|
26
28
|
:currency,
|
27
29
|
:country_code,
|
@@ -77,9 +79,10 @@ module QrcodePixRuby
|
|
77
79
|
|
78
80
|
def emv_merchant
|
79
81
|
merchant_gui = emv(ID_MERCHANT_ACCOUNT_INFORMATION_GUI, 'BR.GOV.BCB.PIX')
|
80
|
-
merchant_pix_key = emv(ID_MERCHANT_ACCOUNT_INFORMATION_KEY, pix_key)
|
82
|
+
merchant_pix_key = emv(ID_MERCHANT_ACCOUNT_INFORMATION_KEY, pix_key) if pix_key
|
81
83
|
merchant_description = emv(ID_MERCHANT_ACCOUNT_INFORMATION_DESCRIPTION, description) if description
|
82
|
-
emv(
|
84
|
+
merchant_url = emv(ID_MERCHANT_ACCOUNT_INFORMATION_URL, url.gsub(/https?:\/\//, '')) if url
|
85
|
+
emv(ID_MERCHANT_ACCOUNT_INFORMATION, "#{merchant_gui}#{merchant_pix_key}#{merchant_description}#{merchant_url}")
|
83
86
|
end
|
84
87
|
|
85
88
|
def emv_additional_data
|
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.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pedro Furtado
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date: 2021-
|
14
|
+
date: 2021-07-10 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rqrcode
|
@@ -96,7 +96,6 @@ files:
|
|
96
96
|
- bin/console
|
97
97
|
- bin/setup
|
98
98
|
- demo/Gemfile
|
99
|
-
- demo/Gemfile.lock
|
100
99
|
- demo/config.ru
|
101
100
|
- lib/qrcode_pix_ruby.rb
|
102
101
|
- lib/qrcode_pix_ruby/payload.rb
|
@@ -125,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
124
|
- !ruby/object:Gem::Version
|
126
125
|
version: '0'
|
127
126
|
requirements: []
|
128
|
-
rubygems_version: 3.2.
|
127
|
+
rubygems_version: 3.2.22
|
129
128
|
signing_key:
|
130
129
|
specification_version: 4
|
131
130
|
summary: Ruby gem for Qrcode generation of Pix (Pagamento Instantâneo Brasileiro -
|
data/demo/Gemfile.lock
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: https://rubygems.org/
|
3
|
-
specs:
|
4
|
-
chunky_png (1.4.0)
|
5
|
-
qrcode_pix_ruby (0.3.3)
|
6
|
-
rqrcode
|
7
|
-
rack (2.2.3)
|
8
|
-
rqrcode (2.0.0)
|
9
|
-
chunky_png (~> 1.0)
|
10
|
-
rqrcode_core (~> 1.0)
|
11
|
-
rqrcode_core (1.0.0)
|
12
|
-
|
13
|
-
PLATFORMS
|
14
|
-
x86_64-linux
|
15
|
-
|
16
|
-
DEPENDENCIES
|
17
|
-
qrcode_pix_ruby
|
18
|
-
rack
|
19
|
-
|
20
|
-
BUNDLED WITH
|
21
|
-
2.2.21
|