Neidio i’r prif gynnwys

Integreiddio Arwyddwr Legalesign i’ch Gwefan

Galluogi ar gyfer eich tîm

Mae’n rhaid actifadu’r cydran Arwyddwr. Cysylltwch â chefnogaeth i’w alluogi ar gyfer eich tîm.

Fersiwn gyfredol: v1.1.7 — cofnodi newidiadau

Mae’r Arwyddwr Legalesign yn gydran gwe annibynnol ar lwyfannau sy’n darparu profiad llofnodi dogfennau cyflawn a llyfn o fewn eich app eich hun. Mae’n gweithio gyda vanilla HTML, React, Vue, Angular, neu unrhyw fframwaith gwe.

Mewnosodwch y cydran hon yn unrhyw le lle mae eich defnyddwyr angen llofnodi dogfennau — y tu mewn i CRM, porth cleientiaid, neu unrhyw raglen fewnol sy’n dangos HTML.

Gosod​

Llwythwch yn uniongyrchol o’r CDN (dim gosod yn ofynnol):

<script type="module" src="https://cdn.legalesign.io/signer/latest/ls-signer.esm.js"></script>

Gosod React​

Gosodwch drwy reolwr pecynnau:

npm install legalesign-signer
# or
pnpm add legalesign-signer

Integreiddiad Sylfaenol​

HTML a JavaScript​

<ls-signer
recipient-id="abc123"
private-key="key"
session-id="session"
></ls-signer>

<script>
const signer = document.querySelector('ls-signer');
signer.addEventListener('signingSuccess', (e) => console.log('Signed:', e.detail.eventType, e.detail.documentId));
signer.addEventListener('signingFail', (e) => console.error('Failed:', e.detail.failureReason, e.detail.error));
signer.addEventListener('fieldChange', (e) => console.log('Field event:', e.detail.eventType));
</script>

React​

import { useEffect, useState } from 'react';
import { LsSigner } from 'legalesign-signer/react';
import 'legalesign-signer/react.css';

function SigningPage() {
const [signerData, setSignerData] = useState(null);

useEffect(() => {
fetch('/your-backend/to-get-token')
.then(res => res.json())
.then(setSignerData);
}, []);

if (!signerData) return <p>Loading...</p>;

return (
<LsSigner
recipientId={signerData.recipientId}
privateKey={signerData.token}
sessionId={signerData.sessionId}
onSuccess={({ eventType, documentId }) => console.log(eventType, documentId)}
onFail={({ eventType, failureReason, error }) => console.error(eventType, failureReason, error)}
onChange={({ eventType, uuid, saved, field, document }) => console.log('Event:', eventType)}
/>
);
}

Mae React yn gofyn am react a react-dom (v18 neu v19) fel dibyniaethau cydgynhwysol.

Vue​

<template>
<ls-signer
ref="signer"
:recipient-id="recipientId"
:private-key="privateKey"
:session-id="sessionId"
/>
</template>

<script setup>
import { ref, onMounted, onBeforeUnmount } from 'vue';

const signer = ref(null);

function handleSuccess(e) {
console.log('Signed:', e.detail);
}
function handleFail(e) {
console.error('Failed:', e.detail);
}

onMounted(() => {
signer.value.addEventListener('signingSuccess', handleSuccess);
signer.value.addEventListener('signingFail', handleFail);
});

onBeforeUnmount(() => {
signer.value?.removeEventListener('signingSuccess', handleSuccess);
signer.value?.removeEventListener('signingFail', handleFail);
});
</script>
cyngor

Os ydych yn defnyddio Vue gyda Vite, ychwanegwch isCustomElement: (tag) => tag.startsWith('ls-') i’ch cyfluniad ategyn Vue i atal rhybuddion elfennau anhysbys.

rhybudd

Mae Vue 3 yn troi enwau digwyddiadau i lythrennau bach ar elfennau arfer, felly ni fydd @signingSuccess yn gweithio. Defnyddiwch addEventListener ar y cyfeirnod elfen fel y dangosir uchod.

