使用 Java 生成瑞士二维码

瑞士二维码也称为瑞士二维码票据。它是为自动化数字支付而开发的。我们可以轻松地在瑞士二维码中对触发付款所需的所有必要付款信息进行编码。瑞士二维码中间有一个瑞士十字。在本文中,我们将学习如何使用 Java 生成瑞士二维码。此外,我们还将学习如何以编程方式从瑞士二维码中解码和读取支付信息。

本文将涵盖以下主题:

用于生成和读取瑞士二维码的 Java API

为了生成和读取瑞士二维码,我们将使用 Aspose.BarCode for Java API。它提供了 SwissQRBillSwissQRCodetext 类,提供了使用瑞士 QR 码的各种属性。 SwissQRBill 类允许获取或设置帐单和付款数据,例如帐户信息、金额、货币和债权人详细信息。 SwissQRCodetext 类允许对嵌入在瑞士二维码中的 SwissQRBill 信息进行编码和解码。

API 提供了 ComplexBarcodeGenerator 类,用于生成复杂条码的图像,例如瑞士二维码。 API 的 BarCodeReader 类允许读取指定 DecodeType 的条码。 API 的 BarCodeResult 类存储已识别的条码数据,如条码类型和代码文本。此外,它是一个功能丰富的 API,可让您生成、扫描和读取范围广泛的 条形码符号

下载 API 的 JAR 或在基于 Maven 的 Java 应用程序中添加以下 pom.xml 配置。

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-barcode</artifactId>
    <version>22.5</version>
</dependency>

用 Java 生成瑞士二维码

我们可以按照以下步骤生成瑞士二维码:

  • 创建 SwissQRCodetext 类的实例。
  • 设置各种 SwissQRBill 属性,例如版本、帐户、金额、货币、参考等。
  • 初始化 Address 类对象并设置 Creditor 和 Debtor 详细信息。
  • 之后,使用 SwissQRCodetext 对象创建 ComplexBarcodeGenerator 类的实例。
  • 最后,调用 save() 方法将图像保存到给定的文件路径。

以下代码示例展示了如何使用 Java 生成瑞士二维码。

// 此代码示例演示如何生成瑞士 QR 码
// 创建瑞士二维码账单
SwissQRCodetext swissQRCode = new SwissQRCodetext();
swissQRCode.getBill().setVersion(QrBillStandardVersion.V2_0);
swissQRCode.getBill().setAccount("CH4431999123000889012");
swissQRCode.getBill().setAmount(1000.25);
swissQRCode.getBill().setCurrency("CHF");
swissQRCode.getBill().setReference("210000000003139471430009017");

// 债权人地址
Address creditorAddress = new Address();
creditorAddress.setName("Muster & Söhne");
creditorAddress.setStreet("Musterstrasse");
creditorAddress.setHouseNo("12b");
creditorAddress.setPostalCode("8200");
creditorAddress.setTown("Zürich");
creditorAddress.setCountryCode("CH");
swissQRCode.getBill().setCreditor(creditorAddress);

// 债务人地址
Address debtorAddress = new Address();
debtorAddress.setName("Muster AG");
debtorAddress.setStreet("Musterstrasse");
debtorAddress.setHouseNo("1");
debtorAddress.setPostalCode("3030");
debtorAddress.setTown("Bern");
debtorAddress.setCountryCode("CH");
swissQRCode.getBill().setDebtor(debtorAddress);

// 生成瑞士二维码账单
ComplexBarcodeGenerator generator = new ComplexBarcodeGenerator(swissQRCode);

// 保存条形码图像
generator.save("SwissQRBill.png");
Generate Swiss QR Code in Java.

用 Java 自定义瑞士二维码

我们可以按照以下步骤自定义瑞士二维码的外观:

  • 创建 SwissQRCodetext 类的实例。
  • 设置各种 SwissQRBill 属性,例如版本、帐户、金额、货币、参考等。
  • 初始化 Address 类对象并设置 Creditor 和 Debtor 详细信息。
  • 使用 SwissQRCodetext 对象创建 ComplexBarcodeGenerator 类的实例。
  • 之后,设置图像宽度、编码、背景颜色、分辨率、边框等各种条码参数。
  • 最后调用save()方法生成代码。它将图像文件路径和 BarCodeImageFormat 作为参数。

以下代码示例展示了如何使用 Java 自定义瑞士 QR 码。

// 此代码示例演示如何自定义瑞士 QR 码的外观
// 创建瑞士二维码账单
SwissQRCodetext swissQRCode = new SwissQRCodetext();
swissQRCode.getBill().setVersion(QrBillStandardVersion.V2_0);
swissQRCode.getBill().setAccount("CH4431999123000889012");
swissQRCode.getBill().setAmount(1000.25);
swissQRCode.getBill().setCurrency("CHF");
swissQRCode.getBill().setReference("210000000003139471430009017");

// 债权人地址
Address creditorAddress = new Address();
creditorAddress.setName("Muster & Söhne");
creditorAddress.setStreet("Musterstrasse");
creditorAddress.setHouseNo("12b");
creditorAddress.setPostalCode("8200");
creditorAddress.setTown("Zürich");
creditorAddress.setCountryCode("CH");
swissQRCode.getBill().setCreditor(creditorAddress);

