應用場景
(若不撰寫此API,則可透過廠商後台功能處理)
情景一、【廠商後台>發票通知方式設定】通知選項沒有開啟:
請特店完全只使用此API來發送電子發票各類通知
情景二、通知失敗,需要額外補送各類通知:
可使用此API來補送各類發票通知特店
注意事項:
- 測試環境下綠界不會『主動』發送任何通知,使用廠商後台『補發通知』也不會通知。
- 若【廠商後台>發票通知方式設定】通知選項有開啟,除非有額外補送通知需求,否則不需要再串接此API,以免重複通知。
- 綠界系統會於奇數月份的29號核對中獎發票,廠商需先設定通知方式以便通知消費者。
應用流程說明
API介接網址
- 測試環境:https://einvoice-stage.ecpay.com.tw/B2CInvoice/InvoiceNotify
- 正式環境:https://einvoice.ecpay.com.tw/B2CInvoice/InvoiceNotify
HTTPS傳輸協定
- Content Type :application/json
- HTTP Method :POST
特店傳入參數(Json格式)
PlatformID String(10)
特約合作平台商代號
- 這個參數是專為與綠界簽約的指定平台商所設計,只有在申請開通後才能使用。
- 如果您是一般廠商,請在介接時將此參數欄位保留為空。
- 對於平台商,在使用時需要在MerchantID(特店編號)欄位中填入與您已經完成綁定子廠商的MerchantID(特定編號)。
請注意,只能使用已綁定的子廠商編號,以避免操作失敗。綁定作業請洽所屬業務。
MerchantID String(10)
特店編號 必填
RqHeader Object
傳入資料 必填
Timestamp Number
傳入時間 必填
請將傳輸時間轉換為時間戳(GMT+8),綠界會利用此參數將當下的時間轉為Unix TimeStamp來驗證此次介接的時間區間。
注意事項:
- 驗證時間區間暫訂為 10 分鐘內有效,若超過此驗證時間則此次訂單將無法建立,參考資料:http://www.epochconverter.com/。
- 合作特店須進行主機「時間校正」,避免主機產生時差,導致API無法正常運作。
Data String
加密資料 必填
此為加密過JSON格式的資料。加密方法說明
特店傳入參數範例(Json格式)
{
"MerchantID": "2000132",
"RqHeader": {
"Timestamp": 1525168923
},
"Data": "加密資料"
}
Data參數說明(Json格式) : 請先將Json字串進行urlencode後再進行AES加密
MerchantID String(10)
特店編號 必填
InvoiceNo String(10)
發票號碼 必填
長度固定為10碼
AllowanceNo String(16)
折讓編號 必填
注意事項:若發送內容類型[InvoiceTag]為A(折讓開立)、AI(折讓作廢)或OA(線上折讓)時為必填
Phone String(20)
發送簡訊號碼
- 此欄位可與客戶電子信箱擇一選填,若客戶電子信箱未填,則此欄位就必須有值
- 格式為數字
NotifyMail String(200)
發送電子郵件
- 此欄位可與客戶手機號碼擇一選填,若客戶客戶手機號碼未填,則此欄位必須有值,且需為有效的Email格式
- 可帶入多組Email,並以分號區隔 ex: aa@aa.aa;bb@bb.bb
- 格式檢核正規表達式為:^((([A-Za-z]|\d|[!#\$%&’\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([A-Za-z]|\d|[!#\$%&’\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([A-Za-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([A-Za-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([A-Za-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([A-Za-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([A-Za-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([A-Za-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([A-Za-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([A-Za-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$
Notify String(1)
發送方式 必填
S:簡訊
E:電子郵件
A:皆通知時
注意事項:當發送內容類型[InvoiceTag]=OA(線上折讓)時,此參數限填E(電子郵件)
InvoiceTag String(2)
發送內容類型 必填
I: 發票開立
II: 發票作廢
A: 折讓開立
AI: 折讓作廢
AW: 發票中獎
OA: 線上折讓
注意事項:OA(線上折讓)是再次發送折讓確認給買家
Notified String(1)
發送對象 必填
C: 發送通知給客戶
M: 發送通知給特店
A: 皆發送通知
注意事項:
- 若發送對象類型(Notified)為A時,請注意廠商後台設定是否接受通知
- 當發送內容類型[InvoiceTag]=OA(線上折讓)時,此參數限填C(發送通知給客戶)
Data參數範例(Json格式)
{
"MerchantID": 2000132,
"InvoiceNo": "UV11100016",
"AllowanceNo": "2019091719477262",
"Phone": "0912345678",
"NotifyMail": "test@ecpay.com.tw",
"Notify": "E",
"InvoiceTag": "I",
"Notified": "A"
}
綠界回傳參數格式
- Content Type :application/json
- HTTP Method :POST
綠界回傳參數(Json格式)
PlatformID String(10)
特約合作平台商代號
MerchantID String(10)
特店編號
RpHeader Object
回傳資料
Timestamp Number
回傳時間
Unix timestamp(GMT+8)
TransCode Int
回傳代碼
1 代表 API 傳輸資料(MerchantID, RqHeader, Data)接收成功,實際的 API 執行結果狀態請參考 RtnCode。
TransMsg String(200)
回傳訊息
Data String
加密資料
回傳相關資料,此為加密過JSON格式的資料。加密方法說明
綠界回傳參數範例
{
"MerchantID": "2000132",
"RpHeader": {
"Timestamp": 1525169058
},
"TransCode": 1,
"TransMsg": "",
"Data": "加密資料"
}
Data參數說明(Json格式) : 請先將Data進行AES解密後再做urldecode
RtnCode Int
回應代碼
1 代表 API 執行成功,其餘代碼均為失敗。
RtnMsg String(200)
回應訊息
MerchantID String(10)
特店編號
Data參數範例
{
"MerchantID": 2000132,
"RtnMsg": "發送通知成功",
"RtnCode": 1
}
YAML
提供的 YAML 文件用於定義 API 的配置、結構、操作和基礎設施管理等資訊,方便開發人員理解和使用 API。
openapi: 3.1.0
info:
title: ECPay Send Invoice Notification API
version: 1.0.0
servers:
- url: https://einvoice-stage.ecpay.com.tw
description: Testing Environment
- url: https://einvoice.ecpay.com.tw
description: Production Environment
paths:
/B2CInvoice/InvoiceNotify:
post:
summary: Send Invoice Notification
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- MerchantID
- RqHeader
- Data
properties:
PlatformID:
type: string
maxLength: 10
description: Platform ID for partnered platforms
MerchantID:
type: string
maxLength: 10
description: Merchant ID
RqHeader:
type: object
required:
- Timestamp
properties:
Timestamp:
type: integer
description: Unix timestamp (GMT+8)
Data:
type: string
description: Encrypted data containing request details
responses:
'200':
description: Successful Response
content:
application/json:
schema:
type: object
properties:
PlatformID:
type: string
maxLength: 10
description: Platform ID for partnered platforms
MerchantID:
type: string
maxLength: 10
description: Merchant ID
RpHeader:
type: object
properties:
Timestamp:
type: integer
description: Unix timestamp (GMT+8)
TransCode:
type: integer
description: Transmission code
TransMsg:
type: string
maxLength: 200
description: Transmission message
Data:
type: string
description: Encrypted data containing response details
components:
schemas:
requestBody.Data:
type: object
required:
- MerchantID
- InvoiceNo
- Notify
- InvoiceTag
- Notified
properties:
MerchantID:
type: string
maxLength: 10
description: Merchant ID
InvoiceNo:
type: string
maxLength: 10
description: Invoice number
AllowanceNo:
type: string
maxLength: 16
description: Allowance number
Phone:
type: string
maxLength: 20
description: Notification phone number
NotifyMail:
type: string
maxLength: 200
description: Notification email
Notify:
type: string
maxLength: 1
description: Notification method (S is SMS, E is Email, A is Both)
InvoiceTag:
type: string
maxLength: 2
description: Notification content type (I is Invoice, II is Invalid Invoice, A is Allowance, AI is Invalid Allowance, AW is Winning Invoice, OA is Online Allowance)
Notified:
type: string
maxLength: 1
description: Notification recipient (C is Customer, M is Merchant, A is Both)
responses.Data:
type: object
properties:
RtnCode:
type: integer
description: Response code
RtnMsg:
type: string
maxLength: 200
description: Response message
MerchantID:
type: string
maxLength: 10
description: Merchant ID