Nuxt 3

Amgylchynwch <ls-signer> gyda <ClientOnly> i atal gwallau SSR. Ychwanegwch y ffurfweddiad elfen arfer yn nuxt.config.ts:

export default defineNuxtConfig({
vue: {
compilerOptions: {
isCustomElement: (tag) => tag.startsWith('ls-'),
},
},
});

Dilysu​

Mae’r cydran arwyddwr yn gofyn am docyn tymor byr gan eich cefnwefan. Mae dau opsiwn:

  1. GraphQL generateComponentToken — Galwch gyda component: LS_SIGNER a naill ai recipientId neu sessionId yn y cwmpawd arwyddwr (darparwch un, nid y ddau).
  2. REST API — Galwch GET /signer/{signerId}/component-token/ gyda’ch allwedd API.

Mae’r ddau yn dychwelyd y token a’r sessionId sydd eu hangen ar y cydran. Gweler Awdurdodi Widget am y llif llawn o docynnau ochr gweinydd.

Opsiwn 1: GraphQL (Node.js)​

Gan ddefnyddio recipientId (y mwyaf cyffredin — defnyddiwch pan rydych yn gwybod y derbynnydd ond heb sesiwn eto):

const response = await fetch('https://graphql.uk.legalesign.com/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${process.env.LEGALESIGN_API_KEY}`,
},
body: JSON.stringify({
query: `mutation MintSignerToken($input: GenerateComponentTokenInput!) {
generateComponentToken(input: $input) {
token
tokenType
sessionId
expiresIn
expiresAt
}
}`,
variables: {
input: {
component: 'LS_SIGNER',
signer: { recipientId: '<recipient-id>' }
}
}
})
});

const { data } = await response.json();
const { token, sessionId } = data.generateComponentToken;

Fel arall, os ydych eisoes â sessionId o alwad flaenorol:

variables: {
input: {
component: 'LS_SIGNER',
signer: { sessionId: '<session-id>' }
}
}

Opsiwn 2: REST API​

const response = await fetch(
`https://eu-api.legalesign.com/api/v1/signer/${signerId}/component-token/`,
{
headers: {
Authorization: `Bearer ${process.env.LEGALESIGN_API_KEY}`,
},
}
);

const { token, sessionId } = await response.json();

Trosglwyddwch token fel private-key a sessionId fel session-id i’r cydran.

Nodweddion Gorfodol​

NodweddMathDisgrifiad
recipient-idstringGwidentydd derbynnydd (base64, ymlaenrybudd rec, neu UUID)
private-keystringTocyn a ddychwelwyd gan generateComponentToken
session-idstringID sesiwn wedi’i ddychwelyd gan generateComponentToken

Nodweddion Dewisol​

NodweddMathDiofynDisgrifiad
colourstringblueEnw lliw thema (gweler Theming)
stylestring``Newidiadau arddull (gweler Customer CSS)
brandingbooleantrueDangos brandio Legalesign. Gosod i false i’w dynnu.
languagestring—Gorfodi iaith benodol a chuddio’r newidydd iaith (gweler Internationalisation)

Digwyddiadau​

Prop ReactDigwyddiad cydran gweeventTypePryd
onSuccesssigningSuccess"success"Dogfen wedi’i llofnodi’n llwyddiannus
onFailsigningFail"failure"Methiant llofnodi dogfen, gwrthodwyd, wedi dod i ben, wedi’i ganslo, wedi’i ddileu, wedi’i dynnu neu eisoes wedi’i gwblhau mewn man arall
onChangefieldChange"ready"Dogfen a delweddau’n llwytho’n llawn
onChangefieldChange"save"Gwerth maes wedi’i gadw
onChangefieldChange"select"Maes wedi’i ddewis neu’i ganolbwyntio

onSuccess / signingSuccess​

Yn sgorio pan fydd y derbynnydd yn llofnodi’r ddogfen yn llwyddiannus.

