跳到主要内容

使用 PDF4me 在 Power Automate 中从 SharePoint 列表生成瑞士二维码账单并通过电子邮件发送

· 阅读需 26 分钟
SEO and Content Writer

PDF4me Create SwissQR Bill是一个 Power Automate 操作,它可以将付款详情转换为符合Swiss Payment Standards的二维码单据。该操作指向 SharePoint 列表,能够为收到的每个请求生成二维码单据,并将图像归档到文档库中,将其链接回相应的行,并通过电子邮件发送给债务人。

搜索瑞士二维码账单,你会得到两种答案。一种解释标准:收据和付款部分必须包含哪些内容,有哪些参考格式,以及为什么二维码账单在2022年取代了旧式付款单。另一种是面向开发人员的PHP、JavaScript或Python代码库,用于构建发票软件。介于两者之间的是需要发送二维码账单的公司。付款详情已经存在于一个由专人维护的列表中,而缺失的是生成、存储和发送二维码账单的部分。这就是这个流程,只需五个步骤,无需编写代码。

流程概览
1. When an item is created
SharePoint 触发器作用于名为Swiss QR Requests的列表。一行代表一张二维码账单。
2. Barcode - Create SwissQR Bill
PDF4me Barcode。 Output Format Type PNG,包含QRR参考信息、债务人和金额(取自该行)。
3. Create file
将收据保存到以发票号码命名的QR Bills库中。
4. Update item
邮票Status Generated, OutputLink也显示在同一行。
5. Send an email (V2)
将回执单邮寄到该行所示的地址,以 PNG 格式附件形式寄出。
简短版

有人在 SharePoint 列表中添加了一行,内容包括债务人、金额、币种和留言。大约 35 秒后,二维码账单以 PNG 格式出现在文档库中,该行包含指向账单的链接,状态显示为 Generated,债务人可以在收件箱中收到账单,随时扫描。五个操作,标准连接器,无需任何人打开银行门户网站。

基于原因的问答​

为什么要把付款详情保存在 SharePoint 列表中?因为知道这些信息的人不会运行脚本。列表行就像一个表单,财务人员都可以填写,它记录了请求历史,而它的列则决定了收据的生成:金额、货币、付款信息,甚至标签的打印语言。

为什么生成 PNG 格式而不是 PDF 格式?因为没有发票可以附加付款单。如果Output Format Type设置为 PDF,则操作会需要一个源文档并将付款信息附加到该文档中。而使用 PNG 格式,它会单独返回付款单,这正是您在二维码账单包含全部信息时所需要的:它可以在 SharePoint 中预览,并且无需下载即可在电子邮件中打开。

