Thank you for visiting our Partner Zone. This area is an exclusive space for MYOB Partners. Find out how to Partner with MYOB.
August 2020
August 2020
Hello all,
I am attempting to follow the directions listed here: https://apisupport.myob.com/hc/en-us/articles/360001652376-Base64-Encoded-Bill-Attachement to upload a pdf of an invoice to a bill.
I am testing with Postman and am able to successfully connect to the CompanyFile just fine and access any of the required URI's with no issues. Just when i try to upload a file.
If i se the BODY value in Postman to 'form-data' i get the below error every time:
{
"Errors": [
{
"Name": "SerializationError",
"Message": null,
"AdditionalDetails": "Unexpected character encountered while parsing number: W. Path '', line 1, position 6.",
"ErrorCode": 50,
"Severity": "Error",
"LearnMore": null
}
],
"Information": "Warning, error messages have not been finalised in this release and may change"
}
Is there any further information or sample code to show HOW the body syntax should look??
Hoping someone can help point me in the right direction.
August 2020
August 2020
Hey @DeanFX
Welcome to the forum.
I believe it's just a JSON body instead of using form-data.
eg.
{
"OriginalFileName": "Name",
"FileBase64Content": "Content"
}
August 2020 - last edited August 2020
August 2020 - last edited August 2020
Thank you Emile,
I had tried that, just forgot to put it in the original post, but i get the following error when doing it that way:
{
"Errors": [
{
"Name": "InternalError",
"Message": "An exception was thrown that was not handled correctly. If this situation persists please contact developers@myob.com for further assistance.",
"AdditionalDetails": null,
"ErrorCode": 20,
"Severity": "Error",
"LearnMore": null
}
],
"Information": "Warning, error messages have not been finalised in this release and may change"
I do get different messages if i play with the JSON layout, but still no joy getting it to work.
EDIT:
Sorry, thought i had better put all my workings in here as well.
If i set the BODY to be JSON like:
{
"OriginalFileName": "Invoice.pdf",
"FileBase64Content": "JVBERi0{{truncated for ease}}YNCg++"
}
I always get the InternalError as shown above.
I thought about playing with the JSON layout and tried:
{
"Attachment": [
{
"OriginalFileName": "Invoice.pdf",
"FileBase64Content": "JVBERi0{{truncated for ease}}YNCg++"
}
]
}
But then i get the below error (which may be a valid error as i dont know how MYOB wants the BODY laid out)
{
"Errors": [
{
"Name": "SerializationError",
"Message": null,
"AdditionalDetails": "Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'MYOB.AccountRight.API.Version2.Contracts.BillAttachmentData' because the type requires a JSON object (e.g. {\"name\":\"value\"}) to deserialize correctly.\r\nTo fix this error either change the JSON to a JSON object (e.g. {\"name\":\"value\"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.\r\nPath 'Attachment', line 2, position 16.",
"ErrorCode": 50,
"Severity": "Error",
"LearnMore": null
}
],
"Information": "Warning, error messages have not been finalised in this release and may change"
}
Hoping the above helps.
August 2020 - last edited August 2020
August 2020 - last edited August 2020
Followup for anybody looking, i worked out the correct syntax for attaching a pdf file to a bill.
The JSON Body should be:
{
"Attachment":
{
"OriginalFileName": "{{filename_required}}",
"FileBase64Content": "{{base64_encoded_file_string}}"
}
}
September 2020 - last edited September 2020
September 2020 - last edited September 2020
Sorry to hijack this thread but I am receiving the error below and the link posted below is now broken.
{ "Errors": [ { "Name": "FileExtensionRequired", "Message": "Original file type must be .pdf .tiff .jpg .jpeg .x-ms-png or .png and must be consistent in decoded file base64 content", "AdditionalDetails": "", "ErrorCode": 80000, "Severity": "Error", "LearnMore": null } ], "Information": "Warning, error messages have not been finalised in this release and may change" }
My Code Snippet
$curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS =>'{ "Attachment": { "OriginalFileName": "{{test.jpg}}", "FileBase64Content": "{{.$postdata.}}" } }', CURLOPT_HTTPHEADER => $this->header, )); $response = curl_exec($curl); curl_close($curl); echo $response;
thank you for any help..
Ben
September 2020
September 2020
Hi Ben,
I just noticed my synatx may be a bit misleading in the sample i showed. I wrapped the fields with {{ & }} as they appear as a placeholder in the MYOB dev documentation.
However, the actual syntax should be:
{ "Attachment": { "OriginalFileName": "test.jpg", "FileBase64Content": "base64.encoded_file_string" } }
I'm by no means a CURL programmer, but the above is the syntax i use with no issues.
Hope this helps.
September 2020
September 2020
Thanks Dean. I really appreciated.
I have managed to get the upload working perfectly.
by
AL6
3 weeks ago
0
109
|
0
|
109
|
||
0
|
84
|
|||
41
|
3253
|
|||
14
|
566
|
|||
1
|
213
|