{
eventType: 'success';
documentId: string; // UUID of the signed document
recipientId: string; // UUID of the recipient
}

React:

<LsSigner
onSuccess={({ eventType, documentId, recipientId }) => {
console.log(eventType); // "success"
console.log(documentId);
console.log(recipientId);
}}
/>

Cydran gwe:

signer.addEventListener('signingSuccess', (e) => {
console.log(e.detail.eventType); // "success"
console.log(e.detail.documentId);
console.log(e.detail.recipientId);
});

onFail / signingFail​

Yn chwythu pan fydd llofnodi’n methu — naill ai oherwydd gwrthod dogfen neu wall yn ystod y broses llofnodi (e.e. gwall rhwydwaith, sesiwn wedi dod i ben, gwrthdaro statws dogfen).

{
eventType: 'failure';
failureReason: FailureReason;
error: string; // Human-readable error message
documentId?: string; // UUID of the document (if available)
recipientId: string; // UUID of the recipient
}
failureReasonAchos
documentExpiredMae statws dogfen yn "expired" neu ddyddiad expires yn y gorffennol
sessionExpiredMae’r API wedi dychwelyd 401 neu 403 wrth lwytho’r ddogfen
cancelledMae statws dogfen yn "cancelled"
deletedMae’r bwlch is_deleted mewn gwirionedd true
rejectedDerbynnydd wedi gwrthod y ddogfen (is_rejected yn wir)
removedMae’r API wedi dychwelyd 404 — nid yw’r ddogfen mwyach yn bodoli
documentCompletedMae’r API arwyddo wedi dychwelyd completed — roedd y ddogfen eisoes wedi’i llofnodi, tebygol mewn porwr neu ddyfais arall. Mae’r cydran yn dangos neges wybodaeth i’r derbynnydd yn hytrach nag error.
signingErrorunrhyw wall arall yn ystod llwytho neu lofnodi

React:

<LsSigner
onFail={({ eventType, failureReason, error, documentId, recipientId }) => {
console.log(eventType); // "failure"
console.log(failureReason); // e.g. "documentExpired"
console.log(error);
}}
/>

Cydran gwe:

signer.addEventListener('signingFail', (e) => {
console.log(e.detail.eventType); // "failure"
console.log(e.detail.failureReason); // e.g. "documentExpired"
console.log(e.detail.error);
});

onChange / fieldChange​

Mae’r tri gwerth eventType yn rhannu’r un digwyddiad. Defnyddiwch eventType i wahaniaethu.

eventType: "ready"​

Yn chwythu unwaith pan fydd y ddogfen a’r holl ddelweddau tudalen wedi’u llwytho’n llawn ac mae rhyngwyneb llofnodi yn barod ar gyfer rhyngweithio.

{
eventType: 'ready';
document: {
documentId: string; // UUID of the document
name: string; // Document name
state: string; // Document state (e.g. "signing")
recipientId: string; // UUID of the recipient
recipientRole?: string; // Role of the recipient (e.g. "witness")
pageCount: number; // Number of pages
expires?: string; // Expiry date (ISO string, if set)
isApprover: boolean; // Whether the recipient is an approver
isWitness: boolean; // Whether the recipient is a witness
canReassign: boolean; // Whether the recipient can reassign
doOfferReject: boolean; // Whether the reject option is shown
};
}

React:

<LsSigner
onChange={({ eventType, document }) => {
if (eventType === 'ready') {
console.log('Ready to sign:', document.documentId, document.name);
console.log('Pages:', document.pageCount);
console.log('Expires:', document.expires);
}
}}
/>

Cydran gwe:

signer.addEventListener('fieldChange', (e) => {
if (e.detail.eventType === 'ready') {
console.log('Ready to sign:', e.detail.document.documentId, e.detail.document.name);
}
});

eventType: "save"​

Yn chwythu ar ôl gwerth maes wedi’i gadw ar y gweinydd.

{
eventType: 'save';
uuid: string; // UUID of the field
saved: boolean; // Whether the save was successful
field: Record<string, any>; // Full field object (see Field Properties below)
}