// 债务人地址
Address debtorAddress = new Address();
debtorAddress.setName("Muster AG");
debtorAddress.setStreet("Musterstrasse");
debtorAddress.setHouseNo("1");
debtorAddress.setPostalCode("3030");
debtorAddress.setTown("Bern");
debtorAddress.setCountryCode("CH");
swissQRCode.getBill().setDebtor(debtorAddress);

// 生成瑞士二维码账单
ComplexBarcodeGenerator generator = new ComplexBarcodeGenerator(swissQRCode);

// 设置图像大小
generator.getParameters().getBarcode().getXDimension().setPixels(4);

// 设置编码
generator.getParameters().getBarcode().getQR().setQrEncodeMode(QREncodeMode.ECI_ENCODING);
generator.getParameters().getBarcode().getQR().setQrECIEncoding(ECIEncodings.UTF8);

// 设置背景颜色
generator.getParameters().setBackColor(Color.RED);

// 设置图像分辨率
generator.getParameters().setResolution(300);

// 设置边框
generator.getParameters().getBorder().getColor().brighter();
generator.getParameters().getBorder().setDashStyle(BorderDashStyle.SOLID);
generator.getParameters().getBorder().setColor(Color.BLUE);
generator.getParameters().getBorder().setVisible(true);
generator.getParameters().getBorder().getWidth().setPoint(4);

// 将条形码图像保存为 JPEG
generator.save("SwissQRBill.jpg", BarCodeImageFormat.JPEG);
用 Java 自定义瑞士二维码

用 Java 自定义瑞士二维码

用 Java 读取瑞士二维码

我们可以按照以下步骤从图像中读取条形码:

  • 首先,使用 BarCodeReader 类加载图像。
  • 使用 readBarCodes() 方法在 BarCodeResult 类对象中获取识别结果。
  • 循环遍历结果并使用 tryDecodeSwissQR() 方法解码瑞士 QR 码。
  • 最后,阅读 SwissQRCodetext 并显示数据。

以下代码示例展示了如何使用 Java 从图像中读取瑞士二维码。

// 此代码示例演示如何检测、解码和读取瑞士 QR 码
// 识别瑞士二维码
BarCodeReader reader = new BarCodeReader("SwissQRBill.png", DecodeType.QR);

for (BarCodeResult barcodeResult : reader.readBarCodes())
{
    // 尝试解码瑞士二维码
    SwissQRCodetext swissResult = ComplexCodetextReader.tryDecodeSwissQR(barcodeResult.getCodeText());
    if (null != swissResult)
    {
        System.out.println("Version: " + swissResult.getBill().getVersion());
        System.out.println("Account: " + swissResult.getBill().getAccount());
        System.out.println("Amount: " + swissResult.getBill().getAmount());
        System.out.println("Currency: " + swissResult.getBill().getCurrency());
        System.out.println("Reference: " + swissResult.getBill().getReference());

        System.out.println("Creditor Name: " + swissResult.getBill().getCreditor().getName());
        System.out.println("Creditor Street: " + swissResult.getBill().getCreditor().getStreet());
        System.out.println("Creditor House: " + swissResult.getBill().getCreditor().getHouseNo());
        System.out.println("Creditor Postal Code: " + swissResult.getBill().getCreditor().getPostalCode());
        System.out.println("Creditor Town: " + swissResult.getBill().getCreditor().getTown());
        System.out.println("Creditor Country: " + swissResult.getBill().getCreditor().getCountryCode());

        System.out.println("Debtor Name: " + swissResult.getBill().getDebtor().getName());
        System.out.println("Debtor Street: " + swissResult.getBill().getDebtor().getStreet());
        System.out.println("Debtor House: " + swissResult.getBill().getDebtor().getHouseNo());
        System.out.println("Debtor Postal Code: " + swissResult.getBill().getDebtor().getPostalCode());
        System.out.println("Debtor Town: " + swissResult.getBill().getDebtor().getTown());
        System.out.println("Debtor Country: " + swissResult.getBill().getDebtor().getCountryCode());
    }
}
Version: V2_0
Account: CH4431999123000889012
Amount: 1000.25
Currency: CHF
Reference: 210000000003139471430009017
Creditor Name: Muster & Söhne
Creditor Street: Musterstrasse
Creditor House: 12b
Creditor Postal Code: 8200
Creditor Town: Zürich
Creditor Country: CH
Debtor Name: Muster AG
Debtor Street: Musterstrasse
Debtor House: 1
Debtor Postal Code: 3030
Debtor Town: Bern
Debtor Country: CH 

获得免费许可证

您可以获得免费的临时许可证 试用该库而不受评估限制。

结论

在本文中,我们学习了如何:

  • 以编程方式生成瑞士二维码票据图像;
  • 设置二维码图片大小和分辨率;
  • 设置二维码的边框和背面颜色;
  • 从图像中检测瑞士二维码;
  • 从 Java 中的瑞士二维码读取付款详情。

此外,您可以使用 文档 了解更多关于 Aspose.BarCode for Java API 的信息。如有任何歧义,请随时在 论坛 上与我们联系。

也可以看看