Sample code for 30+ languages & platforms
Zig Requires Chilkat v11.0.0+

CardConnect Signature Capture

See more CardConnect Examples

Demonstrates how to upload a BMP image of a handwritten signature.
This signature capture service augments an existing authorization record with the provided signature data. ...

See https://developer.cardconnect.com/cardconnect-api?lang=json#signature-capture

Chilkat Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

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

    const http = try chilkat.Http.init();
    defer http.deinit();

    http.setBasicAuth(true);
    http.setLogin("API_USERNAME");
    http.setPassword("API_PASSWORD");

    // Build and send the following JSON:

    // {
    //   "merchid": "MERCHANT_ID",
    //   "retref": "112989260941",
    //   "signature": "BASE64_GZIPPED_BMP_DATA"
    // }

    const json = try chilkat.JsonObject.init();
    defer json.deinit();
    json.updateString("merchid", "MERCHANT_ID") catch {};
    json.updateString("retref", "106631225001") catch {};

    // Load the .bmp containing a 200px x 100px signature.
    const bd = try chilkat.BinData.init();
    defer bd.deinit();
    try bd.loadFile("qa_data/bmp/signature.bmp");
    // Gzip compress.
    const gzip = try chilkat.Gzip.init();
    defer gzip.deinit();
    try gzip.compressBd(bd);
    // Add to the JSON in base64 format
    json.updateString("signature", try bd.getEncoded(alloc, "base64")) catch {};

    const url = "https://<site>.cardconnect.com:<port>/cardconnect/rest/sigcap";

    const resp = try chilkat.HttpResponse.init();
    defer resp.deinit();
    http.httpStr("PUT", url, try json.emit(alloc), "utf-8", "application/json", resp) catch {
        std.debug.print("{s}\n", .{try http.getLastErrorText(alloc)});
        return;
    };

    // A response status of 200 indicates potential success.  The JSON response body
    // must be examined to determine if it was truly successful or an error.
    std.debug.print("response status code = {d}\n", .{resp.getStatusCode()});

    const json_resp = try chilkat.JsonObject.init();
    defer json_resp.deinit();
    json_resp.load(try resp.getBodyStr(alloc)) catch {};
    json_resp.setEmitCompact(false);

    std.debug.print("response JSON:\n", .{});
    std.debug.print("{s}\n", .{try json_resp.emit(alloc)});

    // A successful response looks like this:

    // {
    //   "resptext": "signature stored",
    //   "retref": "106631225001",
    //   "respcode": "02",
    //   "merchid": "MERCHANT_ID"
    // }
}