React:

<LsSigner
onChange={({ eventType, uuid, saved, field }) => {
if (eventType === 'save') {
console.log(uuid, saved, field.value);
}
}}
/>

Cydran gwe:

signer.addEventListener('fieldChange', (e) => {
if (e.detail.eventType === 'save') {
console.log(e.detail.uuid, e.detail.saved, e.detail.field.value);
}
});

eventType: "select"​

Yn chwythu pan fydd maes wedi’i ddewis neu ganolbwyntio — wedi’i ysgogi gan glic gan y defnyddiwr, llywio allweddell, symud ymlaen awtomatig, neu rhyngweithio ochr-bar.

{
eventType: 'select';
uuid: string; // UUID of the selected field
field: Record<string, any>; // Full field object (see Field Properties below)
}

React:

<LsSigner
onChange={({ eventType, uuid, field }) => {
if (eventType === 'select') {
console.log('selected', uuid, field.fieldtype);
}
}}
/>

Cydran gwe:

signer.addEventListener('fieldChange', (e) => {
if (e.detail.eventType === 'select') {
console.log('selected', e.detail.uuid, e.detail.field.fieldtype);
}
});

Nodweddion Maes​

Mae’r gwrthrych field sy’n cael ei gynnwys mewn digwyddiadau save a select yn cynnwys y nodweddion canlynol:

NodweddMathDisgrifiad
uuidstringGwidentydd unigryw maes
fieldtypestringMath maes (e.e. "text", "signature", "date", "checkbox")
valuestringGwerth maes presennol
statebooleanPa un a gafodd y maes ei gadw’n llwyddiannus
optionalbooleanPa un a yw’r maes yn ddewisol
pagenumberRhif y dudalen lle mae’r maes yn ymddangos
labelstringLabel y maes (os wedi’i osod)
validationnumberCod math dilysu
logicactionstringMath gweithred rhesymegol ("1" = radio, "2" = swm, "3" = amodol)
logicgroupstringGwidentydd grŵp rhesymegol
maptostringGrŵp targed ar gyfer rhesymeg (meysydd rheolydd)
autobooleanPa un a yw’r maes yn cael ei lenwi’n awtomatig
dirtybooleanPa un a yw’r maes yn cynnwys newidiadau lleol heb eu cadw

Props React​

Mae’r cydran React yn defnyddio props camelCase a props galwad-yn-ôl yn lle digwyddiadau DOM:

PropMathAngenrheidiolDisgrifiad
recipientIdstring✅Gwidentydd derbynnydd
privateKeystring✅Allwedd breifat o’r mwtaniad generateComponentToken
sessionIdstring✅Gwidentydd sesiwn
colourLsSignerColour❌Lliw thema
brandingboolean❌Dangos brandio Legalesign. Diofyn i true.
languagestring❌Gorfodi iaith benodol (gweler Internationalisation)
onSuccess(data: { eventType: 'success'; documentId: string; recipientId: string }) => void❌Yn cael ei alw ar lofnodi llwyddiannus
onFail(data: { eventType: 'failure'; failureReason: FailureReason; error: string; documentId?: string; recipientId: string }) => void❌Yn cael ei alw ar fethiant llofnodi
onChange(data: { eventType: 'ready' | 'save' | 'select'; document?: DocumentSummary; uuid?: string; saved?: boolean; field?: Record<string, any> }) => void❌Yn cael ei alw ar ddigwyddiadau maes a phan fydd y ddogfen yn barod

Daliwr catch-all (dadansoddi a phrototeipio)​

Gan fod pob digwyddiad yn cynnwys eventType, gallwch gael un swyddogaeth yn cysylltu â phob digwyddiad:

React:

const handleSignerEvent = (e) => {
switch (e.eventType) {
case 'success': console.log('Signed:', e.documentId); break;
case 'failure': console.log('Failed:', e.failureReason, e.error); break;
case 'ready': console.log('Ready:', e.document?.name); break;
case 'save': console.log('Saved field:', e.uuid, e.saved); break;
case 'select': console.log('Selected field:', e.uuid); break;
}
};

