Sample code for 30+ languages & platforms
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

Xbase++
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()