【问题标题】:MYOB Essentials Invoice API unable to push invoiceMYOB Essentials Invoice API 无法推送发票
【发布时间】:2020-06-09 01:42:51
【问题描述】:

我正在使用 RestSharp 向 MYOB 推送发票。

RestClient myobPostInvoicesClient = new RestClient("https://api.myob.com/");                   
RestRequest myobPostInvoicesRequest = new RestRequest("au/essentials/businesses/" + business_uid + "/sale/invoices", Method.POST);
myobPostInvoicesRequest.AddHeader("Authorization", "Bearer " + access_token);
myobPostInvoicesRequest.AddHeader("x-myobapi-key", clientId);
myobPostInvoicesRequest.AddHeader("x-myobapi-version", "v0");
myobPostInvoicesRequest.AddHeader("Content-Type", "application/json");

我发送到端点的 JSON 如下

{{
  "contact": {
    "uid": "26939970"
  },
  "invoiceNumber": "IV00000000082",
  "issueDate": "2020-06-07T09:00:00",
  "dueDate": "2020-07-07T09:00:00",
  "gstInclusive": "true",
  "status": "Open",
  "lines": [
    {
      "unitOfMeasure": "Qty",
      "quantity": 5.0,
      "unitPrice": 1000.0,
      "total": 5000.0,
      "taxType": {
        "uid": "10"
      },
      "account": {
        "uid": "9"
      },
      "description": "Test Description"
    }
  ]
}}

我从 MYOB Invoice API 端点得到的响应是

"{\"errors\":[{\"field\":\"\",\"message\":\"Forbidden\",\"code\":\"403\"}]}"

访问令牌和客户端 ID 均有效,我根据以下链接遵循发票的结构

https://developer.myob.com/api/essentials-accounting/endpoints/sale/invoices/

我在请求中包含之前标记为必填但 MYOB 已修改 UI 的字段。

仅供参考,我可以从 MYOB 获取联系人、帐户和税款类型,只需返回 Forbidden 403 消息以尝试发布发票。

您能提供的任何帮助将不胜感激。

【问题讨论】:

  • 使用 postman 测试一些 Get 调用...如果它们有效,然后尝试使用 postman 中的选项创建 c# 代码...找出差异并更新您的调用。
  • 我可以从 MYOB 获取联系人、帐户和税种。他们回来得很好。
  • 那么您使用的帐户很可能没有发布数据的权限
  • MYOB 上是否有任何页面可供您参考,我可以在哪里启用 POST 权限?我在与 AccountRight 集成时没有遇到此问题。

标签: c# json myob


【解决方案1】:

如果您收到 403 Forbidden,则需要检查您用于进行 post 调用的帐户的权限。

See here了解账户的权限

以上链接除外

如何检查用户的访问权限

要准确了解当前用户拥有哪些权限,并确保他们拥有正确的权限以使您的应用程序正常运行,请向 {{company_file_uri}}/{{company_file_id}}/CurrentUser 端点发出 GET 请求。

以下响应告诉您用户对每个 url 具有哪些权限

{
    "UserAccess": [
        {
            "ResourcePath": "https://{{company_file_uri}}/{{company_file_id}}/Banking/BankAccount/",
            "Access": [
                "GET"
            ]
        },
        {
            "ResourcePath": "https://{{company_file_uri}}/{{company_file_id}}/Banking/ReceiveMoneyTxn/",
            "Access": [
                "GET",
                "POST",
                "PUT",
                "DELETE"
            ]
        },
      ...
    ]
}

【讨论】:

    猜你喜欢
    • 2014-03-27
    • 1970-01-01
    • 2014-02-08
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 2021-10-17
    • 1970-01-01
    相关资源
    最近更新 更多