<LsSigner
onSuccess={handleSignerEvent}
onFail={handleSignerEvent}
onChange={handleSignerEvent}
/>

Cydran gwe:

const handleSignerEvent = (e) => {
switch (e.detail.eventType) {
case 'success': console.log('Signed:', e.detail.documentId); break;
case 'failure': console.log('Failed:', e.detail.failureReason, e.detail.error); break;
case 'ready': console.log('Ready:', e.detail.document?.name); break;
case 'save': console.log('Saved field:', e.detail.uuid, e.detail.saved); break;
case 'select': console.log('Selected field:', e.detail.uuid); break;
}
};

signer.addEventListener('signingSuccess', handleSignerEvent);
signer.addEventListener('signingFail', handleSignerEvent);
signer.addEventListener('fieldChange', handleSignerEvent);

Theming​

Gosod thema lliw gyda’r prop colour. Mae pob arlliw yn cael ei dynnu’n awtomatig.

Lliwiau Ar Gael​

pink · blue · purple · indigo · teal · green · lightblue · burnt · aubergine · red · yellow · cyan · lime · trueGreen

Peidiwch â rhoi’r prop i gael y lluniaf ddiofyn glas.

<ls-signer colour="pink" ...></ls-signer>
<LsSigner colour="pink" ... />

Mae’r prop colour yn gosod nodwedd data-ls-theme ar wraidd y cydran. Mae eiddo CSS arfer wedi’u diffinio ar gyfer sgôr 10–100 ar gyfer pob lliw:

ArlliwDefnydd
10Cefndiroedd ysgafn, llenwi ysgafn
20Ffiniau ysgafn
30Llyfrau canolbwyntio
60Lliw blaenorol (botymau, dolenni, statws gweithredol)
70Statws hofran
80Accentau tywyll/cryf

CSS Custom​

Mae’r cydran yn datgelu eiddo CSS arfer y gellir eu hailadrodd i bersonoli ymddangosiad y tu hwnt i’r thema lliw. Mae set o eiddo ar hyn o bryd yn gyfyngedig, cysylltwch â ni am ragor.

<ls-signer
style="--ls-font-family: 'Inter', sans-serif; --ls-color-primary-60: #e91e63;"
recipient-id="abc123"
private-key="key"
session-id="session"
></ls-signer>

Eiddo Ar Gael​

EiddoDiofynDisgrifiad
--ls-font-family'IBM Plex Sans', sans-serifTeulu ffont cynradd
--ls-color-primary-10 i --ls-color-primary-100—Graddfa lliw blaenorol lawn (yn disodli thema)
--ls-color-error#f64a44Lliw statws gwall
--ls-color-error-light#fff0f0Cefndir gwall
--ls-color-success#46dbaaLliw statws llwyddiant
--ls-color-success-light#effff9Cefndir llwyddiant
--ls-color-warning#fad232Lliw statws rhybudd
--ls-color-warning-light#fffcefCefndir rhybudd
--ls-color-border#d8d9dcLliw ffin diofyn
--ls-color-border-subtle#e0e2e5Lliw ffin ysgafn
--ls-color-bg-subtle#f7f8faLliw cefndir ysgafn

Nodyn: Ar gyfer chwythiad CSS custom llawn (targedu elfennau mewnol yn uniongyrchol, gwthio maint ffont, radiws ffin, gofod, ac ati), mae hwn yn nodwedd a gynlluniwyd ar gyfer y dyfodol. Cysylltwch â ni os oes gennych ddiddordeb trwy gysylltu.

Rhyngwladoli​

Mae’r cydran yn cefnogi 17 o ieithoedd gyda chyfieithiadau wedi’u pacio i’r adeilad. Caiff iaith ei ganfod yn awtomatig o’r porwr. Mae newidydd iaith adeiledig yn rhyngwyneb llofnodi sy’n caniatáu i’r derbynnydd newid iaith ar unrhyw adeg.