为什么选择QRR参考类型?因为它是自动对账的参考类型。QRR 是瑞士的 27 位数字参考编号QRR包含一个校验位,并且只能与QR-IBAN (机构代码在 QR 范围内的IBAN配合使用。当债务人扫描并付款后,系统会返回相应的贷项信息,发票也会自动关闭。如果您不需要此功能,可以选择SCOR或NON参考类型。

为什么要写回指向该行的链接?因为请求本身应该能够回答“此请求是否已发出?”这个问题。流程会将状态设置为Generated,并存储指向图像的链接,因此该列表既是队列又是记录,无需任何人去库中查找发生了什么。


您将获得​

输入: SharePoint 列表中的一行,包含发票编号、债务人姓名和地址、金额、币种、留言、语言和电子邮件地址。输出: QR Bills库中的一张瑞士二维码账单 PNG 图片,更新后的同一行包含状态和链接,以及一封发送给债务人的电子邮件,邮件中附有该账单。

SharePoint 列表“瑞士二维码请求”,包含列:标题、发票号、债务人姓名、街道、楼号、邮政编码、城市、金额、货币、语言、消息、电子邮件、状态和输出链接,其中一行内容为:测试二维码 001、INV-1001、Max Muster、Musterstrasse、1、8000、苏黎世、1,005.00、瑞士法郎、英语、测试发票 INV-1001,状态为“已生成”,并包含指向生成的 PNG 文件的链接。

一行代表一张二维码账单。 Status和OutputLink由流程写入,而非由填写请求的人员写入。

SharePoint QR Bills 库显示了 SwissQR_INV-1001.png,其中包含瑞士 二维码账单的预览:收据和付款部分,账户 CH44 3199 9123 0008 8901 2,收款方为位于比尔的 Var Schneider AG,参考号 21 00000 00003 13947 14300 09017,付款人为位于苏黎世的 Max Muster,金额为 1,005.00 瑞士法郎。

图书馆里的那张单子,以发票号码命名。

Outlook 显示了来自 Pdf4me Flow 账户的邮件“您的瑞士二维码账单”,邮件附件为 SwissQR_INV-1001.png,并在预览窗格中打开。邮件正文提示收件人使用银行应用程序扫描二维码进行支付。

债务人邮箱里也收到了同样的单据,准备扫描。


你需要什么​

  • Power Automate。打开 Power Automate。基于标准连接器的自动化云流程。SharePoint、 Office 365 Outlook和 PDF4me 无需高级套餐。
  • PDF4me API 密钥。获取您的 API 密钥。此流程使用一个 PDF4me 连接, PDF4me Barcode。
  • 用于存储请求的 SharePoint 列表。捕获的列表名为Swiss QR Requests,包含以下列: InvoiceNumber、 DebtorName、 Street、 BuildingNo、 PostalCode、 City、 Amount、 Currency、 Language、 Message和Email,以及Status选择列和流程写入的OutputLink列。
  • 用于存放票据的文档库。捕获到的数据流会写入名为QR Bills库中。
  • 您的债权人信息和QR-IBAN。款项将汇入的账户及其地址。 QR-IBAN用于QRR参考, Swiss Payment Standards规范限制账户只能是瑞士或列支敦士登的发卡机构,且币种只能是瑞士法郎或欧元。

流程概览​

  1. When an item is created (SharePoint)监视Swiss QR Requests列表。
  2. Barcode - Create SwissQR Bill (PDF4me Barcode)将收据渲染为PNG。
  3. Create file (SharePoint)并将其保存到/QR Bills中,文件名为SwissQR_<invoice number>.png。
  4. Update item (SharePoint)将Status设置为Generated,并填充OutputLink。
  5. Send an email (V2) (Office 365 Outlook)将付款凭证发送给债务人。

完整流程概述​

Power Automate 运行历史记录显示以下五个操作按顺序成功完成:创建项目耗时 0.3 秒,创建 SwissQR 条形码账单耗时 31 秒,创建文件耗时 2 秒,更新项目耗时 0.8 秒,发送电子邮件 V2 耗时 0.4 秒。

渲染这张单据是整个流程的全部开销:35 秒中的 31 秒。之后的所有操作都是 SharePoint 和 Outlook 在移动一张小的 PNG 图片。


第一步:当收到请求时,如何触发二维码账单?​

目前流程:尚未启动,这是触发点。

列表就是请求队列,因此创建一行就是发出信号。

  1. 创建Automated cloud flow并选择SharePoint > When an item is created。
  2. 配置:
    • Site Address: PDF4me Support - https://ynoox1.sharepoint.com/sites/PDF4meSupport
    • List Name: Swiss QR Requests

When an item is created:配置​

SharePoint 中,当创建项目时,会触发一个事件,站点地址为 ynoox1.sharepoint.com/sites/PDF4meSupport 的 PDF4me 支持,列表名称为 Swiss QR Requests,未设置任何高级参数。

新行中的每一列都可以作为令牌用于接下来的四个操作。


步骤 2: Create SwissQR Bill操作需要包含哪些内容?​

目前为止的流程: SharePoint 触发器。

这是执行实际操作的操作,它包含的字段比流程中其他所有字段加起来都多。这些字段分为两组:债权人端,即您自己的账户和地址,且始终不变;以及债务人端,来自该行数据。

  1. 添加条形码 - 通过PDF4me Barcode连接Barcode - Create SwissQR Bill。
  2. 配置输出和债权人(静态值):
    • Output Format Type: PNG
    • IBAN: CH4431999123000889012
    • Creditor Name: Var Schneider AG
    • Creditor Address Type: S
    • 债权人街道,建筑物, PostalCode, City: Bahnhofstrasse, 23, 2501, Biel
    • Reference Type: QRR
    • Seperator Line: LineWithScissor
  3. 根据触发事件映射债务人和付款情况:
    • Amount、 Currency、 Ultimate Debtor Name、 Street、 Building Number、 PostalCode、 City、 Unstructured Message和Language Type均取自匹配列表列的值。
    • Ultimate Debtor AddressType: S
    • Billing Info、 AV1 Parameters和Av2 Parameters:留空

Barcode - Create SwissQR Bill:配置​

使用 PDF4me 条形码创建 Swiss二维码账单操作,输出格式类型为 PNG,IBAN 为 CH4431999123000889012,金额取自列表,债权人为 Var Schneider AG,地址为 Bahnhofstrasse 23, 2501 Biel,地址类型为 S,货币和最终债务人姓名、街道、门牌号、邮政编码和城市均从列表列中映射而来,参考类型为 QRR,参考编号为 27 位,非结构化消息和语言类型取自列表,分隔符设置为 LineWithScissor。

地址类型 S 表示结构化地址:街道、门牌号、邮政编码和城市分别填写在单独的字段中。K 则表示需要填写两行自由文本。

每个字段的来源​

场地捕获流的价值来源
Output Format TypePNG静态的,滑移本身
IBANCH4431999123000889012静态,您的QR-IBAN
债权人阻挠Var Schneider AG, Bahnhofstrasse 23, 2501 Biel静态,您自己的地址
Amount, Currency1,005.00, CHFAmount和Currency列
最终债务人阻断Max Muster, Musterstrasse 1, 8000 ZurichDebtorName, Street, BuildingNo, PostalCode, City
Reference Type, ReferenceQRR, 210000000003139471430009017此流程中存在静态问题,请参见以下警告
Unstructured MessageTest invoice INV-1001Message列
Language TypeEnglishLanguage栏
Seperator LineLineWithScissor静止的

上线前,务必为每张账单分配唯一的参考编号。目前捕获的流程会在每张账单上发送相同的 27 位QRR参考编号,这在测试环境中没有问题,但在生产环境中却不适用:参考编号的作用是告诉银行每笔付款对应哪张发票,因此使用同一个参考编号会导致所有收到的付款看起来都一样。请在每张发票的列表中或流程中生成参考编号,并确保模 10 校验位正确。此外,参考编号是债务人无需输入的唯一字段,因此无需刻意使其简短或易于记忆。

提示: QRR仅适用于QR-IBAN,即机构代码位于 QR 范围内的IBAN。此处使用的账户CH4431999123000889012的机构31999位于 QR 范围内,因此符合条件。如果您的银行提供的是普通IBAN,请使用SCOR或NON作为Reference Type,或者向银行索取该账户对应的QR-IBAN。


步骤 3:二维码账单图像保存在哪里?​

目前流程:触发 + Create SwissQR Bill。

该操作会返回图像,并将其保存到 SharePoint 中。

  1. 添加SharePoint > Create file。
  2. 配置:
    • Site Address: PDF4me Support - https://ynoox1.sharepoint.com/sites/PDF4meSupport
    • Folder Path: /QR Bills
    • File Name: SwissQR_后跟InvoiceNumber标记和.png
    • File Content:条形码的Body token Barcode - Create SwissQR Bill

Create file:配置​

SharePoint 创建文件操作,站点地址为 PDF4me 支持,文件夹路径为 /QR Bills,文件名为 SwissQR_,后跟发票编号标记和 .png,文件内容设置为 PDF4me 条形码操作中的正文标记。

将文件命名为发票号码,可以使库文件便于日后搜索。例如,对于INV-1001文件名应SwissQR_INV-1001.png。


步骤 4:如何记录请求结果?​

目前为止的流程:触发器、 Create SwissQR Bill和Create file。

索要账单的那一行也是记录账单存在的正确位置。

  1. 添加SharePoint > Update item。
  2. 配置:
    • Site Address: PDF4me Support - https://ynoox1.sharepoint.com/sites/PDF4meSupport
    • List Name: Swiss QR Requests
    • ID:触发器中的ID令牌
    • Title:触发器中的Title令牌
    • Status Value (高级): Generated
    • OutputLink (高级):站点 URL,后跟Create file中的Path令牌

Update item:配置​

SharePoint 更新项目操作,站点地址为 PDF4me 支持,列表名称为 Swiss QR Requests,ID 和标题取自触发器,高级参数状态值设置为“已生成”,输出链接由站点 URL 加上“创建文件”中的路径令牌构建。

Title直接从触发器传递回来。连接器将其视为必需项,并通过提供当前值来保持其不变。

提示:首次运行后,请打开保存的链接。此处的库名为QR Bills,其中包含空格,因此Create file返回的路径包含该空格,浏览器需要对其进行编码。如果链接无法正常打开,请将表达式包裹在encodeUriComponent中,或将库重命名为不包含空格的名称。


第五步:如何通过电子邮件将二维码账单发送给债务人?​

目前流程:所有操作均通过Update item完成。

最后一步操作使账单变成了债务人可以采取行动的东西,这正是二维码账单的全部意义所在。

  1. 添加Office 365 Outlook > Send an email (V2)。
  2. 配置:
    • 收件人:触发器中的Email令牌
    • 主题: Your Swiss QR bill
    • Body: Hello, please find your Swiss QR bill attached. Scan the QR code with your banking app to pay.
  3. 打开Advanced parameters并添加附件:
    • Attachments Name - 1:来自Create file Name标记
    • Attachments内容 - 1:条形码中的File Content令牌Barcode - Create SwissQR Bill
    • Importance: Normal

Send an email (V2):配置​

在 Office 365 Outlook 中,执行“发送电子邮件 V2”操作,收件人取自“电子邮件”列,主题为“您的瑞士二维码账单”,邮件正文要求收件人使用其银行应用程序扫描二维码,附件名称取自“创建文件名”令牌,内容取自 PDF4me 文件内容令牌,重要性设置为“普通”。

附件的名称取自刚刚创建的文件,其字节取自生成该附件的操作,因此无需从 SharePoint 中读取任何内容。


运行流程并验证​

  1. Save流量。
  2. 在Swiss QR Requests中添加一行,其中包含债务人、金额、货币、语言和电子邮件地址,以便您可以进行核查。
  3. 打开运行历史记录。所有五个操作都应显示为绿色,其中Create SwissQR Bill耗时最长。
  4. 打开QR Bills库,检查 PNG 文件是否存在,以及是否可以预览为付款单。
  5. 返回该行: Status应显示为Generated, OutputLink应打开图像。
  6. 打开电子邮件,使用银行应用程序扫描二维码,确认金额、账户和参考编号是否与您输入的信息一致。

在捕获的运行过程中,整个过程大约耗时35秒,其中31秒用于打印单据本身。输出文件SwissQR_INV-1001.png左侧为收据,右侧为付款信息:账户CH44 3199 9123 0008 8901 2收款方为位于Biel的Var Schneider AG,参考号21 00000 00003 13947 14300 09017,付款人为位于Zurich Max Muster,金额为1005.00瑞士法郎,附加信息块中包含Test invoice INV-1001。

你实际开发了什么?一个基于列表运行的二维码账单系统。财务团队输入他们已知的信息,系统会生成符合瑞士银行要求的账单格式,然后将其归档到其他纸质文件所在的位置,债务人无需打开银行门户或设计工具即可获取账单。


无需重建即可添加的常见变体​

改为批量运行
将触发器替换为Recurrence并Get items已筛选的等待行项目,并将剩余的四个操作放入 Apply to each中。 Status列用于确保队列的准确性。
将单据贴在发票上
将Output Format Type设置为 PDF,并在高级File Content字段中传递发票,付款部分将附加到文档中,而不是单独显示。Dropbox版本的流程演示了这种变体。
用债务人的语言打印这张单子
Language Type已从列表中选择,因此只需为每个债务人设置语言类型,标签即可用德语、法语、意大利语或英语打印,而无需更改流程。
改用债权人证明
如果账户是普通的IBAN,请将Reference Type设置为SCOR并提供 ISO 11649 债权人参考,或者设置为NON以完全不在收据上显示参考。

这与制作二维码钞票的常用方法有何异同?​

每一行描述了一种替代方案。最后一行就是这个流程。

比较谁可以出具账单数据来源交付和记录
银行门户生成器与此流程对比任何拥有网上银行登录信息的人一张一张地手工录入账单下载后,请自行将其作为附件添加到电子邮件中
开发者库与此流程应用程序内部的开发人员你的数据库,通过你维护的代码实现无论你围绕它建造什么
ERP或发票模块与此流程任何人,在该产品内部ERP自身的记录在该产品内部,如果它包含该功能
这种流程任何可以向列表中添加行的人团队已维护的 SharePoint 列表已归档、链接到该行并自动通过电子邮件发送

常见问题​

什么是瑞士二维码钞票?​

瑞士二维码账单取代了瑞士旧式的橙红色纸质账单。它左侧是收据,右侧是付款页面,中间印有瑞士十字二维码,其中包含银行所需的所有信息:债权人的账号和地址、债务人、金额、币种和参考编号。扫描二维码即可完成支付,无需再输入账号。

二维码账单的格式由Swiss Payment Standards (SIX)发布的《瑞士支付标准》定义,官方二维码账单宣传单页详细解释了其布局。对于自动化操作而言,其实际优势在于内容固定:只要字段填写正确,任何瑞士银行应用程序都能读取结果。

如何支付瑞士二维码账单?​

打开您的银行应用程序,选择扫描选项,然后将摄像头对准瑞士十字二维码。应用程序会自动填写账户信息、金额、币种和参考编号,您只需确认即可。无需手动输入任何内容,这正是该标准存在的意义所在。

纸质收据的运作方式仍然相同。收据部分归您所有,付款部分则交给银行或邮局,打印的数字与代码内容一致。

在瑞士如何生成二维码账单?​

三种常见途径。银行在网上银行系统中提供账单生成器,适合每月只开具少量账单的公司。发票和ERP产品会将账单作为发票的一部分自动生成。开发人员则会使用现成的库,并将其集成到自己的软件中。

第四种流程是:将付款详情保存在团队已有的列表中,让Create SwissQR Bill在每次出现相应行时自动生成收据。无需门户网站,无需编写代码,即可生成符合标准的图像,方便您归档、附件或打印。

如何在 Power Automate 中发送带有附件的电子邮件?​

使用Office 365 Outlook连接器中的Send an email (V2)功能,打开Advanced parameters,并添加一个包含两个字段的附件:名称和内容。名称仅为文本,因此可以使用先前操作的令牌。内容必须是文件字节,通常是指生成或获取该文件的操作的输出。

在此流程中,名称来自Create file,因此邮件内容与 SharePoint 中的内容一致,而内容则直接来自 PDF4me 操作。如果附件为空或邮件发送失败,内容字段几乎总是指向非文件字节的内容。


故障排除​

该操作拒绝了IBAN或货币

Swiss Payment Standards规范仅允许在瑞士或列支敦士登发行的账户,账户名称最多21个字符,且货币必须为瑞士法郎 (CHF) 或欧元 (EUR)。来自其他任何地方的IBAN,或者有人在货币栏中填写了美元 (USD),都会在此处失效,而不是在后续操作中失效。

QRR已设置,但参考信号被拒绝

QRR参考号为 27 位数字,以 mod-10 校验位结尾,并且需要一个QR-IBAN。如果账户是普通的IBAN,或者参考号被人为缩短或编辑,请将Reference Type切换为SCOR或NON直到账户和参考号正确为止。

邮件没有附件

检查附件的Content字段。它需要文件字节,也就是条形码操作的File Content输出。如果令牌返回路径、名称或整个操作正文,则生成的邮件虽然发送成功,但没有任何实际意义。

Status已Generated,但链接无法打开

OutputLink由站点 URL 和新文件的路径组成。库名称中包含空格、两部分之间缺少斜杠,或者站点 URL 末尾有斜杠,都会生成看似正确但实际指向无效的链接。请将存储的值与手动打开文件时地址栏中的值进行比较。


后续步骤​

同样的五步模式(一行到达,生成一份文件,归档,给一行盖章,告知客户)适用于任何可以用清单描述的小文件:提醒、送货单、会员卡和票据。