---
tags: mPOS
---
# Receipt Model JSON
<style>
.notused{
color:lightgrey; font-style:italic
}
.comment{
color:green;
}
.new{
color:red;
}
.removed{
text-decoration: line-through;
font-style:italic;
}
</style>
[toc]
#### last updated: 2021/04/09
- added new attributes
- buyer.moicaNo
:::spoiler Changelog
#### 2021/04/01
- added new attributes
- buyer.passport
#### 2021/03/24
- added new attributes
- printJobId
- type [`"purchase"`, `"dlv"`,` "repair"`, `"collect"`, `"so"`]
- numOfCopies
- item.barcode1
- item.barcode2
- item.barcode3
- added suggested return values ([Link](#POSPrinter-return-values))
#### 2021/03/08
- added new attributes
- repairNo
- buyer.memberName
- payment.note
- item.remarks
:::
---
<table>
<tbody>
<tr>
<th> </th>
<th>一般交易</th>
<th>配達起單/結帳</th>
<th>維修單</th>
<th>代收</th>
<th>轉POS機結帳</th>
</tr>
<tr>
<th>serialNo</th>
<td>✔️ </td>
<td>✔️ </td>
<td>✔️ </td>
<td>✔️ </td>
<td>❌</td>
</tr>
<tr>
<th>invoiceNo</th>
<td>✔️ </td>
<td>✔️ </td>
<td>✔️ </td>
<td>❌</td>
<td>❌</td>
</tr>
<tr>
<th>deliverNo</th>
<td>❌</td>
<td>✔️</td>
<td>❌ </td>
<td>❌</td>
<td>✔️</td>
</tr>
<tr>
<th>repairNo</th>
<td>❌ </td>
<td>❌ </td>
<td>✔️</td>
<td>❌</td>
<td>❌</td>
</tr>
</tbody>
</table>
---
## Normal Transaction 正常交易 / DLV 配達結帳
<span class="new">* New attr added 2021/04/09</span>
<pre>
{
"printJobId": 1837820662,
"type": "purchase" / "dlv",
"numOfCopies": 1, <span class="comment">//列印張數</span>
"repairNo": "", <span class="comment">//維修單號</span>
"receiptNo":"KX70560038",
"deliverNo":"",
"serialNo":"02829",
"random":"5474",
"donateReceipt":"N",
"printReceipt":"Y",
"receiptAmt":73399,
"netSale":69904,
"tax":3495,
"heartCode":"",
"PONo":"",
"subtotal": 73399,
"time":"2021-03-08 16:22:22",
"buyer":{
"memberName":"TEST",
"memberID":"2990499999993"
"memberTel":"0965391470",
"commCode":"",
<span class="new">"moicaNo": "",</span>
"GUINo":"",
"passport":""
},
"seller":{
"TKGUINo":"69568009",
"storeNo":"00705",
"sellerNo":" ",
"storeName":"內湖訓練教室",
"termNo":"0025",
"addr":"內湖燦坤TEST"
},
"payments":[
{
"amount":73399,
"method":"信用卡",
<span class="removed">"note": "",</span> <span class="comment">// removed 20210308</span>
"note":[
{
"label": "PayNo",
"text": "493817******0078"
},
{
"label": "分期",
"text": "台灣銀行03期"
}
]
},
{
"amount":1,
"method":"現金",
<span class="removed">"note": "",</span> <span class="comment">// removed 20210308</span>
"note":[]
}
],
"items":[
{
"quantity":1,
"pluNo":"213200",
"name":"ASUS S433EQ 筆記型電腦 黑",
"pluSpec":"W10/ i5-1135G7/14F/16GD4/512GSSDP",
"taxIncludeAmt":32000,
"barcode1": null,
"barcode2": null,
"barcode3": null,
"remarks":[]
},
{
"quantity":1,
"pluNo":"211371",
"name":"分離式空調延長2年保固",
"pluSpec":"條碼326(免費8年+2年)",
"taxIncludeAmt":3999,
"barcode1": null,
"barcode2": null,
"barcode3": null,
"remarks":[
{
"label":"備註",
"text":"213200 $32000 1234567890123"
}
]
},
{
"quantity":1,
"pluNo":"212340",
"name":"iPhone 12 Pro 256GB 太平洋藍色",
"pluSpec":"A2407",
"taxIncludeAmt":37400,
"barcode1": null,
"barcode2": null,
"barcode3": null,
"remarks":[
{
"label":"SEQ",
"text":"G6TDP6PU0D95"
}
]
},
{
"quantity":1,
"pluNo":"212371",
"name":"YE5(1年期)行動商品意外損壞保固服務",
"pluSpec":"",
"taxIncludeAmt":0,
"barcode1": null,
"barcode2": null,
"barcode3": null,
"remarks":[
{
"label":"備註",
"text":"212340 $37400 0987654321942"
}
]
}
]
}
</pre>
## Repair 維修結帳
<pre>
{
"printJobId": 1837820662,
"type": "repair",
"numOfCopies": 1, <span class="comment">//列印張數</span>
"repairNo": "1234123412341", <span class="comment">//維修單號</span>
"PONo":"",
"deliverNo":"",
"donateReceipt":"N",
"tax":0,
"serialNo":"02831",
"printReceipt":"Y",
"random":"2390",
"netSale":1,
"subtotal":1,
"receiptNo":"KX70560039",
"heartCode":"",
"receiptAmt":1,
"time":"2021-03-08 16:50:07",
"buyer":{
"memberTel":"",
"commCode":"",
"memberName":"",
"GUINo":"",
<span class="new">"moicaNo": "",</span>
"passport":"",
"memberID":""
},
"seller":{
"TKGUINo":"69568009",
"storeNo":"00705",
"sellerNo":" ",
"storeName":"內湖訓練教室",
"termNo":"0025",
"addr":"內湖燦坤TEST"
},
"payments":[
{
"note":[],
"amount":1,
"method":"現金"
}
],
"items":[
{
"quantity":1,
"pluNo":"029251",
"name":"1C維修收入(1234123412341)",
"pluSpec":"1C維修收入",
"taxIncludeAmt":1,
"remarks":[],
"barcode1": null,
"barcode2": null,
"barcode3": null
}
]
}
</pre>
## SO 轉POS機結帳
<pre>
{
"printJobId": 1837820662,
"type": "so",
"numOfCopies": 1, <span class="comment">//列印張數</span>
"deliverNo": "7055003518001",
"receiptAmt": 450,
"subtotal": 450,
"time": "2020-11-18 15:08:22",
"netSale": 450,
"heartCode": "",
"printReceipt": "N",
"receiptNo": "",
<span class="notused">"PONo": "",
"donateReceipt": "N",
"tax": 0,
"serialNo": "",
"random": "",
"payments": null,</span>
"buyer": {
"memberName":"TEST",
"memberID": "2990499999993",
"GUINo": "",
"memberTel": "0965391470"
<span class="notused">"commCode": "",
"passport":""</span>
<span class="new">"moicaNo": "",</span>
},
"seller": {
"storeNo": "00705",
"termNo": "0025",
"TKGUINo": "69568009",
"addr": "內湖燦坤TEST",
"sellerNo": " ",
"storeName": "內湖訓練教室"
},
"items": [
{
"name": "Epson 12mm 緞帶米底黑字 LC-4JBK",
"pluNo": "141640",
"pluSpec": "LW-500/LW-700/LW-900P",
"quantity": 1,
"taxIncludeAmt": 450,
"barcode1": null,
"barcode2": null,
"barcode3": null
}
]
}
</pre>
---
## Collect 代收
<pre>
{
"printJobId": 1837820662,
"type":"collect",
"numOfCopies":3, <span class="comment">//列印張數</span>
"serialNo":"03054",
"PONo":"",
"deliverNo":"",
"donateReceipt":"N",
"tax":0,
"repairNo":"",
"printReceipt":"N",
"random":"6185",
"netSale":0,
"subtotal":2800,
"receiptAmt":2800,
"receiptNo":"",
"heartCode":"",
"time":"2021-03-24 13:34:14",
"seller":{
"TKGUINo":"69568009",
"storeNo":"00705",
"sellerNo":" ",
"storeName":"內湖訓練教室",
"termNo":"0025",
"addr":"內湖燦坤TEST"
},
"buyer":{
"memberTel":"",
"commCode":"",
"memberName":"",
"GUINo":"",
"memberID":"",
<span class="new">"moicaNo": "",</span>
"passport":""
},
"payments":[
{
"note":[],
"amount":2800,
"method":"現金"
}
],
"items":[
{
"quantity":1,
"pluNo":"",
"name":"代收保費",
"pluSpec":"",
"taxIncludeAmt":2800,
"barcode3":"040800000002800",
"barcode2":"0000000217949060",
"barcode1":"100308ACP",
"remarks":[
{
"label":"備註",
"text":"\n 稅額:0 元\n 收款完成後須立即開通"
}
]
}
]
}
</pre>
---
# POSPrinter return values
```json
{
"printJobId": <printJobId>,
"deliverNo": <deliverNo>,
"invoice": <invoiceNo>,
"serialNo":<serialNo>,
"printer":"None/RP700/PRN0", // printer name/model/id</span>
"status":true, // if state == 2
"state": 2, // 0: DISCONNECT, 1: OFFLINE, 2: ONLINE
"status_text": null
"msg":null, // same as status_text, kept for compatibility purpose
}
```
## Invoice/Receipt printing format flowchart
```mermaid
graph TD
start((Start)) --> condHasInvoNum
opInvoice(Print<br/>UniInvoice + receipt) -->condDlv
opPrintReceipt(Print<br/>receipt only) -->condDlv
opPrintRepair(Print<br/>repair slip) -->done((Done))
opPrintSO(Print SO)
opPrintCollectBill(Print collect bill)
condHasInvoNum{has<br/>invoice<br/>number}
condIsRepair{is Repair}
condHasSerial{has SerialNo}
cond0{ReceiptAmt==0}
condH{has heartCode}
condD{donateReceipt=='Y'}
condGUI{has GUI No}
condC{has commCode}
condDlv{Is Deliver Order} -->|YES| opDlv(Print Dlv slip) --> done((Done))
condDlv --> |NO| done((Done))
condHasInvoNum --> |YES| condIsRepair
condIsRepair --> |NO| cond0
condIsRepair --> |YES| opPrintRepair
condHasInvoNum --> |NO| condHasSerial
condHasSerial --> |NO| opPrintSO --> done
condHasSerial --> |YES| opPrintCollectBill --> done
cond0 -->|YES| opPrintReceipt
condD -->|YES| opPrintReceipt
condC -->|YES| opPrintReceipt
cond0 -->|NO| condH
condH -->|YES| opSetDonate(donateReceipt='Y') --> condD
condH -->|NO| condD
condD -->|NO| condGUI
condGUI -->|NO| condC
condC -->|NO| opInvoice
condGUI -->|YES| opInvoice
```