EpcQrCode/README.md

2.5 KiB

EPC QR Code

Vermarktet als GiroCode, scan2Code, Zahlen mit Code, ... ist der EPC QR Code ein Standard des European Payments Council zum Übermitteln von Überweisungsdaten mittels eines QR Codes.

Der EPC QR Code enthält Überweisungsdaten wie IBAN, Empfängername, Betrag, ...
Eine Clientanwendung scannt dieses QR Code und kann sofort alle Überweisungsdaten anzeigen und, sofern vom Kunden gewünscht, diese Überweisung direkt ausführen.

Setup

Gradle:

repositories {
    // ... mavenCentral() etc.
    maven {
        setUrl("https://maven.dankito.net/api/packages/codinux/maven")
    }
}


dependencies {
    implementation("net.codinux.banking.epcqrcode:epc-qr-code:0.5.0")
}

Maven:

<repositories>
    <repository>
        <id>codinux</id>
        <url>https://git.dankito.net/api/packages/codinux/maven</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>net.codinux.banking.epcqrcode</groupId>
        <artifactId>epc-qr-code-jvm</artifactId>
        <version>0.5.0</version>
    </dependency>
</dependencies>

EPC QR Code erstellen

val generator = net.codinux.banking.epcqrcode.EpcQrCodeGenerator()

// these are the only two mandatory fields:
val receiverName = "Belgian Red Cross"
val iban = "BE72000000001616"

// optional but recommended fields:
val bic: String? = null
val amount: String? = "1"
val reference: String? = "Donation"
val informationForUser: String? = "Was für ein schönes EPC QR Code Beispiel" // not used / displayed by most applications

val qrCodeHeightAndWidth = 400
val imageFormat = ImageFormat.PNG


// generate EPC QR code and QR code image
val result = generator.generateEpcQrCode(EpcQrCodeConfig(receiverName, iban, bic, amount, reference, informationForUser,
    qrCodeHeightAndWidth = qrCodeHeightAndWidth, imageFormat = imageFormat))

val imageBytes = result.bytes // now show these in UI

EPC QR Code dekodieren

Dekodieren Sie zuerst den QR Code mittels einer QR Code Library. Den im QR Code Text übergeben Sie dann an EpcQrCodeParser zum dekodieren der Überweisungsdaten:

val decodedQrCodeText: String = "..." // the text that is contained / read from QR code

val parser = net.codinux.banking.epcqrcode.parser.EpcQrCodeParser()

val result = parser.parseEpcQrCode(decodedQrCodeText)

val epcQrCode = result.epcQrCode
if (epcQrCode != null) {
    println("Receiver = ${epcQrCode.receiverName}, IBAN = ${epcQrCode.iban}, amount = ${epcQrCode.amount}, ...")
} else {
    println("Code not decode EPC QR code: ${result.error}")
}