Xbase++
Xbase++
hacienda.go.cr Recepción de comprobantes electrónicos y respuestas del receptor.
See more hacienda.go.cr Examples
Comprobantes Electrónicos API version v1 -- Recepción de comprobantes electrónicos y respuestas del receptor.Chilkat Xbase++ Downloads
LOCAL nSuccess
LOCAL oHttp
LOCAL oBdSignedXml
LOCAL oJson
LOCAL oJsonToken
LOCAL oResp
nSuccess := 0
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
oHttp := CreateObject("Chilkat.Http")
// Implements the following CURL command:
// curl -X POST -H "Content-Type: application / json" \
// -H 'authorization: Bearer {access_token}' \
// -d '{
// "clave": "50601011600310112345600100010100000000011999999999",
// "fecha": "2016-01-01T00:00:00-0600",
// "emisor": {
// "tipoIdentificacion": "02",
// "numeroIdentificacion": "003101123456"
// },
// "receptor": {
// "tipoIdentificacion": "02",
// "numeroIdentificacion": "003101123456"
// },
// "comprobanteXml": "PD94..."
// }' https://api.comprobanteselectronicos.go.cr/recepcion/v1/recepcion
// Use the following online tool to generate HTTP code from a CURL command
// Convert a cURL Command to HTTP Source Code
// Use this online tool to generate code from sample JSON:
// Generate Code to Create JSON
// The following JSON is sent in the request body.
// {
// "clave": "50601011600310112345600100010100000000011999999999",
// "fecha": "2016-01-01T00:00:00-0600",
// "emisor": {
// "tipoIdentificacion": "02",
// "numeroIdentificacion": "003101123456"
// },
// "receptor": {
// "tipoIdentificacion": "02",
// "numeroIdentificacion": "003101123456"
// },
// "comprobanteXml": "PD94b..."
// }
// Load the previously signed XML.
oBdSignedXml := CreateObject("Chilkat.BinData")
nSuccess := oBdSignedXml:LoadFile("someDir/signed.xml")
IF (nSuccess == 0)
? "Failed to load the XAdES signed XML."
oHttp:destroy()
oBdSignedXml:destroy()
RETURN
ENDIF
oJson := CreateObject("Chilkat.JsonObject")
oJson:UpdateString("clave", "50601011600310112345600100010100000000011999999999")
oJson:UpdateString("fecha", "2016-01-01T00:00:00-0600")
oJson:UpdateString("emisor.tipoIdentificacion", "02")
oJson:UpdateString("emisor.numeroIdentificacion", "003101123456")
oJson:UpdateString("receptor.tipoIdentificacion", "02")
oJson:UpdateString("receptor.numeroIdentificacion", "003101123456")
// Add the base64 encoded representation of the signed XML.
oJson:UpdateString("comprobanteXml", oBdSignedXml:GetEncoded("base64"))
// Load our previously obtained OAuth2 access token.
oJsonToken := CreateObject("Chilkat.JsonObject")
nSuccess := oJsonToken:LoadFile("qa_data/tokens/hacienda_cr.json")
IF (nSuccess != 1)
? "Failed to load constantContact.json"
oHttp:destroy()
oBdSignedXml:destroy()
oJson:destroy()
oJsonToken:destroy()
RETURN
ENDIF
// Adds the "Authorization: Bearer {access_token}" header.
oHttp:AuthToken := oJsonToken:StringOf("access_token")
oHttp:SetRequestHeader("Content-Type", "application / json")
oResp := CreateObject("Chilkat.HttpResponse")
nSuccess := oHttp:HttpJson("POST", "https://api.comprobanteselectronicos.go.cr/recepcion/v1/recepcion", oJson, "application/json", oResp)
IF (nSuccess == 0)
? oHttp:LastErrorText
oHttp:destroy()
oBdSignedXml:destroy()
oJson:destroy()
oJsonToken:destroy()
oResp:destroy()
RETURN
ENDIF
// A 201 status code indicates success.
? "Response status code: " + Str(oResp:StatusCode)
? "Response body:"
? oResp:BodyStr
oHttp:destroy()
oBdSignedXml:destroy()
oJson:destroy()
oJsonToken:destroy()
oResp:destroy()