iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
自我挑戰組

串接綠界服務的疑難雜症詳解系列 第 29

【綠界發票】電子發票串接-延遲開立功能

  • 分享至 

  • xImage
  •  

各位做購物網站的一定會遇過
東西賣出去有七天鑑賞期
七天內如果不喜歡可以讓消費者退貨

如果商品售出的當下就開立發票
會導致退貨時還要將原發票進行作廢
一兩件還好
但只要退貨數量一多
事情就會變得很麻煩

這時,其實可以考慮商品售出七天後再開立發票
這樣就可以大幅減少因退貨而導致要將發票作廢的情況

有些網站會這樣設計:
結帳時將消費者資訊存在自己的系統
等七天後
如果沒有退貨產生
再呼叫「一般開立發票」API把發票開出來

但這個情境會有一個問題
就是你不知道消費者填的資訊有沒有錯
例如載具編號格式錯誤
很多資訊都是只有等實際呼叫開立發票API被擋下來後才知道錯了
這時還要回過頭去聯繫消費者補資料
耗時又耗力

如果擔心以上的事情發生
那就可以考慮串接綠界的「延遲開立發票」API

今天就來教大家如何使用綠界的「延遲開立發票」API


延遲開立發票API
其功能就是先將開立發票的資訊存至綠界系統
等到預定時間,綠界會自動開立發票
所以在儲存資訊的當下
你就可以知道有沒有資訊錯誤的問題
若有問題可以直接於網頁前端顯示錯誤訊息請消費者更新資訊

「延遲開立發票」API和「一般開立發票」API的參數絕大部分都一樣
只有以下幾個需要注意

  • DelayFlag延遲註記
  • DelayDay延遲天數
  • Tsr交易單號
  • PayType交易類別(固定為2)
  • PayAct交易類別名稱(固定為ECPAY)

主要的延遲情境與天數是由DelayFlag與DelayDay控制
Tsr可以想成是後續用來控制這張「待開立發票」的參數
接下來說明這支API對應的兩種情境


1. 預約開立發票

如其名,先將開立發票參數傳往綠界
等到預定時間
綠界會自動開立發票

假設,我要預訂七天後自動開立發票

{
  "MerchantID": "2000132",
  "RelateNumber": "20240924110947",
  "CustomerID": "",
  "CustomerIdentifier": "",
  "CustomerName": "tester",
  "CustomerPhone": "0912345678",
  "CustomerEmail": "test@tt.cc",
  "ClearanceMark": "",
  "Print": "0",
  "Donation": "0",
  "LoveCode": "",
  "CarrierType": "1",
  "CarrierNum": "",
  "TaxType": "1",
  "SalesAmount": "300",
  "InvoiceRemark": "發票備註",
  "Items": [
    {
      "ItemSeq": "1",
      "ItemName": "test1",
      "ItemCount": "1",
      "ItemWord": "pcs",
      "ItemPrice": "100",
      "ItemTaxType": "1",
      "ItemAmount": "100"
    },
    {
      "ItemSeq": "2",
      "ItemName": "test2",
      "ItemCount": "1",
      "ItemWord": "pcs",
      "ItemPrice": "100",
      "ItemAmount": "100"
    },
    {
      "ItemSeq": "3",
      "ItemName": "test3",
      "ItemCount": "1",
      "ItemWord": "pcs",
      "ItemPrice": "100",
      "ItemAmount": "100"
    }
  ],
  "InvType": "07",
  "DelayFlag": "1",
  "DelayDay": "7",
  "Tsr": "GO20240924110947",
  "PayType": "2",
  "PayAct": "ECPAY",
  "NotifyURL": ""
}

可以看到和一般開立發票的參數相比
多了以下

"DelayFlag": "1", //延遲開立
"DelayDay": "7", //延遲開立天數
"Tsr": " GO20240924110947",
"PayType": "2",
"PayAct": "ECPAY",

呼叫API成功後,綠界會回傳

{
  "RtnCode": 1,
  "RtnMsg": "開立發票成功",
  "OrderNumber": "GO20240924110947"
}

這裡的GO20240924110947就是當初送的Tsr

建議,可以直接將「RelateNumber」和「Tsr」設成一樣的值就好
這裡是為了凸顯回傳的是Tsr才故意送不一樣的值

完成後
登入綠界後台
就可以查到這張「待開立發票」囉
建立的時間是9/24
預計開立日期是七天後10/1
https://ithelp.ithome.com.tw/upload/images/20240924/20168877zt15Y77rEQ.png

由上圖也可以看到
後台也是用RelateNumber查詢「待開立發票」
因此會建議將「RelateNumber」和「Tsr」設成一樣的值

這樣就算完成延遲開立發票功能囉


2. 觸發開立發票

延遲開立發票API的另一個功能就是觸發開立發票

同樣,是先將開立發票參數傳往綠界,等到確認要開立發票時,再呼叫「觸發開立發票」API,進行觸發開立

比較特別的是還可以細分為

1.觸發當下立即開立:
這個比較好理解
就是綠界會等到你呼叫API處發後立即開立發票

//延遲註記
'DelayFlag'=>'2',
//延遲天數
'DelayDay'=>'0',

成功呼叫API後可以查到
https://ithelp.ithome.com.tw/upload/images/20240924/20168877qGfhFgeuFE.png

這樣,後面只要呼叫「觸發開立發票」API
綠界就會立即開立發票囉

2.觸發完幾天後開立:
這個功能是指當你呼叫API觸發完的「幾天後」開立發票

例如,我要觸發完成的7天後自動開立發票
參數可以這樣下:

//延遲註記
'DelayFlag'=>'2',
//延遲天數
'DelayDay'=>'7',

完成後可以到後台查看
https://ithelp.ithome.com.tw/upload/images/20240924/20168877D90judYX4d.png

這樣,後面只要呼叫「觸發開立發票」API
綠界就會往後算七天再協助開立發票

以上就是延遲開立發票功能囉
大家可以評估哪種方式比較符合自己的網站設計


明天就是最後一天了
礙於篇幅
綠界的電子發票功能還有很多沒有提到

如果各位對於電子發票功能有甚麼問題
都可以下方留言

那我們明天見


上一篇
【綠界發票】電子發票串接-發票通知
下一篇
完賽感言
系列文
串接綠界服務的疑難雜症詳解30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言