我已使用此链接中的快速书籍sdk在线集成了Quick-Books:https://github.com/consolibyte/quickbooks-php。
除了一个问题外,一切都很完美
问题是,当我从快速书籍中检索项目时,它会返回"非库存"项目为"服务"。
我已经阅读了不同的主题,声明我将不得不转到次要版本4来解决问题
但我无法找到一种方法来使我的当前SDK能够使用次要版本4或更高版本。
任何帮助将不胜感激。
答案 0 :(得分:0)
对于那些有类似问题的人,我找到了一个解决方法,并为他人分享,如果他们愿意,可以从中受益:
打开文件quickbook_sdk\QuickBooks\IPP\Service.php
找到以下函数protected function _query($Context, $realmID, $query)
替换以下代码
$return = $IPP->IDS($Context, $realmID, null, QuickBooks_IPP_IDS::OPTYPE_QUERY, urlencode($query));
用
$query = urlencode($query);
$query .= "&minorversion=4";
$return = $IPP->IDS($Context, $realmID, null, QuickBooks_IPP_IDS::OPTYPE_QUERY, $query);
注意:我正在查询项目,因此这种解决方法可能仅在通过查询获取数据时才有用。
<强>更新强>
如果要使用项目类型NonInventory在线添加/更新项目到QuickBooks,则需要在quickbook_sdk/QuickBooks/IPP.php
文件中修改以下代码。
查找名为function _IDS_v3
的函数,并在该函数内找到以下条件
if ($optype == QuickBooks_IPP_IDS::OPTYPE_ADD or $optype == QuickBooks_IPP_IDS::OPTYPE_MOD)
{
$post = true;
$url = $this->baseURL() . '/company/' . $realm . '/' . strtolower($resource);
$xml = $xml_or_query;
}
将其替换为
if ($optype == QuickBooks_IPP_IDS::OPTYPE_ADD or $optype == QuickBooks_IPP_IDS::OPTYPE_MOD)
{
$post = true;
$url = $this->baseURL() . '/company/' . $realm . '/' . strtolower($resource);
$xml = $xml_or_query;
$url .= "?minorversion=4"; // this is the only addition
}
答案 1 :(得分:0)
对于那些使用Intuit官方php sdk的人,在根文件夹中你会找到文件sdk.config
。修改<minorVersion>3</minorVersion>
。
答案 2 :(得分:0)
如果你去官方的PHP SDK: https://github.com/intuit/QuickBooks-V3-PHP-SDK
你会看到你可以使用: $ dataService-&GT; setMinorVersion(&#34; 4&#34); 在进行HTTP调用之前设置要使用的次要版本。