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
(Perl) 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/
use 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 != 1) { print $cert->lastErrorText() . "\r\n"; exit; } $gen->SetX509Cert($cert,1); $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 != 1) { print $gen->lastErrorText() . "\r\n"; exit; } print $sbXml->getAsString() . "\r\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 HttpResponse $resp = $http->PostXml($url,$sbXml->getAsString(),"utf-8"); if ($http->get_LastMethodSuccess() != 1) { print $http->lastErrorText() . "\r\n"; exit; } # Examine the response status code: print "response status code = " . $resp->get_StatusCode() . "\r\n"; # Examine the response body: print "response body: " . $resp->bodyStr() . "\r\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.