Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) MyInvois Malaysia Submit DocumentSee more Malaysia MyInvois ExamplesDemonstrates how to submit a document to MyInvois. For more information, see https://sdk.myinvois.hasil.gov.my/einvoicingapi/02-submit-documents/
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls. -- CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @iTmp0 int -- Important: Do not use nvarchar(max). See the warning about using nvarchar(max). DECLARE @sTmp0 nvarchar(4000) -- This example assumes the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. DECLARE @http int -- Use "Chilkat_9_5_0.Http" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END DECLARE @success int -- 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. DECLARE @sbXmlDoc int -- Use "Chilkat_9_5_0.StringBuilder" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbXmlDoc OUT EXEC sp_OAMethod @sbXmlDoc, 'LoadFile', @success OUT, 'c:/invoices/invoice1.xml', 'utf-8' -- 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. DECLARE @sha256 nvarchar(4000) EXEC sp_OAMethod @sbXmlDoc, 'GetHash', @sha256 OUT, 'sha256', 'hex', 'utf-8' DECLARE @sbEncoded int -- Use "Chilkat_9_5_0.StringBuilder" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbEncoded OUT EXEC sp_OAMethod @sbEncoded, 'AppendSb', @success OUT, @sbXmlDoc EXEC sp_OAMethod @sbEncoded, 'Encode', @success OUT, 'base64', 'utf-8' DECLARE @json int -- Use "Chilkat_9_5_0.JsonObject" for versions of Chilkat < 10.0.0 EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'documents[0].format', 'XML' EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'documents[0].documentHash', @sha256 EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'documents[0].codeNumber', 'INV12345' EXEC sp_OAMethod @json, 'UpdateSb', @success OUT, 'documents[0].document', @sbEncoded -- Adds the "Authorization: Bearer <access_token>" header. EXEC sp_OASetProperty @http, 'AuthToken', '<access_token>' DECLARE @resp int EXEC sp_OAMethod @http, 'PostJson3', @resp OUT, 'https://preprod-api.myinvois.hasil.gov.my/api/v1.0/documentsubmissions', 'application/json', @json EXEC sp_OAGetProperty @http, 'LastMethodSuccess', @iTmp0 OUT IF @iTmp0 = 0 BEGIN EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @http EXEC @hr = sp_OADestroy @sbXmlDoc EXEC @hr = sp_OADestroy @sbEncoded EXEC @hr = sp_OADestroy @json RETURN END EXEC sp_OAGetProperty @resp, 'StatusCode', @iTmp0 OUT PRINT 'response status code = ' + @iTmp0 EXEC sp_OAGetProperty @resp, 'BodyStr', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @resp EXEC @hr = sp_OADestroy @http EXEC @hr = sp_OADestroy @sbXmlDoc EXEC @hr = sp_OADestroy @sbEncoded EXEC @hr = sp_OADestroy @json END GO |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.