Callback 實作
外部起單是非同步的機制,當透過 SDK 呼叫起單後,會拿到回傳的 Trace Id
,但並不代表就已經起單成功,此時只是進入系統的背景排程等待執行。系統執行的結果有 成功 和 失敗 兩種結果,此時可透過 Callback 機制來取得資訊。
如果你不清楚 Callback 機制是什麼,請先閱讀認識 SDK 的 Callback 機制說明。
外部起單時的 Callback 設定¶
在建立外部起單物件時,有兩個 Callback 參數設定
參數 | 說明 |
---|---|
CallBackUrl | 要 callback 的 api url,如果沒給值則視為不要 callback |
CustomData | callback 時要回傳的客製資訊,可不給值 |
例如: 我們希望系統起單成功或失敗後,要主動呼叫 url https://hr-system.com.tw/uofx-sdk/callback
來告知外部系統,並且希望帶有起單當時的時間:
//建立 外部起單物件
var doc = new Ede.Uofx.FormSchema.UofxFormSchema.UofxFormSchema()
{
//申請者帳號
Account = "Justin",
//申請者部門代號
DeptCode = "PRX",
//要 CallBack 的 Url
CallBackUrl = "https://hr-system.com.tw/uofx-sdk/callback",
//客製資訊: 填入起單時間
CustomData = $"{DateTimeOffset.Now}",
};
Customdata可以是物件嗎
CustomData 也可以是物件,只要將此物件轉成 json 字串即可。
Callback 物件¶
Callback 物件是加密的,解密方法請參考 Callback 機制說明的 將加密的 API Body 解密篇, 解密後的物件結構如下:
public class CallBackModel
{
//追蹤代號,對應呼叫起單時拿到的 traceid
public string TraceId { get; set; }
//起單結果: Success、Failure
public CallbackType Type { get; set; }
//成功的資訊
public FormApplyResponseModel UofxData { get; set; }
//客製資訊
public string CustomData { get; set; }
//失敗的訊息
public string ErrorMsg { get; set; }
}
public enum CallbackType
{
Success,
Failure
}
可以透過 Type
屬性來確定成功或失敗。當 失敗 時,ErrorMsg
會存放錯誤訊息;當 成功 時,UofxData
會存放表單資訊,表單資訊 Model 如下: