Rust
Rust
MyInvois Malaysia Submit Document
See more Malaysia MyInvois Examples
Demonstrates how to submit a document to MyInvois.Chilkat Rust Downloads
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
let http = chilkat::Http::new();
// The following JSON is sent in the request body.
// {
// "documents": [
// {
// "format": "XML",
// "documentHash": "<SHA256_hash_of_document>",
// "codeNumber": "INV12345",
// "document": "<Document_encoded_in_Base64>"
// }
// ]
// }
// Load the document to be sent.
let sb_xml_doc = chilkat::StringBuilder::new();
let _ = sb_xml_doc.load_file("c:/invoices/invoice1.xml", "utf-8").is_ok();
// The MyInvois online documentation neglects to tell us the encoding of the documentHash.
// Should it be base64? Or hex? We can only guess. MyInvois provides no samples,
// and omits these crucial details which are needed for actual implementation.
//
// *** Note: It was confirmed that "hex" is the encoding that is needed.
let sha256 = sb_xml_doc.get_hash("sha256", "hex", "utf-8").unwrap_or_default();
let sb_encoded = chilkat::StringBuilder::new();
let _ = sb_encoded.append_sb(&sb_xml_doc);
let _ = sb_encoded.encode("base64", "utf-8");
let json = chilkat::JsonObject::new();
let _ = json.update_string("documents[0].format", "XML");
let _ = json.update_string("documents[0].documentHash", &sha256);
let _ = json.update_string("documents[0].codeNumber", "INV12345");
let _ = json.update_sb("documents[0].document", &sb_encoded);
// Adds the "Authorization: Bearer <access_token>" header.
http.set_auth_token("<access_token>");
let resp = chilkat::HttpResponse::new();
if http.http_json("POST", "https://preprod-api.myinvois.hasil.gov.my/api/v1.0/documentsubmissions", &json, "application/json", &resp).is_err() {
println!("{}", http.last_error_text());
return;
}
println!("response status code = {}", resp.status_code());
println!("{}", resp.body_str());