Sample code for 30+ languages & platforms
Swift

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 Swift Downloads

Swift

func chilkatTest() {
    var success: Bool = false

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    let http = CkoHttp()!

    // 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.
    let bdSignedXml = CkoBinData()!
    success = bdSignedXml.loadFile(path: "someDir/signed.xml")
    if success == false {
        print("Failed to load the XAdES signed XML.")
        return
    }

    let json = CkoJsonObject()!
    json.updateString(jsonPath: "clave", value: "50601011600310112345600100010100000000011999999999")
    json.updateString(jsonPath: "fecha", value: "2016-01-01T00:00:00-0600")
    json.updateString(jsonPath: "emisor.tipoIdentificacion", value: "02")
    json.updateString(jsonPath: "emisor.numeroIdentificacion", value: "003101123456")
    json.updateString(jsonPath: "receptor.tipoIdentificacion", value: "02")
    json.updateString(jsonPath: "receptor.numeroIdentificacion", value: "003101123456")
    // Add the base64 encoded representation of the signed XML.
    json.updateString(jsonPath: "comprobanteXml", value: bdSignedXml.getEncoded(encoding: "base64"))

    // Load our previously obtained OAuth2 access token.
    let jsonToken = CkoJsonObject()!
    success = jsonToken.loadFile(path: "qa_data/tokens/hacienda_cr.json")
    if success != true {
        print("Failed to load constantContact.json")
        return
    }

    // Adds the "Authorization: Bearer {access_token}" header.
    http.authToken = jsonToken.string(of: "access_token")

    http.setRequestHeader(name: "Content-Type", value: "application / json")

    let resp = CkoHttpResponse()!
    success = http.httpJson(verb: "POST", url: "https://api.comprobanteselectronicos.go.cr/recepcion/v1/recepcion", json: json, contentType: "application/json", response: resp)
    if success == false {
        print("\(http.lastErrorText!)")
        return
    }

    // A 201 status code indicates success.
    print("Response status code: \(resp.statusCode.intValue)")

    print("Response body:")
    print("\(resp.bodyStr!)")

}