All Projects → dongri → emv-qrcode

dongri / emv-qrcode

Licence: other
Golang Based EMV QR Code Generator and Parser (MPM, CPM)

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to emv-qrcode

go-emv-code
EMV® QR Code Encoder/Decoder for Go.
Stars: ✭ 60 (+39.53%)
Mutual labels:  qrcode, qr, emv
Qr Code Scanner
📠 A simple, fast and useful progressive web application
Stars: ✭ 982 (+2183.72%)
Mutual labels:  qrcode, qr
Qr Code Scanner
Full stable QR code scanner android app.
Stars: ✭ 28 (-34.88%)
Mutual labels:  qrcode, qr
Awesome Qr.js
An awesome QR code generator written in JavaScript.
Stars: ✭ 1,247 (+2800%)
Mutual labels:  qrcode, qr
Cordova Plugin Qrscanner
A fast, energy efficient, highly-configurable QR code scanner for Cordova apps and the browser.
Stars: ✭ 485 (+1027.91%)
Mutual labels:  qrcode, qr
Qr Image
Yet another QR code generator
Stars: ✭ 922 (+2044.19%)
Mutual labels:  qrcode, qr
Qrious
Pure JavaScript library for QR code generation using canvas
Stars: ✭ 1,160 (+2597.67%)
Mutual labels:  qrcode, qr
qrcode
A flutter plugin for scanning QR codes. Use AVCaptureSession in iOS and zxing in Android.
Stars: ✭ 69 (+60.47%)
Mutual labels:  qrcode, qr
Jrqrcode
二维码生成库,把内容生成二维码,以base64编码的图片输出
Stars: ✭ 128 (+197.67%)
Mutual labels:  qrcode, qr
Qrscanner
A simple QR Code scanner framework for iOS. Provides a similar scan effect to ios13.
Stars: ✭ 134 (+211.63%)
Mutual labels:  qrcode, qr
React Qr Svg
React component for rendering SVG QR codes
Stars: ✭ 134 (+211.63%)
Mutual labels:  qrcode, qr
Qr.flutter
QR.Flutter is a Flutter library for simple and fast QR code rendering via a Widget or custom painter.
Stars: ✭ 434 (+909.3%)
Mutual labels:  qrcode, qr
Qr Code
Web Component for generating QR codes
Stars: ✭ 425 (+888.37%)
Mutual labels:  qrcode, qr
Qrcode
qrcode scanner ( decoder ) by golang 二维码扫描识别
Stars: ✭ 233 (+441.86%)
Mutual labels:  qrcode, qr
qr
🔲 Generate QR Codes straight in your terminal!
Stars: ✭ 34 (-20.93%)
Mutual labels:  qrcode, qr
Qr Ascii
A small library to generate QR codes with ascii
Stars: ✭ 63 (+46.51%)
Mutual labels:  qrcode, qr
Qrcode Library
Create QrCodes with ease
Stars: ✭ 184 (+327.91%)
Mutual labels:  qrcode, qr
koder
QR/bar code scanner for the Browser
Stars: ✭ 73 (+69.77%)
Mutual labels:  qrcode, qr
react-native-qr-scanner
一个二维码扫描组件,依赖react-native-camera
Stars: ✭ 111 (+158.14%)
Mutual labels:  qrcode, qr
Qrbtf
An art QR code (qrcode) beautifier. 艺术二维码生成器。https://qrbtf.com
Stars: ✭ 1,391 (+3134.88%)
Mutual labels:  qrcode, qr

EMVco QR code

CircleCI

Go Report Card

Documents

https://github.com/dongri/emv-qrcode-doc

MPM (Merchant Presented Mode)

package main

