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
(Ruby) 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/
require 'chilkat' # 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> # xmlToSign = Chilkat::CkXml.new() xmlToSign.put_Tag("getToken") xmlToSign.UpdateChildContent("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> gen = Chilkat::CkXmlDSigGen.new() gen.put_SigLocation("getToken") gen.put_SigLocationMod(0) gen.put_SigNamespacePrefix("") gen.put_SigNamespaceUri("http://www.w3.org/2000/09/xmldsig#") gen.put_SignedInfoCanonAlg("C14N") gen.put_SignedInfoDigestMethod("sha1") # -------- Reference 1 -------- gen.AddSameDocRef("","sha1","","","") # Provide a certificate + private key. (PFX password is test123) cert = Chilkat::CkCert.new() success = cert.LoadPfxFile("qa_data/pfx/cert_test123.pfx","test123") if (success != true) print cert.lastErrorText() + "\n"; exit end gen.SetX509Cert(cert,true) gen.put_KeyInfoType("X509Data+KeyValue") gen.put_X509Type("Certificate") # Load XML to be signed... sbXml = Chilkat::CkStringBuilder.new() xmlToSign.GetXmlSb(sbXml) gen.put_Behaviors("IndentedSignature") # Sign the XML... success = gen.CreateXmlDSigSb(sbXml) if (success != true) print gen.lastErrorText() + "\n"; exit end print sbXml.getAsString() + "\n"; # Send the POST with signed XML in the request body http = Chilkat::CkHttp.new() http.SetRequestHeader("accept","application/xml") # Use one of the following domains, depending on the environment: # apicert.sii.cl - Certification Environment # api.sii.cl - Production Environment url = "https://apicert.sii.cl/recursos/v1/boleta.electronica.token" # resp is a CkHttpResponse resp = http.PostXml(url,sbXml.getAsString(),"utf-8") if (http.get_LastMethodSuccess() != true) print http.lastErrorText() + "\n"; exit end # Examine the response status code: print "response status code = " + resp.get_StatusCode().to_s() + "\n"; # Examine the response body: print "response body: " + resp.bodyStr() + "\n"; # 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. xml = Chilkat::CkXml.new() xml.LoadXml(resp.bodyStr()) ESTADO = xml.GetChildIntValue("SII:RESP_HDR|ESTADO") GLOSA = xml.getChildContent("SII:RESP_HDR|GLOSA") TOKEN = xml.getChildContent("SII:RESP_BODY|TOKEN") |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.