我在QBO v3 Reports API查询中做错了什么?

时间:2014-05-06 04:33:27

标签: quickbooks intuit-partner-platform quickbooks-online

当我使用以下查询时,我得到了一个很好的回复(只有5月的前5天,所以显然默认不是'这个财政年度迄今'为{{3}建议,但我离题了):

https://quickbooks.api.intuit.com/v3/company/0123456789/reports/CustomerSales

当我添加参数时,我得到一个oauth异常。例如:

https://quickbooks.api.intuit.com/v3/company/0123456789/reports/CustomerSales?start_date='2013-01-01'&end_date='2014-05-06'

给我这个:

{
 "Fault": {
  "type": "AUTHENTICATION", 
  "Error": [
   {
    "Message": "message=Exception authenticating OAuth; errorCode=003200; statusCode=401", 
    "code": "3200"
   }
   ]
 }, 
 "requestId": "[redacted]", 
 "time": "[redacted]"
}

这给了我相同的结果:

https://quickbooks.api.intuit.com/v3/company/0123456789/reports/CustomerSales?date_macro='This Fiscal Year'

这样做:

https://quickbooks.api.intuit.com/v3/company/148305798/reports/CustomerSales?accounting_method='Accrual'

我想我错过了一些小事。我没有更改任何标题或任何其他请求详细信息...只是网址。

我试过没有日期和其他参数的单引号。

我在做什么?

2 个答案:

答案 0 :(得分:3)

您是否将数据包含在右侧?在“基础”字符串中的URL中,您是否使用其他参数对其进行排序?

答案 1 :(得分:0)

我使用java devkit尝试过这个报告。 它对我来说很好。 PFB详细信息。

请求URI - https://quickbooks.api.intuit.com/v3/company/1092175540/reports/CustomerSales?accounting_method=Accrual&start_date=2014-01-01&requestid=61234ddb7e14ce2a5fe4e2f0318b31c&minorversion=1&

我的测试公司文件是空的。这就是为什么得到以下JSON响应。

{
   "Header":{
      "Time":"2014-05-06T20:42:08.783-07:00",
      "ReportName":"CustomerSales",
      "ReportBasis":"Accrual",
      "StartPeriod":"2014-05-01",
      "EndPeriod":"2014-05-06",
      "SummarizeColumnsBy":"Total",
      "Currency":"USD"
   },
   "Columns":{
      "Column":[
         {
            "ColTitle":"",
            "ColType":"Customer"
         }
      ]
   },
   "Rows":{
      "Row":[
         {
            "ColData":[
               {
                  "value":"TOTAL"
               }
            ],
            "group":"GrandTotal"
         }
      ]
   }
}

JAVA 代码

void testCustomerSalesReport(Context context) {
    Config.setProperty(Config.SERIALIZATION_RESPONSE_FORMAT, "json");
    ReportService service = new ReportService(context);
    service.setStart_date("2014-01-01");
    service.setAccounting_method("Accrual");
    Report report = null;
    try {
        report = service.executeReport(ReportName.CUSTOMERSALES.toString());
    } catch (FMSException e) {
        e.printStackTrace();
    }
}

API文档参考 - https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/reports/customersales

希望它会有用。

由于