import(
	"log"

	"github.com/dongri/emv-qrcode/emv/mpm"
)
func main() {

	// MPM Encode
	emvqr := new(mpm.EMVQR)
	emvqr.SetPayloadFormatIndicator("01")
	emvqr.SetPointOfInitiationMethod("12") // 11 is static qrcode
	merchantAccountInformationJCB := new(mpm.MerchantAccountInformation)
	merchantAccountInformationJCB.SetGloballyUniqueIdentifier("D123456")
	merchantAccountInformationJCB.AddPaymentNetworkSpecific("13", "JCB1234567890")
	emvqr.AddMerchantAccountInformation(mpm.ID("29"), merchantAccountInformationJCB)

	merchantAccountInformationMaster := new(mpm.MerchantAccountInformation)
	merchantAccountInformationMaster.SetGloballyUniqueIdentifier("M123456")
	merchantAccountInformationMaster.AddPaymentNetworkSpecific("04", "MASTER1234567890")
	emvqr.AddMerchantAccountInformation(mpm.ID("31"), merchantAccountInformationMaster)

	emvqr.SetMerchantCategoryCode("5311")
	emvqr.SetTransactionCurrency("392")
	emvqr.SetTransactionAmount("999.123")
	emvqr.SetCountryCode("JP")
	emvqr.SetMerchantName("DONGRI")
	emvqr.SetMerchantCity("TOKYO")
	additionalTemplate := new(mpm.AdditionalDataFieldTemplate)
	additionalTemplate.SetBillNumber("hoge")
	additionalTemplate.SetReferenceLabel("fuga")
	additionalTemplate.SetTerminalLabel("piyo")
	emvqr.SetAdditionalDataFieldTemplate(additionalTemplate)
	code, err := mpm.Encode(emvqr)
	if err != nil {
		log.Println(err.Error())
		return
	}
	log.Println(code) // 0002010102121313JCB12345678900416MASTER12345678905204531153033925407999.1235802JP5906DONGRI6005TOKYO62240104hoge0504fuga0704piyo6304C343

	// MPM Decode
	emvqr, err = mpm.Decode("00020101021229300012D156000000000510A93FO3230Q31280012D15600000001030812345678520441115802CN5914BEST TRANSPORT6007BEIJING64200002ZH0104最佳运输0202北京540523.7253031565502016233030412340603***0708A60086670902ME91320016A0112233449988770708123456786304A13A")
	if err != nil {
		log.Println(err)
		return
	}
	log.Println(emvqr)

	// Print Raw Data
	raw := emvqr.RawData()
	log.Println("\n" + raw)

	// Print Binary Data
	binary := emvqr.BinaryData()
	log.Println("\n" + binary)

	// Print JSON
	json := emvqr.JSON()
	log.Println(json)

}

CPM (Consumer Presented Mode)

package main

import(
	"log"

	"github.com/dongri/emv-qrcode/emv/cpm"
)
func main() {
	qr := new(cpm.EMVQR)
	qr.DataPayloadFormatIndicator = "CPV01"

	appTemplate1 := new(cpm.ApplicationTemplate)
	appTemplate1.DataApplicationDefinitionFileName = "A0000000555555"
	appTemplate1.DataApplicationLabel = "Product1"
	qr.ApplicationTemplates = append(qr.ApplicationTemplates, *appTemplate1)

	appTemplate2 := new(cpm.ApplicationTemplate)
	appTemplate2.DataApplicationDefinitionFileName = "A0000000666666"
	appTemplate2.DataApplicationLabel = "Product2"
	qr.ApplicationTemplates = append(qr.ApplicationTemplates, *appTemplate2)

	cdt := new(cpm.CommonDataTemplate)
	cdt.DataApplicationPAN = "1234567890123458"
	cdt.DataCardholderName = "CARDHOLDER/EMV"
	cdt.DataLanguagePreference = "ruesdeen"

	cdtt := new(cpm.CommonDataTransparentTemplate)
	cdtt.DataIssuerApplicationData = "06010A03000000"
	cdtt.DataApplicationCryptogram = "584FD385FA234BCC"
	cdtt.DataApplicationTransactionCounter = "0001"
	cdtt.DataUnpredictableNumber = "6D58EF13"
	cdt.CommonDataTransparentTemplates = append(cdt.CommonDataTransparentTemplates, *cdtt)

	qr.CommonDataTemplates = append(qr.CommonDataTemplates, *cdt)

	comQRCode, err := qr.GeneratePayload()
	if err != nil {
		log.Println(err)
	}
	log.Println(comQRCode)
	// hQVDUFYwMWETTwegAAAAVVVVUAhQcm9kdWN0MWETTwegAAAAZmZmUAhQcm9kdWN0MmJJWggSNFZ4kBI0WF8gDkNBUkRIT0xERVIvRU1WXy0IcnVlc2RlZW5kIZ8QBwYBCgMAAACfJghYT9OF+iNLzJ82AgABnzcEbVjvEw==
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].