在 Android 應用程式中整合簽署功能,歸根結底是三條架構路徑之間的取捨:原生電子簽名 SDK、REST API 配合託管簽署頁,或在應用內嵌入 WebView 載入供應商的簽署體驗。需要完全掌控簽署 UI 和離線行為時選原生 SDK;追求最快落地合規流程時選 REST API 加託管簽署;想在上線速度與品牌化的應用內體驗之間取得平衡時選 WebView。其餘一切——OAuth2 憑證、文件上傳、簽署人流程、webhook、簽名採集 UX、安全加固——都建立在這一個決策之上。
本指南先逐一講清三條路徑,再覆蓋共用的基礎環節:驗證、典型 envelope 流程、webhook、應用內簽名採集、安全,以及測試與上線計劃。以下模式與供應商無關,無論你評估的是成熟廠商還是新興的電子簽名 API 整合方案,都同樣適用。
在 Android 應用程式中整合簽署的三種方式
寫任何程式碼之前,先決定你的應用要擁有多大程度的簽署體驗。每條路徑都是在控制力與工作量之間做權衡。
原生 SDK。 嵌入廠商的 Android 函式庫,自行渲染文件,用自己的繪圖表面完成簽名採集。這條路徑 UX 最順滑、靈活性最高,但你要負責的面積也更大:PDF 渲染、字段定位、筆跡平滑,以及旋轉螢幕和程序被殺後的生命週期處理。
REST API + 託管簽署頁。 你的後端建立簽署事務;應用在 Chrome Custom Tab 中打開供應商託管的 URL,或交給系統瀏覽器處理。供應商承擔整個簽署流程——身份核實、同意確認、簽名採集和審計軌跡——完成後重新導向回你的應用。這是通往法律上可辯護流程最快的路徑,因為簽署全程運行在廠商構建並測試過的基建之上。
嵌入式 WebView。 在你自己控制的 activity 中用 WebView 載入同一個託管簽署頁。它比瀏覽器跳轉更有應用內觀感,還能保留你的導航欄,但你必須加固 WebView(不開放任意 JavaScript bridge、嚴格限制 URL 白名單),並接受在低端裝置上 Web 端採集的繪圖效能略遜於原生。
無論你最終選哪條路徑,如果還在對比廠商,我們整理的面向開發者的最佳電子簽名 REST API一文覆蓋了完整的評估維度。
前置條件:開發者帳號、憑證與 OAuth2
無論選哪條路徑,第一次 API 呼叫之前都需要同樣的基礎設施:
- 在供應商處開通與生產環境隔離的開發者或沙箱(sandbox)帳號。
- API 憑證:通常是 client ID 和 client secret,或 integration key,權限範圍應收縮到應用所需的最小集。
- OAuth2 令牌流程。服務端使用 client credentials 授權模式,確保 secret 永遠不會打進 APK。涉及用戶授權的場景使用 authorization code 流程,但由應用發起的簽署幾乎總是由後端持有憑證。
- 註冊重新導向/deep link(用於託管簽署),讓簽署頁能把用戶帶回你的應用,例如
yourapp://signing/complete。 - 後端上的 webhook 接收端點,需有公網可達的 HTTPS URL。
有一條規則值得直說:永遠不要把 client secret 嵌進 Android 安裝包。APK 可以被輕易反編譯。你的應用只與自己的後端通信;由你的後端與電子簽名供應商通信。
典型的 REST 整合流程
大多數電子簽名平台都收斂到同一套基於 envelope 的流程——建立事務、上傳文件、擺放字段、產生簽署 URL、監聽完成事件。下面的請求刻意保持通用,具體字段名因供應商而異。
1. 建立 envelope 並取得簽署 URL(你的後端):
```json
POST /v1/envelopes
{
"title": "Service Agreement - Order #4821",
"documents": [{ "name": "agreement.pdf", "contentBase64": "..." }],
"signers": [{
"name": "Ada Chen",
"email": "ada@example.com",
"fields": [{ "type": "signature", "page": 3, "x": 120, "y": 640 }]
}],
"callbackUrl": "https://api.yourapp.com/webhooks/esign"
}
```
回應會返回 envelope ID 和一條給簽署人使用的短期有效簽署 URL。
2. 在應用中打開簽署 URL(Kotlin,Custom Tab):
```kotlin
val intent = CustomTabsIntent.Builder().build()
intent.launchUrl(context, Uri.parse(signingUrl))
```
走 WebView 路徑時,在你控制的 activity 中載入同一個 URL,並攔截你的 deep link 重新導向來檢測完成。
3. 透過 webhook 而非輪詢處理完成事件。 簽署人完成後,供應商向你的 callbackUrl POST 事件;後端更新訂單狀態,並向應用推送刷新(FCM 或下次同步)。webhook 處理細節見下文。
如果你想看這套模式針對某主流廠商的完整實例,我們的 DocuSign API 實操指南逐步走完了同樣的 envelope 生命週期,這些概念可以直接遷移到其他供應商。傾向於讓用戶全程留在自己 UI 內的團隊,還應閱讀我們的嵌入式簽署指南,其中講解了如何把託管頁方案映射到應用內嵌入。
原生簽名採集:UX 與同意確認要點
如果選擇 SDK 路徑自行採集簽名,繪圖板就是用戶評判你應用的地方。實用建議:
- 高解析度採集,螢幕解析度展示。 將筆跡存為矢量點或高 DPI 位圖;只為預覽做降採樣。
- 筆跡平滑。 原始觸控事件噪聲很大。做一遍簡單的貝茲曲線或滑動平均平滑,讓簽名看起來自然而不是鋸齒狀。
- 處理旋轉與程序死亡。 把進行中的筆跡持久化到磁碟;用戶會在簽名中途旋轉手機或接到電話。
- 展示明確的同意確認。 靜默採集的簽名在法律上意義有限。在繪圖板旁配一個清晰的同意勾選框或聲明("我同意以電子方式簽署"),並連同時間戳一起記錄。
- 生物識別的邊界。 裝置生物識別(指紋、臉部解鎖)認證的是裝置持有者,未必是簽署人本人。它是有用的附加因子,但不要單獨把它當作簽署人身份的證明;應結合電郵/簡訊驗證或帳號登入使用。
請記住,在大多數司法管轄區,一個簡單的手繪簽名加上同意確認和審計軌跡,即構成有效的普通電子簽名(SES)。高級(AES)和合格(QES)級別需要基於證書的簽署,這通常由供應商的託管簽署流程完成,而不是自研繪圖板——這也是許多團隊從託管路徑起步的另一個原因。
Webhook 與狀態同步
Webhook 是可靠整合的骨架。設計處理邏輯時要直面移動網絡的現實:
- 校驗每一個事件。 處理前先驗證供應商的簽名頭或共享密鑰;一個不設防的 webhook 端點就是在邀請偽造的「已簽署」事件。
- 處理邏輯冪等。 供應商會重試投遞。以事件 ID 或 envelope 狀態作為狀態更新的鍵,讓重複事件成為空操作。
- 快速回應,非同步處理。 幾秒內返回
200,再把事件丟進佇列處理。處理慢會觸發重試風暴。 - 建模完整生命週期。 至少包括:
sent、viewed、signed、completed、declined、expired、voided。UI 應反映每個狀態,尤其是拒簽——一次靜默失敗的簽署就是一筆丟掉的生意。 - 應用啟動時對賬。 服務中斷期間 webhook 可能遺失。應用打開事務頁面時,主動查詢一次 envelope 狀態作為兜底。
移動簽署整合的安全清單
發布前對照這份清單逐項檢查:
- 全鏈路 TLS 1.2+;API 和 webhook 流量不允許明文降級。
- 對你自己的後端做 certificate pinning(威脅模型要求時也覆蓋供應商端點),並制定證書輪換預案。
- OAuth 令牌存放在 EncryptedSharedPreferences 或 Keystore 中,絕不放明文 SharedPreferences 或日誌。
- 短期簽署 URL 按機密對待:不打日誌、不進分析系統的查詢參數、debug 包禁截圖。
- 如使用 WebView 必須加固:僅在必要時啟用 JavaScript、不暴露 JS interface、頁面跳轉限制在供應商的簽署域名內。
- 文件 PDF 透過帶驗證、URL 會過期的介面取得,不用靜態公開連結。
- 審計軌跡在服務端留存:誰簽了、何時簽的、來自哪個 IP/裝置,以及同意記錄。
關於成本:不同廠商的 API 計價模式差異很大——按 envelope、按 API 呼叫或按席位——選錯模式恰好會懲罰移動端場景(大量小額事務)。我們對 DocuSign API 計價模式的拆解,是你向任何廠商詢價前的實用參照。
測試與上線
先用沙箱。 每家正規供應商都提供帶測試憑證和 webhook 重放的沙箱。先在沙箱裡跑通完整流程——包括拒簽和過期路徑——再碰生產金鑰。
裝置矩陣。 覆蓋多個 Android 版本(至少最近四個大版本)、不同螢幕尺寸,以及——最關鍵的——低記憶體裝置,WebView 採集在這類裝置上可能卡頓。如果用戶群有相應傾向,加一台折疊螢幕或平板。
離線與弱網處理。 想清楚用戶在地鐵上開始簽署時會發生什麼。託管路徑下簽署流程需要聯網:打開簽署 URL 前先檢測離線狀態,把操作排隊。原生 SDK 路徑可以本地採集、稍後同步——對外勤類應用是真正的優勢。
分階段上線。 用 feature flag 先放給一小批用戶,盯緊 webhook 錯誤率和完成率,再逐步擴大。跟蹤漏斗指標:envelope 建立 → 簽署頁打開 → 完成。「打開」到「完成」之間的大幅流失通常意味著簽署流程中的 UX 摩擦,而不是技術 bug。
用 Nota Sign 更快落地 Android 簽署整合
Nota Sign 是法大大旗下的全球化電子簽名平台,其底層基建在 IDC 中國電子簽名軟體市場排名中連續多年位居第一。平台提供覆蓋 100+ 個國家和地區的法律適配能力,深耕亞太合規(包括 iAM Smart 與 Singpass 整合),支援 SES、AES、QES 各級簽名,並由區域數據中心提供支撐。面向服務中國簽署人或跨境簽署場景的團隊,我們關於面向軟體開發者的中國電子簽名 REST API的概講解了區域特有的細節。
Nota Sign 不按席位收費,對小團隊友好;中大型及企業客戶可根據簽署量和整合需求獲得定制方案。如果你正在規劃 Android 整合——SDK、託管簽署或 WebView——歡迎聯絡 Nota Sign 團隊,了解開發者接入、沙箱憑證,以及最適合你應用的整合路徑。









