Class: Rubyqrpay::Generator

Inherits:
Object
  • Object
show all
Defined in:
lib/rubyqrpay/constants.rb,
lib/rubyqrpay/generator.rb

Constant Summary collapse

ID_PAYLOAD_FORMAT =
'00'
ID_POI_METHOD =
'01'
ID_MERCHANT_INFORMATION_32 =
'32'
ID_MERCHANT_INFORMATION_33 =
'33'
ID_MERCHANT_CATEGORY_CODE =
'52'
ID_TRANSACTION_CURRENCY =
'53'
ID_TRANSACTION_AMOUNT =
'54'
ID_TIP_OF_CONVENIENCE_INDICATOR =
'55'
ID_VALUE_OF_CONVENIENCE_FEE_FIXED =
'56'
ID_VALUE_OF_CONVENIENCE_FEE_PERCENTAGE =
'57'
ID_COUNTRY =
'58'
ID_MERCHANT_NAME =
'59'
ID_MERCHANT_CITY =
'60'
ID_POSTAL_CODE =
'61'
ID_ADDITIONAL_DATA_FIELD =
'62'
ID_MERCHANT_INFORMATION_LANGUAGE =
'64'
ID_CRC =
'63'
PAYLOAD_FORMAT_EMV_QRCPS_MERCHANT_PRESENTED_MODE =
'01'
POI_METHOD_STATIC =
'11'
POI_METHOD_DYNAMIC =
'12'
CONVENIENCE_INDICATOR_FIXED =
'02'
CONVENIENCE_INDICATOR_PERCENTAGE =
'03'
MERCHANT_INFORMATION_TEMPLATE_ID_GUID =
'00'
ID_SERVICE_CODE_ERIP =

ID_MERCHANT_INFORMATION_32

'01'
ID_PAYER_UNIQUE =
'10'
ID_PAYER_NUMBER =
'11'
ID_AMOUNT_EDIT_POSSIBILITY =
'12'
ID_SERVICE_PRODUCER_CODE =

ID_MERCHANT_INFORMATION_33

'03'
ID_SERVICE_CODE =
'04'
ID_OUTLET =
'05'
ID_ORDER_CODE =
'06'
ID_BILL_NUMBER =

ID_ADDITIONAL_DATA_FIELD

'01'
ID_MOBILE_NUMBER =
'02'
ID_STORE_LABEL =
'03'
ID_LOYALTY_NUMBER =
'04'
ID_REFERENCE_LABEL =
'05'
ID_CUSTOMER_LABEL =
'06'
ID_TERMINAL_LABEL =
'07'
ID_PURPOSE_OF_TRANSACTION =
'08'
ID_CONSUMER_DATA_REQUEST =
'09'
ID_LANGUAGE_REFERENCE =

ID_MERCHANT_INFORMATION_LANGUAGE

'00'
ID_MERCHANT_NAME_ALTERNATE =
'01'
ID_MERCHANT_CITY_ALTERNATE =
'02'
GUID_PROMPTPAY_32 =
'by.raschet'
GUID_PROMPTPAY_33 =
'by.epos.'
CRC_SYMBOL_SIZE =
'04'
AEP_DEFAULT =
'11'
AEP_FALSE =
'12'
K_SIZE_FUNC =
0.15
B_SIZE_FUNC =
140

Class Method Summary collapse

Class Method Details

.generate_payload(opts) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/rubyqrpay/generator.rb', line 11

def self.generate_payload(opts)
  opts = Rubyqrpay::Validator.validate_payload(opts)
  unless opts.nil?
    payload = generation(opts)
    percent_encode payload
  end
end

.generate_png(url, payload, **opts) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/rubyqrpay/generator.rb', line 19

def self.generate_png(url, payload, **opts)
  opts_default = {size: size_func(url, payload).to_i, level: :l}
  qrcode = RQRCode::QRCode.new("#{url}#{payload}", level: opts[:level] || opts_default[:level])
  png = qrcode.as_png(resize_gte_to: false,
                      resize_exactly_to: false,
                      fill: 'white',
                      color: 'black',
                      size: opts[:size] || opts_default[:size],
                      border_modules: 4,
                      module_px_size: 6)
  qrcode_to_base64(png)
end