跳轉到

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 如下:

public class FormApplyResponseModel
{
    //表單名稱
    public string FormName { get; set; }
    //表單編號
    public string FormSn { get; set; }
}