qrcode_pix_ruby 0.1.0 → 0.2.0
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/.github/workflows/rubygems.yml +30 -0
- data/.gitignore +2 -1
- data/README.md +19 -1
- data/lib/qrcode_pix_ruby/payload.rb +21 -7
- data/lib/qrcode_pix_ruby/version.rb +1 -1
- data/qrcode_pix_ruby.gemspec +1 -0
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 35b4d652b206592b48976ae27f1c3e461d53b9b90ba6d7d3845e8578ff38d2d5
|
4
|
+
data.tar.gz: 3718c9e90ca609015f5eec3531ff3c35fd0945be24f5e06430e2e3b1278fb4d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf822ee3996b5d30ad39068e3e20d5b7114556defb15d3265a5e30bb6f076f6b0018fdf4cbc7eafac1d91ceea927a92891ea9649402d4663e713a83fcfe8c441
|
7
|
+
data.tar.gz: 7771a3304e461bf393b38841ed4d14c18b83c55e69399245e92502d459fbbe55ff96447383579504a7c765fd7f89c17ccf818b544cce8a4d994429f0dc4d5823
|
data/.github/workflows/ci.yml
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
name: Publish to Rubygems
|
2
|
+
|
3
|
+
on:
|
4
|
+
release:
|
5
|
+
types: [created]
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
publish-to-rubygems:
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
steps:
|
11
|
+
- uses: actions/checkout@v2
|
12
|
+
|
13
|
+
- name: Install Ruby
|
14
|
+
uses: ruby/setup-ruby@v1
|
15
|
+
with:
|
16
|
+
ruby-version: 3.0
|
17
|
+
|
18
|
+
- name: Install dependencies
|
19
|
+
run: bundle install
|
20
|
+
|
21
|
+
- name: Publish to Rubygems
|
22
|
+
run: |
|
23
|
+
mkdir -p $HOME/.gem
|
24
|
+
touch $HOME/.gem/credentials
|
25
|
+
chmod 0600 $HOME/.gem/credentials
|
26
|
+
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
27
|
+
gem build *.gemspec
|
28
|
+
gem push *.gem
|
29
|
+
env:
|
30
|
+
GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
-
#
|
1
|
+
# QRCode Pix Ruby
|
2
|
+
|
3
|
+
[](https://github.com/pedrofurtado/qrcode_pix_ruby/actions/workflows/ci.yml)
|
4
|
+
[](https://badge.fury.io/rb/qrcode_pix_ruby)
|
5
|
+
[]()
|
6
|
+
[]()
|
2
7
|
|
3
8
|
Ruby gem for Qrcode generation of Pix (Pagamento Instantâneo Brasileiro - Banco Central do Brasil)
|
4
9
|
|
@@ -31,11 +36,24 @@ pix.merchant_name = 'William Costa'
|
|
31
36
|
pix.merchant_city = 'SAO PAULO'
|
32
37
|
pix.transaction_id = 'WDEV1234'
|
33
38
|
pix.amount = '100.00'
|
39
|
+
pix.repeatable = false
|
34
40
|
|
35
41
|
puts pix.payload
|
36
42
|
puts pix.base64
|
37
43
|
```
|
38
44
|
|
45
|
+
## Useful links
|
46
|
+
|
47
|
+
* https://github.com/joseviniciusnunes/qrcode-pix
|
48
|
+
* https://www.gerarpix.com.br
|
49
|
+
* https://github.com/fbbergamo/gerador-pix
|
50
|
+
* https://pix.ae
|
51
|
+
* https://pix.nascent.com.br/tools/pix-qr-decoder
|
52
|
+
* https://openpix.com.br/qrcode/scanner
|
53
|
+
* https://openpix.com.br/qrcode/debug
|
54
|
+
* https://github.com/william-costa/wdev-qrcode-pix-estatico-php
|
55
|
+
* https://www.youtube.com/watch?v=eO11iFgrdCA
|
56
|
+
|
39
57
|
## Contributing
|
40
58
|
|
41
59
|
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).
|
@@ -1,8 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'rqrcode'
|
4
|
+
|
3
5
|
module QrcodePixRuby
|
4
6
|
class Payload
|
5
7
|
ID_PAYLOAD_FORMAT_INDICATOR = '00'.freeze
|
8
|
+
ID_POINT_OF_INITIATION_METHOD = '01'.freeze
|
6
9
|
ID_MERCHANT_ACCOUNT_INFORMATION = '26'.freeze
|
7
10
|
ID_MERCHANT_ACCOUNT_INFORMATION_GUI = '00'.freeze
|
8
11
|
ID_MERCHANT_ACCOUNT_INFORMATION_KEY = '01'.freeze
|
@@ -13,12 +16,17 @@ module QrcodePixRuby
|
|
13
16
|
ID_COUNTRY_CODE = '58'.freeze
|
14
17
|
ID_MERCHANT_NAME = '59'.freeze
|
15
18
|
ID_MERCHANT_CITY = '60'.freeze
|
19
|
+
ID_POSTAL_CODE = '61'.freeze
|
16
20
|
ID_ADDITIONAL_DATA_FIELD_TEMPLATE = '62'.freeze
|
17
21
|
ID_ADDITIONAL_DATA_FIELD_TEMPLATE_TXID = '05'.freeze
|
18
22
|
ID_CRC16 = '63'.freeze
|
19
23
|
|
20
24
|
attr_accessor :pix_key,
|
25
|
+
:repeatable,
|
26
|
+
:currency,
|
27
|
+
:country_code,
|
21
28
|
:description,
|
29
|
+
:postal_code,
|
22
30
|
:merchant_name,
|
23
31
|
:merchant_city,
|
24
32
|
:transaction_id,
|
@@ -28,20 +36,22 @@ module QrcodePixRuby
|
|
28
36
|
p = ''
|
29
37
|
|
30
38
|
p += emv(ID_PAYLOAD_FORMAT_INDICATOR, '01')
|
39
|
+
p += emv_repeatable
|
31
40
|
p += emv_merchant
|
32
41
|
p += emv(ID_MERCHANT_CATEGORY_CODE, '0000')
|
33
|
-
p += emv(ID_TRANSACTION_CURRENCY, '986')
|
34
|
-
p += emv(ID_TRANSACTION_AMOUNT, amount)
|
35
|
-
p += emv(ID_COUNTRY_CODE, 'BR')
|
42
|
+
p += emv(ID_TRANSACTION_CURRENCY, currency || '986')
|
43
|
+
p += emv(ID_TRANSACTION_AMOUNT, amount) if amount
|
44
|
+
p += emv(ID_COUNTRY_CODE, country_code || 'BR')
|
36
45
|
p += emv(ID_MERCHANT_NAME, merchant_name)
|
37
46
|
p += emv(ID_MERCHANT_CITY, merchant_city)
|
47
|
+
p += emv(ID_POSTAL_CODE, postal_code) if postal_code
|
38
48
|
p += emv_additional_data
|
39
49
|
|
40
50
|
p + crc16(p)
|
41
51
|
end
|
42
52
|
|
43
53
|
def base64
|
44
|
-
''
|
54
|
+
::RQRCode::QRCode.new(payload).as_png(bit_depth: 1, border_modules: 0, color_mode: 0, color: 'black', file: nil, fill: 'white', module_px_size: 6, resize_exactly_to: false, resize_gte_to: false, size: 200).to_data_url
|
45
55
|
end
|
46
56
|
|
47
57
|
private
|
@@ -51,16 +61,20 @@ module QrcodePixRuby
|
|
51
61
|
"#{id}#{size}#{value}"
|
52
62
|
end
|
53
63
|
|
64
|
+
def emv_repeatable
|
65
|
+
emv(ID_POINT_OF_INITIATION_METHOD, repeatable ? '12' : '11')
|
66
|
+
end
|
67
|
+
|
54
68
|
def emv_merchant
|
55
|
-
merchant_gui = emv ID_MERCHANT_ACCOUNT_INFORMATION_GUI, '
|
69
|
+
merchant_gui = emv ID_MERCHANT_ACCOUNT_INFORMATION_GUI, 'BR.GOV.BCB.PIX'
|
56
70
|
merchant_pix_key = emv ID_MERCHANT_ACCOUNT_INFORMATION_KEY, pix_key
|
57
|
-
merchant_description = emv
|
71
|
+
merchant_description = emv(ID_MERCHANT_ACCOUNT_INFORMATION_DESCRIPTION, description) if description
|
58
72
|
|
59
73
|
emv ID_MERCHANT_ACCOUNT_INFORMATION, "#{merchant_gui}#{merchant_pix_key}#{merchant_description}"
|
60
74
|
end
|
61
75
|
|
62
76
|
def emv_additional_data
|
63
|
-
txid = emv(ID_ADDITIONAL_DATA_FIELD_TEMPLATE_TXID, transaction_id)
|
77
|
+
txid = emv(ID_ADDITIONAL_DATA_FIELD_TEMPLATE_TXID, transaction_id || '***')
|
64
78
|
emv ID_ADDITIONAL_DATA_FIELD_TEMPLATE, txid
|
65
79
|
end
|
66
80
|
|
data/qrcode_pix_ruby.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pedro Furtado
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-06-
|
11
|
+
date: 2021-06-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '3.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rqrcode
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.0'
|
41
55
|
description: Ruby gem for Qrcode generation of Pix (Pagamento Instantâneo Brasileiro
|
42
56
|
- Banco Central do Brasil)
|
43
57
|
email:
|
@@ -47,12 +61,12 @@ extensions: []
|
|
47
61
|
extra_rdoc_files: []
|
48
62
|
files:
|
49
63
|
- ".github/workflows/ci.yml"
|
64
|
+
- ".github/workflows/rubygems.yml"
|
50
65
|
- ".gitignore"
|
51
66
|
- ".rspec"
|
52
67
|
- CHANGELOG.md
|
53
68
|
- CODE_OF_CONDUCT.md
|
54
69
|
- Gemfile
|
55
|
-
- Gemfile.lock
|
56
70
|
- LICENSE.txt
|
57
71
|
- README.md
|
58
72
|
- Rakefile
|
@@ -69,7 +83,7 @@ metadata:
|
|
69
83
|
homepage_uri: https://github.com/pedrofurtado/qrcode_pix_ruby
|
70
84
|
source_code_uri: https://github.com/pedrofurtado/qrcode_pix_ruby
|
71
85
|
changelog_uri: https://github.com/pedrofurtado/qrcode_pix_ruby/CHANGELOG.md
|
72
|
-
post_install_message:
|
86
|
+
post_install_message:
|
73
87
|
rdoc_options: []
|
74
88
|
require_paths:
|
75
89
|
- lib
|
@@ -85,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
85
99
|
version: '0'
|
86
100
|
requirements: []
|
87
101
|
rubygems_version: 3.2.15
|
88
|
-
signing_key:
|
102
|
+
signing_key:
|
89
103
|
specification_version: 4
|
90
104
|
summary: Ruby gem for Qrcode generation of Pix (Pagamento Instantâneo Brasileiro -
|
91
105
|
Banco Central do Brasil)
|