本功能是 ezPay 电子发票证明联,与 /getOrderPrintInfo 餐点小票不同。后端负责版式、金额和条码,App 只负责保存、展示 PDF 和调用打印机。
接口前缀:/system/orderShOprate。请求头传商家登录 token;订单 ID 使用 pos_order.id。普通商家、夜市、摊位、授权子账号都沿用现有订单权限。
GET /getInvoicePrintDetail?orderId=3173
{
"code": 200,
"msg": "操作成功",
"data": {
"invoiceNumber": "AB12345678",
"printCount": 0,
"fileName": "AB12345678-detail.pdf",
"contentType": "application/pdf",
"pdfBase64": "JVBERi0..."
}
}
pdfBase64 是无 Data URL 前缀的 Base64;解码成 PDF 文件后查看。printCount。printCount=0 显示“打印发票”;大于 0 显示“申请补印”。只统计我们系统,不同步 ezPay 后台历史。msg,不要改用订单金额拼发票。用户点击打印时调用 POST /printInvoice:
{
"orderId": 3173,
"requestId": "78490c8a-6755-4a49-bd36-2b661f46f653",
"reprint": false
}
requestId:每次打印意图生成一个 UUID,调用前保存。超时、断网或丢失响应时必须带原值重试;同一请求号不能换订单发票、补印参数或操作账号。按钮提交中禁用,避免连点。
成功返回:
{
"code": 200,
"msg": "操作成功",
"data": {
"printJobId": 123,
"invoiceNumber": "AB12345678",
"printSequence": 1,
"reprint": false,
"fileName": "AB12345678-1.pdf",
"contentType": "application/pdf",
"pdfBase64": "JVBERi0...",
"reversePdfBase64": "JVBERi0..."
}
}
pdfBase64:正面打印文件。个人 B2C 第1页为证明联,第2页为交易明细;分开裁切。B2B 为同一长页,明细接续打印,不能中途裁切。reversePdfBase64:57×90mm 背面参考文件,含兑奖说明及领奖收据。不要在正面后顺序打印它。使用已有合规预印背面的纸卷时无需打印此文件;其他纸张需确保相应背面符合要求。仅适用于原联记载不清等法定情形,并需核对内容、保留原联。不是重复点击就能再出一份原件。
{
"orderId": 3173,
"requestId": "a25ece72-8030-475d-97c9-3c49ce308d26",
"reprint": true,
"reprintReason": "原证明联字迹不清,已核对发票内容一致",
"originalAvailable": true,
"contentsVerified": true
}
printSequence>=2、reprint=true,PDF 标题自动加“補印”,App 无需拼字。reprint=false。出现并发冲突时刷新打印次数并展示错误,不自动改成补印重试。requestId。updatesql/sql.md 的“2026-10-30 商家App电子发票证明联打印”建表段,再发布后端。本期不包含 App 页面、蓝牙/网络打印驱动或载具发票转纸本。普通查看继续使用交易明细,首次打印接口不要在进入详情页时自动调用。