PHPackages                             thoth-pharaoh/ecpay-invoice - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. thoth-pharaoh/ecpay-invoice

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

thoth-pharaoh/ecpay-invoice
===========================

綠界B2C開發票工具

v2.0.2(8mo ago)1218MITPHPPHP ^8.0

Since Oct 18Pushed 8mo ago1 watchersCompare

[ Source](https://github.com/castion2293/ecpay-invoice)[ Packagist](https://packagist.org/packages/thoth-pharaoh/ecpay-invoice)[ RSS](/packages/thoth-pharaoh-ecpay-invoice/feed)WikiDiscussions main Synced 3w ago

READMEChangelogDependencies (2)Versions (25)Used By (0)

綠界B2C開發票工具
==========

[](#綠界b2c開發票工具)

版本匹配
----

[](#版本匹配)

Laravelpackage8.X1.X9.X2.X安裝
--

[](#安裝)

使用 composer 做安裝

```
composer require thoth-pharaoh/ecpay-invoice
```

匯出 Config
---------

[](#匯出-config)

```
php artisan vendor:publish --tag=invoice-config --force
```

添加 .env 支付工具必要環境參數
------------------

[](#添加-env-支付工具必要環境參數)

```
INVOICE_URL="https://einvoice-stage.ecpay.com.tw/B2CInvoice/"
INVOICE_MERCHANT_ID="2000132"
INVOICE_HASH_KEY="ejCk326UnaZWKisg"
INVOICE_HASH_IV="q9jcZX8Ib9LM8wYk"
INVOICE_VISION="3.0.0"
```

使用方法
----

[](#使用方法)

### 先引入門面

[](#先引入門面)

```
use Pharaoh\Invoice\Facades\Invoice;
```

- [開立一般發票](#issue)
- [開立延遲發票](#delay-issue)
- [觸發開立發票](#trigger-issue)
- [取消延遲開立發票](#cancel-delay-issue)
- [開立一般折讓發票](#allowance)
- [開立線上折讓發票(通知開立)](#allowance-by-collegiate)
- [作廢發票](#invalid)
- [作廢折讓發票](#allowance-invalid)
- [註銷重開](#void-with-re-issue)
- [查詢發票(根據特店自訂編號)](#get-issue-by-relate-number)
- [查詢發票(根據發票號及開立日期)](#get-issue-by-invoice-no-and-date)
- [查詢折攘明細](#get-allowance)
- [查詢作廢發票明細](#get-invalid)
- [查詢作廢折讓明細](#get-allowance-invalid)
- [查詢字軌](#get-invoice-word-setting)
- [發送發票通知](#invoice-notify)
- [手機條碼驗證](#check-barcode)
- [捐贈碼驗證](#check-love-code)

### 開立一般發票

[](#開立一般發票)

```
$invoice = Invoice::issue($data);
```

#### $data 內容說明(array格式)

[](#data-內容說明array格式)

參數必填名稱類型說明RelateNumber✔特店自訂編號String (30)需為唯一值不可重複使用(請勿使用特殊符號)Print✔列印註記String (1)0:不列印
 1:要列印
 注意事項:
 1. 當捐贈註記\[Donation\]=1(要捐贈)或載具類別\[CarrierType\]有值時，此參數請帶0
2. 當統一編號\[CustomerIdentifier\]有值時，此參數請帶 1Donation✔特店自訂編號String (1)0:不捐贈
 1:要捐贈
 注意事項:
 當統一編號\[CustomerIdentifier\]有值或載具類別\[CarrierType\]有值 時，此參數請帶 0TaxType✔課稅類別String (1)當字軌類別\[InvType\]為 07 時，則此欄位請填入 1、2、3 或 9
 當字軌類別\[InvType\]為 08 時，則此欄位請填入 3 或 4
 1:應稅。
 2:零稅率。
 3:免稅。
 4:應稅(特種稅率)
 9:混合應稅與免稅或零稅率時(限收銀機發票無法分辨時使用，且 需通過申請核可)SalesAmount✔發票總金額(含 稅)int請帶整數，不可有小數點
 僅限新台幣
 金額不可為 0 元InvType✔字軌類別String (2)該張發票的發票字軌類型
 07:一般稅額
 08 : 特種稅額CustomerID客戶編號String (20)格式為『英文、數字、下底線』等字元CustomerIdentifier統一編號String (8)格式為數字CustomerName客戶名稱String (60)當列印註記\[Print\]=1(列印)時，此參數為必填CustomerAddr客戶地址String (100)當列印註記\[Print\]=1(列印)時，為必填CustomerPhone客戶手機號碼String (20)當客戶電子信箱\[CustomerEmail\]為空字串時，為必填
 格式為數字CustomerEmail客戶電子信箱String (80)當客戶手機號碼\[CustomerPhone\]為空字串時，為必填
 需為有效的 Email 格式，且僅可填寫一組 Email
 注意事項:
 1.測試環境請勿帶入之真實電子信箱，避免個資外洩
 2.測試環境僅作 API 串接測試使用，僅以 API 回覆成功或失敗;批 次匯入功能/API 不提供發信測試，僅驗規則ClearanceMark通關方式String (1)當課稅類別\[TaxType\]=2(零稅率)時，為必填
 1:非經海關出口
 2:經海關出口LoveCode捐贈碼String (7)當捐贈註記\[Donation\]=1(要捐贈)時，為必填
 格式為阿拉伯數字為限，最少三碼，最多七碼，首位可以為零CarrierType載具類別String (1)空字串:無載具
 1:綠界電子發票載具
 2:自然人憑證號碼
 3:手機條碼載具
 注意事項:
 1. 當列印註記\[Print\] =1(要列印)或統一編號\[CustomerIdentifier\]有值時，請帶空字串
 2.只有存在綠界電子發票載具(此參數帶 1)的發票，中獎後才能在 ibon 列印領取CarrierNum載具編號String (64)當\[CarrierType\]="" 時，請帶空字串
 當\[CarrierType\]=1 時，請帶空字串，系統會自動帶入值，為客戶電 子信箱或客戶手機號碼擇一(以客戶電子信箱優先)
 \[CarrierType\]=2:請帶固定長度為 16 且格式為 2 碼大寫英文字母加 上 14 碼數字
 \[CarrierType\]=3:請帶固定長度為 8 碼字元，第 1 碼為【/】; 其餘 7 碼則由數字【0-9】、大寫英文【A-Z】與特殊符號【+】【-】【.】這 39 個字元組成的編號SpecialTaxType特種稅額類別int當課稅類別\[TaxType\]為 1/2/9 時，系統將會自動帶入數字【0】
 當課稅類別\[TaxType\]為 3 時，則該參數必填，請填入數字【8】
 當課稅類別\[TaxType\]為 4 時，則該參數必填，可填入數字【1-8】， 並分別代表以下類別與稅率
 1:代表酒家及有陪侍服務之茶室、咖啡廳、酒吧之營業稅稅率， 稅率為 25%
 2:代表夜總會、有娛樂節目之餐飲店之營業稅稅率，稅率為 15%
 3:代表銀行業、保險業、信託投資業、證券業、期貨業、票券業 及典當業之專屬本業收入(不含銀行業、保險業經營銀行、保險本 業收入)之營業稅稅率，稅率為 2%
 4:代表保險業之再保費收入之營業稅稅率，稅率為 1%
 5:代表銀行業、保險業、信託投資業、證券業、期貨業、票券業及典當業之非專屬本業收入之營業稅稅率，稅率為 5%
 6:代表銀行業、保險業經營銀行、保險本業收入之營業稅稅率(適 用於民國 103 年 07 月以後銷售額) ，稅率為 5%
 7:代表銀行業、保險業經營銀行、保險本業收入之營業稅稅率(適 用於民國 103 年 06 月以前銷售額) ，稅率為 5%
 8:代表空白為免稅或非銷項特種稅額之資料InvoiceRemark發票備註String (200)vat商品單價是否 含稅String (1)預設為含稅價
 1:含稅
 0:未稅Items商品array可多筆，商品最多支援 200 項 請參閱下面 Items 詳細說明#### Items 參數說明(array格式)

[](#items-參數說明array格式)

參數必填名稱類型說明ItemName✔商品名稱String (100)ItemCount✔商品數量Number支援整數 8 位小數 2 位ItemWord✔商品單位String (6)ItemPrice✔商品單價Number支援整數 8 位小數 7 位
 若 vat=0(未稅)，商品金額需為未稅金額
 若 vat=1(含稅)，商品金額需為含稅金額ItemAmount✔商品合計Number支援整數 8 位小數 7 位
 此為含稅小計金額
 ItemAmount 各項總合並四捨五入=salesAmount(含稅)
 注意事項:
 ※ItemAmount 需統一為含稅金額，且商品金額需符合以下規則:
 1. 當 vat = 1, 且 TaxType = 1 或 4: ItemPrice(含稅)*ItemCount = ItemAmount(含稅)ex: 500*5 = 2500
 2. 當 vat = 0,且 TaxType = 1(稅率 5%): ItemPrice(不含稅)*ItemCount*1.05 = ItemAmount(含稅) ex: 500*5*1.05 = 2625
 3. 當 vat = 0, TaxType = 4 且 ex: 500*5*1.00 = 2500ItemSeq商品序號IntItemTaxType商品課稅別String (1)當課稅類別\[TaxType\] = 9 時，此欄位不可為
 1:應稅
 2:零稅率
 3:免稅
 注意事項:
 當課稅類別\[TaxType\] = 9 時，商品課稅類別只能 1.應稅+免稅 2.應 稅+零稅率，免稅和零稅率發票不能同時開立ItemRemark商品備註String (40)### 開立延遲發票

[](#開立延遲發票)

```
$invoice = Invoice::delayIssue($data);
```

#### $data 內容說明(array格式)

[](#data-內容說明array格式-1)

大部分與上列 `開立一般發票` 相同 額外增加欄位如下:

參數必填名稱類型說明DelayFlag✔延遲註記String (1)可註記此張發票要延遲開立或觸發開立發票
 1:延遲開立
 2:觸發開立DelayDay✔延遲天數int若為延遲開立時，延遲天數須介於 1 至 15 天內
 觸發開立時也可設定延遲天數，但須介於 0 至 15 天內
 EX1:
 DelayFlag=1(延遲)
 DelayDay=7(天數)
 此為 7 天後自動開立
 EX2:
 DelayFlag = 2(觸發)
 DelayDay=2(天數)
 此為被觸發後過 2 天才會開立，若此張發票都沒有被觸發，將不會被開立Tsr✔交易單號String (30)用來呼叫付款完成觸發或延遲開立發票 API 的依據
 均為唯一值不可重覆使用NotifyURL開立完成時通知特店系統的網址String (200)注意事項:
 使用測試環境時，不提供 NotifyURL 開立通知### 觸發開立發票

[](#觸發開立發票)

```
$invoice = Invoice::triggerIssue($transactionNumber);
```

#### $transactionNumber 內容說明

[](#transactionnumber-內容說明)

參數名稱類型說明$transactionNumber交易單號string觸發開立發票回傳的交易單號### 取消延遲開立發票

[](#取消延遲開立發票)

```
$invoice = Invoice::cancelDelayIssue($transactionNumber);
```

#### $transactionNumber 內容說明

[](#transactionnumber-內容說明-1)

參數名稱類型說明$transactionNumber交易單號string觸發開立發票回傳的交易單號### 開立一般折讓發票

[](#開立一般折讓發票)

```
$invoice = Invoice::allowance($data);
```

#### $data 內容說明(array格式)

[](#data-內容說明array格式-2)

參數必填名稱類型說明InvoiceNo✔發票號碼String (10)長度固定為 10 碼InvoiceDate✔發票開立日期String (10)格式為「yyyy-MM-dd」AllowanceNotify✔通知類別String (1)開立折讓後，寄送將相關發票折讓資訊通知消費者
 S:簡訊
 E:電子郵件
 A:皆通知時
 N:皆不通知AllowanceAmount✔折讓單總金額(含稅)intCustomerName客戶名稱String (60)格式為中、英文及數字等NotifyMail通知電子信箱String (100)1. 若通知類別\[AllowanceNotify\]為電子郵件(E)，此欄位須有值
 2. 需為有效的 Email 格式
 3. 將參數值做 UrlEncode
 4. 可帶入多組 Email，並以分號區隔 ex: ;NotifyPhone通知手機號 碼String (20)1. 若通知類別\[AllowanceNotify\]為簡訊方式(S)，此欄位須有值
 2. 格式為數字組成Items商品array可多筆，商品最多支援 200 項 請參閱下面 Items 詳細說明#### Items 參數說明(array格式)

[](#items-參數說明array格式-1)

參數必填名稱類型說明ItemName✔商品名稱String (100)ItemCount✔商品數量Number支援整數 8 位小數 2 位ItemWord✔商品單位String (6)ItemPrice✔商品單價Number支援整數 8 位小數 7 位
 若 vat=0(未稅)，商品金額需為未稅金額
 若 vat=1(含稅)，商品金額需為含稅金額ItemAmount✔商品合計Number支援整數 8 位小數 7 位
 此為含稅小計金額
 ItemAmount 各項總合並四捨五入=salesAmount(含稅)
 注意事項:
 ※ItemAmount 需統一為含稅金額，且商品金額需符合以下規則:
 1. 當 vat = 1, 且 TaxType = 1 或 4: ItemPrice(含稅)*ItemCount = ItemAmount(含稅)ex: 500*5 = 2500
 2. 當 vat = 0,且 TaxType = 1(稅率 5%): ItemPrice(不含稅)*ItemCount*1.05 = ItemAmount(含稅) ex: 500*5*1.05 = 2625
 3. 當 vat = 0, TaxType = 4 且 ex: 500*5*1.00 = 2500ItemSeq商品序號IntItemTaxType商品課稅別String (1)當課稅類別\[TaxType\] = 9 時，此欄位不可為
 1:應稅
 2:零稅率
 3:免稅
 注意事項:
 當課稅類別\[TaxType\] = 9 時，商品課稅類別只能 1.應稅+免稅 2.應 稅+零稅率，免稅和零稅率發票不能同時開立ItemRemark商品備註String (40)### 開立線上折讓發票(通知開立)

[](#開立線上折讓發票通知開立)

```
$invoice = Invoice::allowanceByCollegiate($data);
```

#### $data 內容說明(array格式)

[](#data-內容說明array格式-3)

各式與 `開立一般折讓發票` 皆相同

### 作廢發票

[](#作廢發票)

```
$invoice = Invoice::invalid($data);
```

#### $data 內容說明(array格式)

[](#data-內容說明array格式-4)

參數必填名稱類型說明InvoiceNo✔發票號碼String (10)長度固定為 10 碼InvoiceDate✔發票開立日期String (10)格式為「yyyy-MM-dd」Reason✔作廢原因String (120)### 作廢折讓發票

[](#作廢折讓發票)

```
$invoice = Invoice::allowanceInvalid($data);
```

#### $data 內容說明(array格式)

[](#data-內容說明array格式-5)

參數必填名稱類型說明InvoiceNo✔發票號碼String (10)長度固定為 10 碼AllowanceNo✔折讓編號String (16)Reason✔作廢原因String (120)### 註銷重開

[](#註銷重開)

```
$invoice = Invoice::voidWithReIssue($data);
```

#### $data 內容說明(array格式)

[](#data-內容說明array格式-6)

大部分與上列 `開立一般發票` 相同 額外增加欄位如下:

參數必填名稱類型說明InvoiceNo✔發票號碼String (10)長度固定為 10 碼VoidReason✔註銷原因String (20)InvoiceDate✔發票開立時間String (20)格式為 yyyy-MM-dd HH:mm:ss
 發票開立時間需為先前開立發票的時間### 查詢發票(根據特店自訂編號)

[](#查詢發票根據特店自訂編號)

```
$invoice = Invoice::getIssueByRelateNumber($relateNumber);
```

#### $relateNumber 內容說明

[](#relatenumber-內容說明)

參數名稱類型說明$relateNumber特店自訂編號string(30)需為唯一值不可重複使用
 注意事項:
 請勿使用特殊符號### 查詢發票(根據發票號及開立日期)

[](#查詢發票根據發票號及開立日期)

```
$invoice = Invoice::getIssueByInvoiceNoAndData($invoiceNo, $invoiceDate);
```

#### $invoiceNo 及 $invoiceDate 內容說明

[](#invoiceno-及-invoicedate-內容說明)

參數名稱類型說明InvoiceNo發票號碼String (10)InvoiceDate發票開立日期String (10)格式為「yyyy-MM-dd」### 查詢折攘明細

[](#查詢折攘明細)

```
$invoice = Invoice::getAllowance($invoiceNo, $allowanceNo);
```

#### $invoiceNo 及 $allowanceNo 內容說明

[](#invoiceno-及-allowanceno-內容說明)

參數名稱類型說明InvoiceNo發票號碼String (10)AllowanceNo折讓編號String (16)### 查詢作廢發票明細

[](#查詢作廢發票明細)

```
$invoice = Invoice::getInvalid($relateNumber, $invoiceNo, $invoiceDate);
```

#### $relateNumber, $invoiceNo 及 $invoiceDate 內容說明

[](#relatenumber-invoiceno-及-invoicedate-內容說明)

參數名稱類型說明$relateNumber特店自訂編號String (10)需為唯一值不可重複使用
 注意事項:
 請勿使用特殊符號InvoiceNo發票號碼String (10)InvoiceDate發票開立日期String (10)格式為「yyyy-MM-dd」### 查詢作廢折讓明細

[](#查詢作廢折讓明細)

```
$invoice = Invoice::getAllowanceInvalid($invoiceNo, $allowanceNo);
```

#### $invoiceNo 及 $allowanceNo 內容說明

[](#invoiceno-及-allowanceno-內容說明-1)

參數名稱類型說明InvoiceNo發票號碼String (10)長度固定為 10 碼AllowanceNo折讓編號String (16)### 查詢字軌

[](#查詢字軌)

```
$invoice = Invoice::getInvoiceWordSetting($data);
```

#### $data 內容說明(array格式)

[](#data-內容說明array格式-7)

參數必填名稱類型說明InvoiceYear✔發票年度String (3)僅可查詢去年、當年與明年的發票年度，格式為民國年 ex:109InvoiceTerm✔發票期別int0:全部，1: 1-2 月，2: 3-4 月，3: 5-6 月，4: 7-8 月，5: 9-10 月，6: 11-12月UseStatus✔字軌使用狀態int0:全部，1:未啟用，2:使用中，3:已停用，4:暫停中，5:待審核，6: 審核不通過InvType字軌類別String (2)07:一般稅額發票，08:特種稅額發票InvoiceHeader字軌名稱String (2)### 發送發票通知

[](#發送發票通知)

```
$invoice = Invoice::invoiceNotify($data);
```

#### $data 內容說明(array格式)

[](#data-內容說明array格式-8)

參數必填名稱類型說明InvoiceNo✔發票號碼String (10)Notify✔發送方式String (1)S:簡訊
 E:電子郵件
 A:皆通知時InvoiceTag✔發送內容類 型String (2)I: 發票開立
 II: 發票作廢
 A: 折讓開立
 AI: 折讓作廢
 AW:發票中獎Notified✔發送對象String (1)C: 發送通知給客戶
 M: 發送通知給特店
 A: 皆發送通知
 注意事項:
 若發送對象類型(Notified)為 A 時，請注意廠商後台設定是否接受通知AllowanceNo折讓編號String (16)注意事項:
 若發送內容類型(InvoiceTag)為 A 或 AI 時為必填Phone發送簡訊號 碼String (20)此欄位可與客戶電子信箱擇一選填，若客戶電子信箱未填，則此欄 位就必須有值
 格式為數字NotifyMail發送電子郵 件String (80)此欄位可與客戶手機號碼擇一選填，若客戶客戶手機號碼未填，則 此欄位必須有值，且需為有效的 Email 格式
 可帶入多組 Email，並以分號區隔 ex: ;### 手機條碼驗證

[](#手機條碼驗證)

```
$invoice = Invoice::checkBarcode($barcode);
```

#### $barcode 內容說明

[](#barcode-內容說明)

參數名稱類型說明$barcode手機條碼String (8)格式應為 8 碼字元，第 1 碼為『/』; 其餘 7 碼則由數字【0-9】、大 寫英文【A-Z】與特殊符號【+】【-】【.】這 39 個字元組成
 注意事項:
 若手機條碼中有加號，可能在介接驗證時發生錯誤，請將加號改為 空白字元，產生驗證碼
 英文、數字、符號僅接受半形字元### 捐贈碼驗證

[](#捐贈碼驗證)

```
$invoice = Invoice::checkLoveCode($loveCode);
```

#### $loveCode 內容說明

[](#lovecode-內容說明)

參數名稱類型說明$loveCode受贈單位之 捐贈碼String (7)捐贈碼以阿拉伯數字為限，最少三碼，最多七碼。內容定位採「文 字格式」，首位可以為零### 發票列印

[](#發票列印)

```
$invoice = Invoice::invoicePrint($data);
```

#### $data 內容說明(array格式)

[](#data-內容說明array格式-9)

參數必填名稱類型說明InvoiceNo✔發票號碼String (10)2碼字軌+8碼數字InvoiceDate✔發票號碼String (20)格式為「yyyy-MM-dd」或 「yyyy/MM/dd」PrintStyle發票列印格式int1：一般列印(單面)，預設2：一般列印(雙面)3：熱感應紙列印 4：B2B A4(僅限帶有統編的發票才能使用) 5: B2B A5(僅限帶有統編的發票才能使用)IsReprintInvoice是否顯示補印發票String (1)Y：顯示為”電子發票證明聯補印”IsShowingDetail是否顯示明細int1：顯示明細 2：隱藏明細

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance61

Regular maintenance activity

Popularity13

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity65

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~64 days

Recently: every ~367 days

Total

24

Last Release

248d ago

Major Versions

v0.0.20 → v1.0.02021-10-20

v1.0.1 → v2.0.02022-02-16

PHP version history (2 changes)v0.0.2PHP ^7.3|^8.0

v2.0.0PHP ^8.0

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/20082281?v=4)[Nick Zhang](/maintainers/castion2293)[@castion2293](https://github.com/castion2293)

---

Top Contributors

[![castion2293](https://avatars.githubusercontent.com/u/20082281?v=4)](https://github.com/castion2293 "castion2293 (49 commits)")

### Embed Badge

![Health badge](/badges/thoth-pharaoh-ecpay-invoice/health.svg)

```
[![Health](https://phpackages.com/badges/thoth-pharaoh-ecpay-invoice/health.svg)](https://phpackages.com/packages/thoth-pharaoh-ecpay-invoice)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3355.3M346](/packages/psalm-plugin-laravel)[renatomarinho/laravel-page-speed

Laravel Page Speed

2.5k1.7M10](/packages/renatomarinho-laravel-page-speed)[illuminate/pagination

The Illuminate Pagination package.

12234.1M1.0k](/packages/illuminate-pagination)[illuminate/pipeline

The Illuminate Pipeline package.

9349.2M282](/packages/illuminate-pipeline)[illuminate/redis

The Illuminate Redis package.

8314.6M376](/packages/illuminate-redis)[illuminate/cookie

The Illuminate Cookie package.

244.6M137](/packages/illuminate-cookie)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