Gosodwch y nodwedd language i orfodi iaith benodol. Pan fydd wedi’i darparu, mae’r newidydd iaith adeiledig yn cael ei guddio ac mae canfod y porwr yn cael ei osgoi.

<ls-signer language="fr" recipient-id="abc123" private-key="key" session-id="session"></ls-signer>
<LsSigner language="fr" recipientId="abc123" privateKey="key" sessionId="session" />

Trefn flaenoriaeth: prop language → iaith y porwr → iaith Saesneg fel opsiwn wrth gefn.

CodIaithCodIaith
enSaesnegnlSwinoaeg
frFfrangegfiFfinneg
bgBwlgaregitEidaleg
esSbaenegheHebraeg
deAlmaenegsvSvedeg
gsGaeleg Yr AlbancyCymraeg
arArabegisIwslandi
elGroegiwHebraeg (hen)
ptPortiwgaleg
roRwmaneg

Fersiynu CDN​

Mae’r URL CDN yn cefnogi fersiwnau latest a rhifau fersiwn gwarchodedig:

<!-- Always get the most recent version (recommended) -->
<script type="module" src="https://cdn.legalesign.io/signer/latest/ls-signer.esm.js"></script>

<!-- Pin to a specific version -->
<script type="module" src="https://cdn.legalesign.io/signer/v1.1.7/ls-signer.esm.js"></script>

Rydym yn argymell defnyddio latest — mae hyn yn sicrhau bod eich integreiddiad yn cael diweddariadau awtomatig ar gyfer trwsio bygiau, patchi diogelwch, a nodweddion newydd. Defnyddiwch fersiwn rhwystredig os oes angen i chi gloi i ryddhau sydd wedi’i brofi mewn cyfnod rewi QA neu ryddhau rheoledig. Gweler y hanes llawn fersiynau ar npm ar gyfer fersiynau ar gael.

Enghraifft Gyntaf​

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document Signing</title>
<script type="module" src="https://cdn.legalesign.io/signer/latest/ls-signer.esm.js"></script>
</head>
<body>
<ls-signer
recipient-id="abc123"
private-key="key"
session-id="session"
colour="teal"
></ls-signer>

<script>
const signer = document.querySelector('ls-signer');

signer.addEventListener('signingSuccess', (event) => {
console.log('Document signed:', event.detail.documentId);
window.location.href = '/thank-you';
});

signer.addEventListener('signingFail', (event) => {
console.error('Signing failed:', event.detail.failureReason, event.detail.error);
});

signer.addEventListener('fieldChange', (event) => {
if (event.detail.eventType === 'ready') {
console.log('Ready to sign:', event.detail.document.name);
}
});
</script>
</body>
</html>

Cefnogaeth Porwr​

  • Chrome/Edge (cyfredol)
  • Firefox (cyfredol)
  • Safari (cyfredol)
  • Porwr symudol (iOS Safari, Chrome Mobile)

Cofnodi Newidiadau​

FersiwnDyddiadCrynodeb
v1.1.720 Hyd 2026Reswm methiant documentCompleted; gwelliannau cadw maes; cywiriadau lleoli; gwell dal digwyddiadau methiant
v1.1.022 Gor 2026Digwyddiad onChange/fieldChange; prop language; meysydd amodol; neidio awtomatig; QES
v1.0.1220 Gor 2026Digwyddiad onChange/fieldChange gyda ready, save, select; gwerthoedd failureReason; dilysu regex
v1.0.1115 Gor 2026Prop language; meysydd amodol, gostyngiad, blwch gwirio; mewnbwn ffôn; trefnu maes
v1.0.69 Mehefin 2026Ychwanegwyd prop branding
v1.0.315 Mai 2026Prop colour; eiddo CSS custom; trwsio bygiau
v1.0.011 Mai 2026Rhyddhau sefydlog cychwynnol

Adnoddau​

Fideo: Mudo o iframe i gydran yr Arwyddwr​