[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"schema-global-basic:ms-MY":3,"developer-center-document-stjk6a2euo5bb9rnu5xidl9y-ms-MY":209},{"@graph":4,"@context":208},[5,102,172],{"@id":6,"url":7,"logo":8,"name":11,"@type":12,"brand":13,"sameAs":15,"slogan":18,"address":19,"audience":23,"areaServed":29,"knowsAbout":49,"makesOffer":69,"description":82,"serviceType":83,"contactPoint":84,"foundingDate":95,"alternateName":96,"hasCredential":97},"https://www.esign.ai/#org","https://www.esign.ai/",{"url":9,"@type":10},"https://www.esign.ai/cn/logo_black.svg","ImageObject","eSign.AI","Organization",{"name":11,"@type":14},"Brand",[16,17],"https://www.linkedin.com/company/esignai","https://www.youtube.com/@eSignAI","AI-powered contract execution and compliance platform for global business",{"@type":20,"addressCountry":21,"addressLocality":22},"PostalAddress","HK","Hong Kong",{"@type":24,"audienceType":25},"Audience",[26,27,28],"Business","Enterprise","SMB",[30,32,34,36,38,40,42,44,47],{"name":22,"@type":31},"Country",{"name":33,"@type":31},"Singapore",{"name":35,"@type":31},"Malaysia",{"name":37,"@type":31},"Indonesia",{"name":39,"@type":31},"Vietnam",{"name":41,"@type":31},"Philippines",{"name":43,"@type":31},"China",{"name":45,"@type":46},"Asia-Pacific","Place",{"name":48,"@type":46},"Global",[50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68],"AI Contract Execution","Electronic Signature","Digital Contract Management","Workflow Automation","eIDAS Regulation (EU)","ESIGN Act (US)","UETA (US)","China Electronic Signature Law","Hong Kong Electronic Transactions Ordinance","Singapore Electronic Transactions Act","Malaysia Digital Signature Act","Indonesia ITE Law","Vietnam Law on E-Transactions","Philippines Electronic Commerce Act","GDPR","Cross-border Data Compliance","Data Security and Encryption","Enterprise eSignature Solutions","APAC eSignature Laws",{"url":70,"name":71,"@type":72,"itemListElement":73},"https://www.esign.ai/pricing","Pricing Plans","OfferCatalog",[74,79],{"name":75,"@type":76,"price":77,"priceCurrency":78},"Essential Plan","Offer","199","USD",{"name":80,"@type":76,"price":81,"priceCurrency":78},"Professional Plan","Contact Sales","eSign.AI is an AI-powered contract execution platform that automates document workflows, ensures global compliance, and delivers legally binding e-signatures across 180+ countries.",[50,51,52,53],[85],{"@type":86,"email":87,"telephone":88,"areaServed":48,"contactType":89,"availableLanguage":90},"ContactPoint","sales@esign.ai","+852-46749867","customer support",[91,92,93,94],"en","zh-CN","zh-HK","zh-TW","2016","eSignGlobal",{"url":98,"name":99,"@type":100,"description":101},"https://www.esign.ai/eSignature-Legality","AI Contract Legality & Compliance Guide","CreativeWork","eSign.AI uses AI to ensure contract execution complies with ESIGN Act, UETA, eIDAS, China Electronic Signature Law, and APAC cross-border regulations.",{"@id":103,"url":104,"name":105,"@type":106,"hasPart":107,"publisher":156,"inLanguage":157,"description":166,"alternateName":167,"potentialAction":168,"mainEntityOfPage":7},"https://www.esign.ai/#website","https://www.esign.ai","eSign.AI Official Website","WebSite",[108,114,120,125,128,132,136,141,146,151],{"@id":109,"url":110,"name":111,"@type":112,"description":113},"https://www.esign.ai/customer-story#list","https://www.esign.ai/customer-story","Customer Stories","WebPage","See how enterprises use AI contract execution to accelerate digital signing and improve compliance across finance, manufacturing and technology.",{"@id":115,"url":116,"name":117,"@type":112,"isPartOf":118,"description":119},"https://www.esign.ai/integrations#overview","https://www.esign.ai/integrations","Integrations",{"@id":103},"Connect eSign.AI with Salesforce, Google Drive, Microsoft 365 and more to automate contract workflows with AI.",{"@id":121,"url":122,"name":123,"@type":112,"description":124},"https://www.esign.ai/features#overview","https://www.esign.ai/features","Features","Discover AI-powered contract execution, identity verification, workflow automation, templates and API.",{"@id":126,"url":70,"name":71,"@type":112,"description":127},"https://www.esign.ai/pricing#catalog","Compare eSign.AI pricing plans for teams and enterprises, and find the right AI contract execution package.",{"@id":129,"url":98,"name":130,"@type":112,"description":131},"https://www.esign.ai/eSignature-Legality#guide","Legality & Compliance","Review AI-driven compliance guides for e-signatures across regions (eIDAS, ESIGN, UETA, China, APAC).",{"@id":133,"url":134,"name":81,"@type":112,"description":135},"https://www.esign.ai/contact-sales#contact","https://www.esign.ai/contact-sales","Contact the eSign.AI team to discuss enterprise AI contract execution requirements.",{"@id":137,"url":138,"name":139,"@type":112,"description":140},"https://www.esign.ai/developers#overview","https://www.esign.ai/developers","Developers & API","Access developer documentation, SDKs and API references to integrate AI contract execution into your apps.",{"@id":142,"url":143,"name":144,"@type":112,"description":145},"https://www.esign.ai/resources#hub","https://www.esign.ai/resources","Resources Center","Browse product guides, case studies, whitepapers and best practices for AI contract execution.",{"@id":147,"url":148,"name":149,"@type":112,"description":150},"https://www.esign.ai/news#center","https://www.esign.ai/news","News & Press","Read the latest announcements, product updates and media coverage from eSign.AI.",{"@id":152,"url":153,"name":154,"@type":112,"description":155},"https://www.esign.ai/blog#hub","https://www.esign.ai/blog","Blog","Insights and articles on AI contract execution, compliance, and workflow automation.",{"@id":6},[91,92,158,159,160,161,162,163,164,165],"zh-Hant","id-ID","vi-VN","ja-JP","ko-KR","es-MX","fr-FR","ru-RU","Official site of eSign.AI — AI-powered contract execution platform providing secure, compliant, and legally recognized e-signatures for global enterprises.","eSign.AI AI Contract Execution Platform",{"@type":169,"target":170,"query-input":171},"SearchAction","https://www.esign.ai/search?q={query}","required name=query",{"@id":173,"name":174,"@type":175,"itemListElement":176},"https://www.esign.ai/#pages","Primary Site Sections","ItemList",[177,181,184,187,190,193,196,199,202,205],{"item":178,"@type":179,"position":180},{"@id":109},"ListItem",1,{"item":182,"@type":179,"position":183},{"@id":115},2,{"item":185,"@type":179,"position":186},{"@id":121},3,{"item":188,"@type":179,"position":189},{"@id":126},4,{"item":191,"@type":179,"position":192},{"@id":129},5,{"item":194,"@type":179,"position":195},{"@id":133},6,{"item":197,"@type":179,"position":198},{"@id":137},7,{"item":200,"@type":179,"position":201},{"@id":142},8,{"item":203,"@type":179,"position":204},{"@id":147},9,{"item":206,"@type":179,"position":207},{"@id":152},10,"https://schema.org",{"apiTree":210,"documentTree":513,"securityTree":593,"detail":594},[211],{"id":212,"documentId":213,"title":214,"sort":180,"parent_id":215,"only_as_menu":216,"type":217,"nodeId":213,"routeId":213,"children":218},1945,"o4686obgtwjoscs5s6xooyi1","Dokumen API","0",true,"api",[219,230,293,334,359,376,406,432,448,508],{"id":220,"documentId":221,"title":222,"sort":180,"parent_id":213,"only_as_menu":216,"type":217,"nodeId":221,"routeId":221,"children":223},3379,"b1jzh5soo88eektjgjg0z9cj","oAuth2",[224],{"id":225,"documentId":226,"title":227,"sort":180,"parent_id":221,"only_as_menu":228,"type":217,"nodeId":226,"routeId":226,"children":229},1997,"mmcjntoocjtwl1frc6khk3k4","Pengesahan oAuth",false,[],{"id":231,"documentId":232,"title":233,"sort":207,"parent_id":213,"only_as_menu":216,"type":217,"nodeId":232,"routeId":232,"children":234},3507,"emn5khbfwir61or7uzo7mrde","Pengurusan Sampul Surat",[235,240,245,251,257,263,269,275,281,287],{"id":236,"documentId":237,"title":238,"sort":180,"parent_id":232,"only_as_menu":228,"type":217,"nodeId":237,"routeId":237,"children":239},3294,"q9infiuohmf1fui6dj083hxj","Hantar Envelop Pantas",[],{"id":241,"documentId":242,"title":243,"sort":207,"parent_id":232,"only_as_menu":228,"type":217,"nodeId":242,"routeId":242,"children":244},2765,"xlp3m1z044jtkeopyh7ccm5e","Cipta Sampul Surat",[],{"id":246,"documentId":247,"title":248,"sort":249,"parent_id":232,"only_as_menu":228,"type":217,"nodeId":247,"routeId":247,"children":250},1893,"ewmccs9nc11erxmwmg7ye609","Buka Sampul",20,[],{"id":252,"documentId":253,"title":254,"sort":255,"parent_id":232,"only_as_menu":228,"type":217,"nodeId":253,"routeId":253,"children":256},1847,"k1tcxkpirnvc17wubklucx6d","Tamatkan Sampul Surat",40,[],{"id":258,"documentId":259,"title":260,"sort":261,"parent_id":232,"only_as_menu":228,"type":217,"nodeId":259,"routeId":259,"children":262},1743,"xup11xm3pvlk7lkvejly03t4","Dapatkan Alamat Tandatangan",50,[],{"id":264,"documentId":265,"title":266,"sort":267,"parent_id":232,"only_as_menu":228,"type":217,"nodeId":265,"routeId":265,"children":268},3164,"pgwry228y585ip83zux1m7ky","Semak Butiran Sampul Surat",60,[],{"id":270,"documentId":271,"title":272,"sort":273,"parent_id":232,"only_as_menu":228,"type":217,"nodeId":271,"routeId":271,"children":274},2517,"n383yqr1z4cw0g2tncva1i9l","Batalkan Sampul",70,[],{"id":276,"documentId":277,"title":278,"sort":279,"parent_id":232,"only_as_menu":228,"type":217,"nodeId":277,"routeId":277,"children":280},1510,"kfn3jzvf0coqrmgsyal5s3h7","Sampul Surat Peringatan",80,[],{"id":282,"documentId":283,"title":284,"sort":285,"parent_id":232,"only_as_menu":228,"type":217,"nodeId":283,"routeId":283,"children":286},1867,"fsagl9dy4ybdzgef0sfek43a","Dapatkan alamat halaman tandatangan pratonton",90,[],{"id":288,"documentId":289,"title":290,"sort":291,"parent_id":232,"only_as_menu":228,"type":217,"nodeId":289,"routeId":289,"children":292},2464,"yohj3fn3f4ydc19bda85u0au","Cipta paparan penghantaran sampul surat",100,[],{"id":294,"documentId":295,"title":296,"sort":249,"parent_id":213,"only_as_menu":216,"type":217,"nodeId":295,"routeId":295,"children":297},1795,"ouy9r6x8lqhj09nuza6s28kq","Pengurusan Fail",[298,303,308,313,319,324,329],{"id":299,"documentId":300,"title":301,"sort":180,"parent_id":295,"only_as_menu":228,"type":217,"nodeId":300,"routeId":300,"children":302},1971,"uklome95b6imdx8l1s4kvpne","Muat naik fail",[],{"id":304,"documentId":305,"title":306,"sort":207,"parent_id":295,"only_as_menu":228,"type":217,"nodeId":305,"routeId":305,"children":307},1821,"r3sk47rnpk5laxqcvasszzj7","Dapatkan koordinat berdasarkan kata kunci",[],{"id":309,"documentId":310,"title":311,"sort":249,"parent_id":295,"only_as_menu":228,"type":217,"nodeId":310,"routeId":310,"children":312},3459,"dygf6h69qejdsxxzzi1zzetb","Muat turun fail",[],{"id":314,"documentId":315,"title":316,"sort":317,"parent_id":295,"only_as_menu":228,"type":217,"nodeId":315,"routeId":315,"children":318},3363,"b0uxzdvf2umyejj9td3go60x","Tambah Dokumen untuk Ditandatangani",30,[],{"id":320,"documentId":321,"title":322,"sort":255,"parent_id":295,"only_as_menu":228,"type":217,"nodeId":321,"routeId":321,"children":323},3395,"c2s5iyao8xl60jnu9fyld71b","Padamkan dokumen yang ditandatangani",[],{"id":325,"documentId":326,"title":327,"sort":261,"parent_id":295,"only_as_menu":228,"type":217,"nodeId":326,"routeId":326,"children":328},1665,"mq2v1gptzmgbxdnpt2naew0z","Tambah Lampiran",[],{"id":330,"documentId":331,"title":332,"sort":267,"parent_id":295,"only_as_menu":228,"type":217,"nodeId":331,"routeId":331,"children":333},1717,"pd7zcrwaudxp9n5nhmax66th","Buang Lampiran",[],{"id":335,"documentId":336,"title":337,"sort":317,"parent_id":213,"only_as_menu":216,"type":217,"nodeId":336,"routeId":336,"children":338},1471,"v8y4g3ok61tys8mwr0fjmq5g","Pengurusan Pihak Terlibat",[339,344,349,354],{"id":340,"documentId":341,"title":342,"sort":180,"parent_id":336,"only_as_menu":228,"type":217,"nodeId":341,"routeId":341,"children":343},3313,"maun35qmz3kx9haku23zhmme","Tambah Penandatangan",[],{"id":345,"documentId":346,"title":347,"sort":207,"parent_id":336,"only_as_menu":228,"type":217,"nodeId":346,"routeId":346,"children":348},1536,"xp595dh8tlzle8lt9bo3lyyt","Padam Penandatangan",[],{"id":350,"documentId":351,"title":352,"sort":249,"parent_id":336,"only_as_menu":228,"type":217,"nodeId":351,"routeId":351,"children":353},2867,"h434ytbkhv0177b778achv7u","Tambah Penerima Salinan",[],{"id":355,"documentId":356,"title":357,"sort":317,"parent_id":336,"only_as_menu":228,"type":217,"nodeId":356,"routeId":356,"children":358},1523,"jw2f0dtk7ddfpbrwn2oo9rmc","Buang penerima salinan",[],{"id":360,"documentId":361,"title":362,"sort":363,"parent_id":213,"only_as_menu":216,"type":217,"nodeId":361,"routeId":361,"children":364},3071,"qx2bl5kl3s0bwzvdkmzp71zh","Templat sampul surat",35,[365,371],{"id":366,"documentId":367,"title":368,"sort":369,"parent_id":361,"only_as_menu":228,"type":217,"nodeId":367,"routeId":367,"children":370},3105,"m53jxnuxwkayx1b7mnk3adca","Semak butiran templat sampul surat",0,[],{"id":372,"documentId":373,"title":374,"sort":207,"parent_id":361,"only_as_menu":228,"type":217,"nodeId":373,"routeId":373,"children":375},3142,"smkcnczbyllcva0e51xbud5p","Menggunakan templat envelope untuk memulakan tandatangan",[],{"id":377,"documentId":378,"title":379,"sort":255,"parent_id":213,"only_as_menu":216,"type":217,"nodeId":378,"routeId":378,"children":380},3331,"ais40oqq7r11n67gc0vrbd3v","Perkhidmatan Templat",[381,386,391,396,401],{"id":382,"documentId":383,"title":384,"sort":180,"parent_id":378,"only_as_menu":228,"type":217,"nodeId":383,"routeId":383,"children":385},3210,"s7f24t0vc3oh7xjc1vd54min","Dapatkan butiran kawalan templat penandatangan",[],{"id":387,"documentId":388,"title":389,"sort":183,"parent_id":378,"only_as_menu":228,"type":217,"nodeId":388,"routeId":388,"children":390},2647,"pqznounxwcdqpjjlo427cp2v","Dapatkan Butiran Templat",[],{"id":392,"documentId":393,"title":394,"sort":207,"parent_id":378,"only_as_menu":228,"type":217,"nodeId":393,"routeId":393,"children":395},2022,"nlabl9lmcchamxb4xb2sotgf","Isi templat untuk menjana fail",[],{"id":397,"documentId":398,"title":399,"sort":249,"parent_id":378,"only_as_menu":228,"type":217,"nodeId":398,"routeId":398,"children":400},1769,"h6u1p3mm2q9jh22drwhx7w3x","Senarai templat pertanyaan",[],{"id":402,"documentId":403,"title":404,"sort":317,"parent_id":378,"only_as_menu":228,"type":217,"nodeId":403,"routeId":403,"children":405},1639,"upq57humugxijzhzsfl01e2r","Semak butiran tugas sintesis fail",[],{"id":407,"documentId":408,"title":409,"sort":410,"parent_id":213,"only_as_menu":216,"type":217,"nodeId":408,"routeId":408,"children":411},2204,"r6a999am8z6ay9r6q78m9szt","Pengurusan Cop",45,[412,417,422,427],{"id":413,"documentId":414,"title":415,"sort":180,"parent_id":408,"only_as_menu":228,"type":217,"nodeId":414,"routeId":414,"children":416},3347,"ap2udsj6jmd3f7nq1t2wtb6n","Cipta Cop",[],{"id":418,"documentId":419,"title":420,"sort":183,"parent_id":408,"only_as_menu":228,"type":217,"nodeId":419,"routeId":419,"children":421},3475,"e27cq9n53oiassrm9dusczah","Edit Cop",[],{"id":423,"documentId":424,"title":425,"sort":186,"parent_id":408,"only_as_menu":228,"type":217,"nodeId":424,"routeId":424,"children":426},2306,"nhodhim2gs6b0fnmhai68jl2","Padamkan setem",[],{"id":428,"documentId":429,"title":430,"sort":189,"parent_id":408,"only_as_menu":228,"type":217,"nodeId":429,"routeId":429,"children":431},2282,"za70ia3hau1jmhh1odey7648","Semak Senarai Setem",[],{"id":433,"documentId":434,"title":435,"sort":436,"parent_id":213,"only_as_menu":216,"type":217,"nodeId":434,"routeId":434,"children":437},2569,"vjgy9wyqpueas3ifwl4sqtxo","Perbandingan Kontrak",49,[438,443],{"id":439,"documentId":440,"title":441,"sort":180,"parent_id":434,"only_as_menu":228,"type":217,"nodeId":440,"routeId":440,"children":442},2595,"ncci0s4sdebcqnpez9hta140","Dapatkan halaman hasil perbandingan kontrak",[],{"id":444,"documentId":445,"title":446,"sort":192,"parent_id":434,"only_as_menu":228,"type":217,"nodeId":445,"routeId":445,"children":447},3427,"czpws8dh6ef4ynxxwmgu796b","Semak Butiran Perbandingan Kontrak",[],{"id":449,"documentId":450,"title":451,"sort":261,"parent_id":213,"only_as_menu":228,"type":217,"nodeId":450,"routeId":450,"children":452},3491,"e3esec8grw834hdls3c5uket","Peristiwa Panggilan Balik",[453,458,463,468,473,478,483,488,493,498,503],{"id":454,"documentId":455,"title":456,"sort":180,"parent_id":450,"only_as_menu":228,"type":217,"nodeId":455,"routeId":455,"children":457},2438,"oqef89swtse7xva7ihxd4eah","Pemberitahuan Sampul Dibuka",[],{"id":459,"documentId":460,"title":461,"sort":207,"parent_id":450,"only_as_menu":228,"type":217,"nodeId":460,"routeId":460,"children":462},2100,"m2b3cny59zr2019zx101vlq6","Notis Penandatangan Selesai Ditandatangani",[],{"id":464,"documentId":465,"title":466,"sort":249,"parent_id":450,"only_as_menu":228,"type":217,"nodeId":465,"routeId":465,"children":467},2074,"ktoxlvvrj5777zxi5oqoebun","Pemberitahuan Semua Penandatangan Selesai Menandatangani",[],{"id":469,"documentId":470,"title":471,"sort":317,"parent_id":450,"only_as_menu":228,"type":217,"nodeId":470,"routeId":470,"children":472},3411,"c4g7knax4y890stvlk89zrgl","Pemberitahuan Selesai Menandatangani Sampul Surat",[],{"id":474,"documentId":475,"title":476,"sort":363,"parent_id":450,"only_as_menu":228,"type":217,"nodeId":475,"routeId":475,"children":477},2490,"z5a7ce3eu1vayhclx05l4boz","Pelihat Penandatangan Sampul Surat",[],{"id":479,"documentId":480,"title":481,"sort":255,"parent_id":450,"only_as_menu":228,"type":217,"nodeId":480,"routeId":480,"children":482},2126,"f6udt0g3kk1ty67u8o9dn0s3","Notis Pembatalan Sampul Surat",[],{"id":484,"documentId":485,"title":486,"sort":261,"parent_id":450,"only_as_menu":228,"type":217,"nodeId":485,"routeId":485,"children":487},2152,"xn1qw8wfeosuql9e4qd983gx","Notis Tamat Tempoh Sampul Surat",[],{"id":489,"documentId":490,"title":491,"sort":267,"parent_id":450,"only_as_menu":228,"type":217,"nodeId":490,"routeId":490,"children":492},2178,"hzf0ipligf96y2hsh4yrz8q7","Tandatangani Notis Gangguan Tugas",[],{"id":494,"documentId":495,"title":496,"sort":273,"parent_id":450,"only_as_menu":228,"type":217,"nodeId":495,"routeId":495,"children":497},3443,"dkyp87hoikayfcnpi7misr3z","Notifikasi Hasil Sintesis Fail",[],{"id":499,"documentId":500,"title":501,"sort":279,"parent_id":450,"only_as_menu":228,"type":217,"nodeId":500,"routeId":500,"children":502},2621,"zcv1ch0olb5ecpzo2u7jfw0e","Pemberitahuan Panggilan Balik Hasil Perbandingan Kontrak",[],{"id":504,"documentId":505,"title":506,"sort":279,"parent_id":450,"only_as_menu":228,"type":217,"nodeId":505,"routeId":505,"children":507},2699,"il87aup17m7ydala24kjkhev","Penghantaran sampul surat gagal",[],{"id":509,"documentId":510,"title":511,"sort":267,"parent_id":213,"only_as_menu":228,"type":217,"nodeId":510,"routeId":510,"children":512},1484,"lqqpn7hfhf3xzgf2d9vz9h7u","Jadual Kod Ralat",[],[514],{"id":515,"documentId":516,"title":517,"sort":180,"parent_id":215,"only_as_menu":216,"type":518,"nodeId":516,"routeId":516,"children":519},561,"kmxyx6s30cspdrb6lpq2vlmw","Panduan Pembangun","document",[520,525,542,547],{"id":521,"documentId":522,"title":523,"sort":180,"parent_id":516,"only_as_menu":228,"type":518,"nodeId":522,"routeId":522,"children":524},613,"nqxvj8fpudh1phhwzjxyrqie","Panduan Integrasi",[],{"id":526,"documentId":527,"title":528,"sort":189,"parent_id":516,"only_as_menu":228,"type":518,"nodeId":527,"routeId":527,"children":529},763,"rwuzqa9wdd8ifr9d2psn2oll","Panduan Integrasi Rakan Ekosistem ISV",[530,536],{"id":531,"documentId":532,"title":533,"sort":534,"parent_id":527,"only_as_menu":228,"type":518,"nodeId":532,"routeId":532,"children":535},743,"stjk6a2euo5bb9rnu5xidl9y","Panduan Integrasi Mod Kod Kebenaran OAuth2.0",41,[],{"id":537,"documentId":538,"title":539,"sort":540,"parent_id":527,"only_as_menu":228,"type":518,"nodeId":538,"routeId":538,"children":541},777,"i640wop6allavqk5recnkqal","Penerangan Skop API Aplikasi Ekosistem ISV",42,[],{"id":543,"documentId":544,"title":545,"sort":192,"parent_id":516,"only_as_menu":228,"type":518,"nodeId":544,"routeId":544,"children":546},600,"pu5by7nny465eng8uuhqfau6","Perhatian",[],{"id":548,"documentId":549,"title":550,"sort":207,"parent_id":516,"only_as_menu":228,"type":518,"nodeId":549,"routeId":549,"children":551},587,"vfj16znziy18o17n4sc5y7ng","Peristiwa Webhook",[552,557,562,567,572,577,582,588],{"id":553,"documentId":554,"title":456,"sort":555,"parent_id":549,"only_as_menu":228,"type":518,"nodeId":554,"routeId":554,"children":556},464,"zf1p4cqkhirgzmjqq9pk0a3i",11,[],{"id":558,"documentId":559,"title":461,"sort":560,"parent_id":549,"only_as_menu":228,"type":518,"nodeId":559,"routeId":559,"children":561},490,"fznrramnzm5xmc8xs34bqck1",12,[],{"id":563,"documentId":564,"title":466,"sort":565,"parent_id":549,"only_as_menu":228,"type":518,"nodeId":564,"routeId":564,"children":566},516,"yiz759dqo68gqbyhvq2zfquk",13,[],{"id":568,"documentId":569,"title":471,"sort":570,"parent_id":549,"only_as_menu":228,"type":518,"nodeId":569,"routeId":569,"children":571},386,"caadherlspjkiayulikfh1og",14,[],{"id":573,"documentId":574,"title":481,"sort":575,"parent_id":549,"only_as_menu":228,"type":518,"nodeId":574,"routeId":574,"children":576},412,"wxwcvoo5k3tx99cf3at6iiwm",15,[],{"id":578,"documentId":579,"title":486,"sort":580,"parent_id":549,"only_as_menu":228,"type":518,"nodeId":579,"routeId":579,"children":581},438,"anv65ys13nincm1kmfp7v512",16,[],{"id":583,"documentId":584,"title":585,"sort":586,"parent_id":549,"only_as_menu":228,"type":518,"nodeId":584,"routeId":584,"children":587},626,"fjy4rotdw8b6r66mkflvur4c","Notis Penolakan Kelulusan Penandatangan",110,[],{"id":589,"documentId":590,"title":506,"sort":591,"parent_id":549,"only_as_menu":228,"type":518,"nodeId":590,"routeId":590,"children":592},542,"gcgzjrnf215vhmixw7obvrtd",120,[],[],{"id":531,"documentId":532,"title":533,"content":595,"sort":534,"is_visible":216,"parent_id":527,"only_as_menu":228,"createdAt":596,"updatedAt":597,"publishedAt":598,"locale":599,"seo":600},"\u003Carticle class=\"4ever-article\" style=\"-webkit-text-stroke-width:0px;caret-color:rgb(0, 0, 0);color:rgb(0, 0, 0);font-style:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-thickness:auto;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;\">\u003Ch2 style=\"font-size:18pt;line-height:20.4px;margin-bottom:9px;margin-left:0px;margin-top:21.333333px;text-align:left;text-indent:0px;\">\u003Cspan style=\"font-size:16pt;\">\u003Cspan data-type=\"text\">\u003Cstrong>Jujukan panggilan\u003C/strong>\u003C/span>\u003C/span>\u003C/h2>\u003Cfigure class=\"image\">\u003Cimg alt=\"image.png\" src=\"https://static.esignglobal.com/image_4047164e07.png\" srcset=\"https://static.esignglobal.com/thumbnail_image_4047164e07.png 245w, https://static.esignglobal.com/small_image_4047164e07.png 500w, https://static.esignglobal.com/medium_image_4047164e07.png 750w\" sizes=\"100vw\" width=\"750\">\u003C/figure>\u003Ch2 style=\"font-size:18pt;line-height:1.4;margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Gambaran keseluruhan\u003C/span>\u003C/h2>\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">OAuth 2.0 ialah protokol kebenaran yang digunakan secara meluas, membolehkan aplikasi pihak ketiga mengakses sumber pengguna melalui kebenaran pengguna tanpa mendedahkan kelayakan pengguna. Dalam mod kod kebenaran OAuth 2.0, klien perlu mengarahkan pengguna untuk mengakses titik akhir kebenaran (Authorization Endpoint) pelayan pengesahan bagi mendapatkan kebenaran pengguna.\u003C/span>\u003C/p>\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Dokumen ini bertujuan untuk menerangkan secara terperinci cara menyusun dan menggunakan URL kebenaran mengikut protokol OAuth 2.0, serta menyediakan contoh praktikal dan nota penting.\u003C/span>\u003C/p>\u003Chr>\u003Ch2 style=\"font-size:18pt;line-height:20.4px;margin-bottom:9px;margin-left:0px;margin-top:21.333333px;text-align:left;text-indent:0px;\">\u003Cspan style=\"font-size:16pt;\">\u003Cspan data-type=\"text\">\u003Cstrong>Satu. Menyusun URL untuk mendapatkan kod kebenaran\u003C/strong>\u003C/span>\u003C/span>\u003C/h2>\u003Ch2 style=\"font-size:18pt;line-height:1.4;margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Struktur asas URL kebenaran\u003C/span>\u003C/h2>\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">URL kebenaran ialah URL yang digunakan oleh klien semasa menghantar permintaan kepada pelayan pengesahan. Ia terdiri daripada beberapa bahagian berikut:\u003C/span>\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\" data-syntax=\"plaintext\" data-theme=\"default\">https://&lt;authorization-server-domain&gt;/oauth?\n    response_type=&lt;response_type&gt;&amp;\n    clientId=&lt;client_id&gt;&amp;\n    redirectUri=&lt;redirect_uri&gt;&amp;\n    scope=&lt;scope&gt;&amp;\n    state=&lt;state&gt;\u003C/code>\u003C/pre>\u003Ch3 style=\"font-size:14.5pt;line-height:1.4;margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Penerangan parameter\u003C/span>\u003C/h3>\u003Cfigure class=\"table\" style=\"width:731px;\">\u003Ctable class=\"ck-table-resized\" style=\"border-collapse:collapse;table-layout:fixed;\">\u003Ccolgroup>\u003Ccol style=\"width:33.33%;\" width=\"216\">\u003Ccol style=\"width:33.33%;\" width=\"114\">\u003Ccol style=\"width:33.34%;\" width=\"401\">\u003C/colgroup>\u003Ctbody>\u003Ctr>\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Nama parameter\u003C/span>\u003C/p>\u003C/td>\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Adakah wajib diisi\u003C/span>\u003C/p>\u003C/td>\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Penerangan\u003C/span>\u003C/p>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">response_type\u003C/span>\u003C/code>\u003C/p>\u003C/td>\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Wajib diisi\u003C/span>\u003C/p>\u003C/td>\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Jenis kebenaran, biasanya ialah \u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">code\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">(menunjukkan penggunaan mod kod kebenaran)\u003C/span>\u003C/p>\u003C/td>\u003C/tr>\u003Ctr style=\"height:41px;\">\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">clientId\u003C/span>\u003C/code>\u003C/p>\u003C/td>\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Wajib diisi\u003C/span>\u003C/p>\u003C/td>\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Pengenal pasti unik klien,\u003C/span>\u003Cspan style=\"color:rgb(0,0,0);font-size:12pt;\">\u003Cspan data-type=\"text\">iaitu&nbsp;APP ID\u003C/span>\u003C/span>\u003C/p>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">redirectUri\u003C/span>\u003C/code>\u003C/p>\u003C/td>\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Wajib\u003C/span>\u003C/p>\u003C/td>\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Alamat tujuan pengalih selepas pengesahan, mesti sama dengan alamat callback semasa pendaftaran klien.\u003C/span>\u003C/p>\u003C/td>\u003C/tr>\u003Ctr style=\"height:65px;\">\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">scope\u003C/span>\u003C/code>\u003C/p>\u003C/td>\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Wajib\u003C/span>\u003C/p>\u003C/td>\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Skop kebenaran yang diminta, kini menyokong\u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">signature\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">、\u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">stamp\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">、\u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">comparisons\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">, selepas pengesahan, boleh meminta openapi sedia ada eSignGlobal. Beberapa scope boleh dipisahkan dengan ruang.\u003C/span>\u003C/p>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">state\u003C/span>\u003C/code>\u003C/p>\u003C/td>\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Pilihan\u003C/span>\u003C/p>\u003C/td>\u003Ctd style=\"border-color:rgb(0, 0, 0);overflow-wrap:break-word;overflow:hidden;padding:4px 8px;vertical-align:top;\" colspan=\"1\" rowspan=\"1\">\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Rantaian rawak untuk mengelakkan serangan CSRF, dijana oleh klien dan disahkan kesahihannya semasa callback.\u003C/span>\u003C/p>\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\u003C/figure>\u003Chr>\u003Ch2 style=\"font-size:18pt;line-height:1.4;margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Langkah menyusun alamat pengesahan\u003C/span>\u003C/h2>\u003Col style=\"list-style-type:decimal;\">\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">\u003Cstrong>Tentukan alamat pelayan pengesahan\u003C/strong>  Persekitaran sandbok ialah: https://account-sml.esignglobal.com/oauth\u003C/span>\u003C/div>\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Persekitaran pengeluaran ialah: https://account.esignglobal.com/oauth\u003C/span>\u003C/p>\u003C/li>\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">\u003Cstrong>Tetapkan nilai parameter\u003C/strong>  Berdasarkan keperluan sebenar, tetapkan nilai setiap parameter. Berikut adalah contoh:\u003C/span>\u003C/div>\u003Cul style=\"list-style-type:circle;\">\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">response_type\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">: \u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">code\u003C/span>\u003C/code>\u003C/div>\u003C/li>\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">clientId\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">: \u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">your-client-id-12345\u003C/span>\u003C/code>\u003C/div>\u003C/li>\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">redirectUri\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">: \u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">https://your-app.com/callback\u003C/span>\u003C/code>\u003C/div>\u003C/li>\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">scope\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">: \u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">signature\u003C/span>\u003C/code>\u003C/div>\u003C/li>\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">state\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">: \u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">random-state-value\u003C/span>\u003C/code>\u003C/div>\u003C/li>\u003C/ul>\u003C/li>\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">\u003Cstrong>Sambungkan parameter pertanyaan\u003C/strong>  Selepas menyambungkan parameter di atas dalam bentuk pasangan kunci-nilai ke alamat pelayan pengesahan, gunakan \u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">&amp;\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">  untuk menyambungkan setiap parameter. Perhatikan bahawa nilai parameter perlu dikodkan URL.\u003C/span>\u003C/div>\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Contoh hasil penyambungan:\u003C/span>\u003C/p>\u003Cpre>\u003Ccode class=\"language-plaintext\" data-syntax=\"plaintext\" data-theme=\"default\">https://account-sml.esignglobal.com/oauth?\n    response_type=code&amp;\n    clientId=your-client-id-12345&amp;\n    redirectUri=https%3A%2F%2Fyour-app.com%2Fcallback&amp;\n    scope=signature&amp;\n    state=random-state-value\u003C/code>\u003C/pre>\u003C/li>\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">\u003Cstrong>Sahkan hasil penyambungan\u003C/strong>  Pastikan alamat yang telah disambungkan memenuhi syarat berikut:\u003C/span>\u003C/div>\u003Cul style=\"list-style-type:circle;\">\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Susunan parameter adalah fleksibel\u003C/span>\u003C/div>\u003C/li>\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Nilai parameter telah dikodkan URL dengan betul\u003C/span>\u003C/div>\u003C/li>\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Semua parameter wajib telah disertakan\u003C/span>\u003C/div>\u003C/li>\u003C/ul>\u003C/li>\u003C/ol>\u003Cfigure class=\"image\">\u003Cimg alt=\"2.png\" src=\"https://static.esignglobal.com/2_4d2f50b136.png\" srcset=\"https://static.esignglobal.com/thumbnail_2_4d2f50b136.png 245w, https://static.esignglobal.com/small_2_4d2f50b136.png 500w, https://static.esignglobal.com/medium_2_4d2f50b136.png 750w, https://static.esignglobal.com/large_2_4d2f50b136.png 1000w\" sizes=\"100vw\" width=\"1000\">\u003C/figure>\u003Chr>\u003Ch2 style=\"font-size:18pt;line-height:1.4;margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Kod contoh\u003C/span>\u003C/h2>\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Berikut adalah kod contoh untuk menyambungkan alamat pengesahan dalam beberapa bahasa pengaturcaraan biasa:\u003C/span>\u003C/p>\u003Ch3 style=\"font-size:14.5pt;line-height:1.4;margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Contoh Python\u003C/span>\u003C/h3>\u003Cpre>\u003Ccode class=\"language-plaintext\" data-syntax=\"python\" data-theme=\"default\">import urllib.parse\n\n# 定义参数\nbase_url = \"https://account-sml.esignglobal.com/oauth\"\nparams = {\n    \"response_type\": \"code\",\n    \"clientId\": \"your-client-id-12345\",\n    \"redirectUri\": \"https://your-app.com/callback\",\n    \"scope\": \"signature\",\n    \"state\": \"random-state-value\"\n}\n\n# 拼接地址\nquery_string = urllib.parse.urlencode(params)\nauthorization_url = f\"{base_url}?{query_string}\"\nprint(authorization_url)\u003C/code>\u003C/pre>\u003Ch3 style=\"font-size:14.5pt;line-height:1.4;margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Contoh JavaScript\u003C/span>\u003C/h3>\u003Cpre>\u003Ccode class=\"language-plaintext\" data-syntax=\"javascript\" data-theme=\"default\">// 定义参数\nconst baseUrl = \"https://account-sml.esignglobal.com/oauth\";\nconst params = new URLSearchParams({\n    response_type: \"code\",\n    clientId: \"your-client-id-12345\",\n    redirectUri: \"https://your-app.com/callback\",\n    scope: \"signature\",\n    state: \"random-state-value\"\n});\n\n// 拼接地址\nconst authorizationUrl = `${baseUrl}?${params.toString()}`;\nconsole.log(authorizationUrl);\u003C/code>\u003C/pre>\u003Ch3 style=\"font-size:14.5pt;line-height:1.4;margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Contoh Java\u003C/span>\u003C/h3>\u003Cpre>\u003Ccode class=\"language-plaintext\" data-syntax=\"java\" data-theme=\"default\">import java.net.URLEncoder;\nimport java.nio.charset.StandardCharsets;\n\npublic class OAuthUrlBuilder {\n\n    public static void main(String[ ] args) throws Exception {\n\n        // 定义参数\n        String baseUrl = \"https://account-sml.esignglobal.com/oauth\";\n        String responseType = \"code\";\n        String clientId = \"your-client-id-12345\";\n        String redirectUri = \"https://your-app.com/callback\";\n        String scope = \"signature\";\n        String state = \"random-state-value\";\n\n        // 拼接查询参数\n        String queryString = String.format(\n            \"response_type=%s&amp;clientId=%s&amp;redirectUri=%s&amp;scope=%s&amp;state=%s\",\n            URLEncoder.encode(responseType, StandardCharsets.UTF_8),\n            URLEncoder.encode(clientId, StandardCharsets.UTF_8),\n            URLEncoder.encode(redirectUri, StandardCharsets.UTF_8),\n            URLEncoder.encode(scope, StandardCharsets.UTF_8),\n            URLEncoder.encode(state, StandardCharsets.UTF_8)\n        );\n\n        // 生成完整的授权地址\n        String authorizationUrl = baseUrl + \"?\" + queryString;\n        System.out.println(authorizationUrl);\n    }\n}\u003C/code>\u003C/pre>\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">&nbsp;\u003C/p>\u003Chr>\u003Ch2 style=\"font-size:18pt;line-height:1.4;margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Perhatian\u003C/span>\u003C/h2>\u003Cp style=\"margin-bottom:0px;margin-left:0px;margin-top:0px;text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">Semasa membina dan menggunakan URL pengesahan, sila ambil perhatian kepada perkara berikut:\u003C/span>\u003C/p>\u003Col style=\"list-style-type:decimal;\">\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">\u003Cstrong>Ketepatan pengekodan URL\u003C/strong> Semua nilai parameter mesti melalui pengekodan URL (\u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">percent-encoding\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">) untuk memastikan aksara khas (seperti \u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">:\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">、\u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">/\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">、\u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">?\u003C/span>\u003C/code>\u003Cspan data-type=\"text\"> dll.) tidak akan merosakkan struktur URL. Sebagai contoh, \u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">https://your-app.com/callback\u003C/span>\u003C/code>\u003Cspan data-type=\"text\"> perlu dienkod sebagai \u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">https%3A%2F%2Fyour-app.com%2Fcallback\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">。\u003C/span>\u003C/div>\u003C/li>\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">\u003Cstrong>Keselarasan alamat pelayar balik\u003C/strong>\u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">redirect_uri\u003C/span>\u003C/code>\u003Cspan data-type=\"text\"> Nilai parameter mesti sama sepenuhnya dengan alamat pelayar balik yang didaftarkan oleh klien pada pelayan pengesahan, termasuk protokol (\u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">http\u003C/span>\u003C/code>\u003Cspan data-type=\"text\"> atau \u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">https\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">) nama hos, port dan laluan. Jika tidak, pelayan pengesahan akan menolak permintaan tersebut.\u003C/span>\u003C/div>\u003C/li>\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">\u003Cstrong>state\u003C/strong>\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">\u003Cstrong> Keselamatan parameter \u003C/strong>\u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">state\u003C/span>\u003C/code>\u003Cspan data-type=\"text\"> Parameter digunakan untuk mencegah serangan pemalsuan permintaan merentas laman web (CSRF). Klien harus menjana rentetan rawak dan tidak dapat diramal, dan mengesahkan dalam panggilan balik selepas pengguna menyelesaikan pengesahan bahawa \u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">state\u003C/span>\u003C/code>\u003Cspan data-type=\"text\"> nilai sama dengan nilai yang dihantar pada mulanya.\u003C/span>\u003C/div>\u003C/li>\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">\u003Cstrong>Kesesuaian julat keizinan\u003C/strong>\u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">scope\u003C/span>\u003C/code>\u003Cspan data-type=\"text\"> Parameter menentukan julat keizinan yang diminta oleh klien. Julat keizinan minimum harus dipilih berdasarkan keperluan sebenar untuk mengelakkan permintaan berlebihan terhadap sumber pengguna, sekaligus meningkatkan kepercayaan pengguna.\u003C/span>\u003C/div>\u003C/li>\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">\u003Cstrong>Pembezaan Persekitaran\u003C/strong>  Pada peringkat pembangunan dan pengujian, biasanya menggunakan persekitaran sandbok (seperti \u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">account-sml.esignglobal.com\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">）， selepas pelancaran rasmi, perlu beralih ke persekitaran pengeluaran (seperti \u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">account.esignglobal.com\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">）， pastikan alamat pelayan kebenaran yang tepat digunakan dalam persekitaran yang berbeza.\u003C/span>\u003C/div>\u003C/li>\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">\u003Cstrong>Pemprosesan Maklumat Selepas Kebenaran Berjaya\u003C/strong>  Setelah proses kebenaran selesai, perkhidmatan kebenaran eSignGlobal akan melalui\u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">redirect_uri\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">digabungkan dan dipulangkan\u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">code\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">dan\u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">baseUrl\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">， melalui\u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">baseUrl\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">boleh mengenal pasti pusat data tempat data pihak yang memberi kebenaran berada, semasa melaksanakan permintaan openapi, permintaan mesti dibuat berdasarkan pusat data yang berkaitan.\u003C/span>\u003C/div>\u003C/li>\u003Cli>\u003Cdiv style=\"text-align:left;text-indent:0px;\">\u003Cspan data-type=\"text\">\u003Cstrong>Pengendalian Ralat\u003C/strong>  Jika pengguna menolak kebenaran atau berlaku ralat lain, pelayan kebenaran akan melalui \u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">redirect_uri\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">  memulangkan maklumat ralat (seperti \u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">error\u003C/span>\u003C/code>\u003Cspan data-type=\"text\">  dan \u003C/span>\u003Ccode data-type=\"inlineCode\">\u003Cspan data-type=\"text\">error_description\u003C/span>\u003C/code>\u003Cspan data-type=\"text\"> parameter), klien perlu mengendalikan ralat ini dengan sewajarnya dan memberikan maklum balas yang jelas kepada pengguna.\u003C/span>\u003C/div>\u003C/li>\u003C/ol>\u003C/article>","2026-04-30T10:57:24.383Z","2026-05-22T02:50:34.921Z","2026-05-06T06:21:17.402Z","ms-MY",null]