Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Tcl) SII POST boleta.electronica.tokenObtener un token de at autenticación para el envío y consultas automatizadas de boletas electrónicas. For more information, see https://www4c.sii.cl/bolcoreinternetui/api/
load ./chilkat.dll # This example assumes the Chilkat API to have been previously unlocked. # See Global Unlock Sample for sample code. # Create the XML to be signed... # The following XML is created: # # <?xml version="1.0" encoding="UTF-8"?> # <getToken><item><Semilla>030530912644</Semilla></item></getToken> # set xmlToSign [new_CkXml] CkXml_put_Tag $xmlToSign "getToken" CkXml_UpdateChildContent $xmlToSign "item|Semilla" "030530912644" # Sign the XML. # # We wish to create the following signed XML: # <?xml version="1.0" encoding="UTF-8"?> # <getToken> # <item> # <Semilla>030530912644</Semilla> # </item> # <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> # <SignedInfo> # <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"> # </CanonicalizationMethod> # <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"> # </SignatureMethod> # <Reference URI=""> # <Transforms> # <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"> # </Transform> # </Transforms> # <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"> # </DigestMethod> # <DigestValue>l2s9BqLppHaWo+w1Al1J5SsYScs=</DigestValue> # </Reference> # </SignedInfo> # <SignatureValue>jlbzatIIBLW8AjH++5uVTTrGIMVwGButuoAR88y/hvSc1+6/eW1K864fK3cKi76oArqk7lAM4pP okoXme0JT/hRXXGo6ecuKzO18z2WfPWwgnN0f3ac03TDu7PwfqiDG9mhQpYfIkNp6GNJIiqlg9PG2w1fOJ1QoypsrQmKq6 YU=</SignatureValue> # <KeyInfo> # <KeyValue> # <RSAKeyValue> # <Modulus>2Pb4kEB19m7NmOUYew9f36325yrTLTPMU7qzYG2A0/BsubxDdgQw2Op0x6zXvOVX sYI9KkPXtD5orKJMjwxYRv9wUWdyiE776Rv4ljfJO7EQhIK1fDQDnPt0HefBS06Xzg2QLBvLR+pe1vc6C02Dr99v+lnLA8 mnZiJlRHndhNU=</Modulus> # <Exponent>AQAB</Exponent> # </RSAKeyValue> # </KeyValue> # <X509Data> # <X509Certificate>MIIF1DCCBLygAwIBAgIDAQNtMA0GCSqGSIb3DQEBBQUAMIHGMQswCQYDVQQG # EwJDTDEYMBYGA1UEChMPQWNlcHRhLmNvbSBTLkEuMTgwNgYDVQQLEy9BdXRv # cmlkYWQgY2VydGlmaWNhZG9yYSBDbGFzZSAzIHBlcnNvbmEgbmF0dXJhbDFD # MEEGA1UEAxM6QWNlcHRhLmNvbSBBdXRvcmlkYWQgY2VydGlmaWNhZG9yYSBD # bGFzZSAzIHBlcnNvbmEgbmF0dXJhbDEeMBwGCSqGSIb3DQEJARYPaW5mb0Bh # Y2VwdGEuY29tMB4XDTAxMDkyNTIxMDgxMloXDTAyMDkyNTIxMDgxMlowgZ8x # CzAJBgNVBAYTAkNMMRgwFgYDVQQKEw9BY2VwdGEuY29tIFMuQS4xLDAqBgNV # BAsTI0NlcnRpZmljYWRvIENsYXNlIDMgUGVyc29uYSBOYXR1cmFsMRwwGgYJ # KoZIhvcNAQkBFg1uY2hlbGVAc2lpLmNsMSowKAYDVQQDEyFOSUNPTEFTIFpB # UFJJQU4gQ0hFTEVCSUZTS0kgQkFFWkEwgZ8wDQYJKoZIhvcNAQEBBQADgY0A # MIGJAoGBANj2+JBAdfZuzZjlGHsPX9+t9ucq0y0zzFO6s2BtgNPwbLm8Q3YE # MNjqdMes17zlV7GCPSpD17Q+aKyiTI8MWEb/cFFncohO++kb+JY3yTuxEISC # tXw0A5z7dB3nwUtOl84NkCwby0fqXtb3OgtNg6/fb/pZywPJp2YiZUR53YTV # AgMBAAGjggJyMIICbjAdBggrBgEEAbVrDwQRFg9BY2VwdGEuY29tIFMuQS4w # JQYDVR0RBB4wHKAaBggrBgEEAcEBAaAOFgwxMC40MTEuODcxLTIwDwYIKwYB # Jh0z1DR3Pl3xOiaFIjSXsQO2PSzcA3wZXYF+KDrMul8e5lAF2NNiLmMVtXEx # ZykMaTGGWS0ZETDhJmBwEZGpP4+lt/JhgwF1Sb6wdrXp7MFCJUc1Tj+/5JqH # 1kP0E63/hVElrcP0g8Zn8Z+vr/PMGW1kKgE0IyS4iJ8eIhNSK5phFyKJUn0l # BmIZX7u89d5u7X8= # </X509Certificate> # </X509Data> # </KeyInfo> # </Signature> # </getToken> set gen [new_CkXmlDSigGen] CkXmlDSigGen_put_SigLocation $gen "getToken" CkXmlDSigGen_put_SigLocationMod $gen 0 CkXmlDSigGen_put_SigNamespacePrefix $gen "" CkXmlDSigGen_put_SigNamespaceUri $gen "http://www.w3.org/2000/09/xmldsig#" CkXmlDSigGen_put_SignedInfoCanonAlg $gen "C14N" CkXmlDSigGen_put_SignedInfoDigestMethod $gen "sha1" # -------- Reference 1 -------- CkXmlDSigGen_AddSameDocRef $gen "" "sha1" "" "" "" # Provide a certificate + private key. (PFX password is test123) set cert [new_CkCert] set success [CkCert_LoadPfxFile $cert "qa_data/pfx/cert_test123.pfx" "test123"] if {$success != 1} then { puts [CkCert_lastErrorText $cert] delete_CkXml $xmlToSign delete_CkXmlDSigGen $gen delete_CkCert $cert exit } CkXmlDSigGen_SetX509Cert $gen $cert 1 CkXmlDSigGen_put_KeyInfoType $gen "X509Data+KeyValue" CkXmlDSigGen_put_X509Type $gen "Certificate" # Load XML to be signed... set sbXml [new_CkStringBuilder] CkXml_GetXmlSb $xmlToSign $sbXml CkXmlDSigGen_put_Behaviors $gen "IndentedSignature" # Sign the XML... set success [CkXmlDSigGen_CreateXmlDSigSb $gen $sbXml] if {$success != 1} then { puts [CkXmlDSigGen_lastErrorText $gen] delete_CkXml $xmlToSign delete_CkXmlDSigGen $gen delete_CkCert $cert delete_CkStringBuilder $sbXml exit } puts [CkStringBuilder_getAsString $sbXml] # Send the POST with signed XML in the request body set http [new_CkHttp] CkHttp_SetRequestHeader $http "accept" "application/xml" # Use one of the following domains, depending on the environment: # apicert.sii.cl - Certification Environment # api.sii.cl - Production Environment set url "https://apicert.sii.cl/recursos/v1/boleta.electronica.token" # resp is a CkHttpResponse set resp [CkHttp_PostXml $http $url [CkStringBuilder_getAsString $sbXml] "utf-8"] if {[CkHttp_get_LastMethodSuccess $http] != 1} then { puts [CkHttp_lastErrorText $http] delete_CkXml $xmlToSign delete_CkXmlDSigGen $gen delete_CkCert $cert delete_CkStringBuilder $sbXml delete_CkHttp $http exit } # Examine the response status code: puts "response status code = [CkHttpResponse_get_StatusCode $resp]" # Examine the response body: puts "response body: [CkHttpResponse_bodyStr $resp]" # We expect a response like this: # <?xml version="1.0" encoding="UTF-8"?> # <SII:RESPUESTA xmlns:SII="http://www.sii.cl/XMLSchema"> # <SII:RESP_HDR> # <ESTADO>00</ESTADO> # <GLOSA>Token Creado</GLOSA> # </SII:RESP_HDR> # <SII:RESP_BODY> # <TOKEN>XAuSbYXiNh9Ik</TOKEN> # </SII:RESP_BODY> # </SII:RESPUESTA> # Parse the XML response. set xml [new_CkXml] CkXml_LoadXml $xml [CkHttpResponse_bodyStr $resp] set ESTADO [CkXml_GetChildIntValue $xml "SII:RESP_HDR|ESTADO"] set GLOSA [CkXml_getChildContent $xml "SII:RESP_HDR|GLOSA"] set TOKEN [CkXml_getChildContent $xml "SII:RESP_BODY|TOKEN"] delete_CkHttpResponse $resp delete_CkXml $xmlToSign delete_CkXmlDSigGen $gen delete_CkCert $cert delete_CkStringBuilder $sbXml delete_CkHttp $http delete_CkXml $xml |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.