我一直在[quickbooks-php][1]
使用Consolibyte
库。我想在名为CustomerQuery.txt
的文件中登录客户查询结果,但我收到的消息如下 -
Version:
Not provided by service
Message:
No data exchange required
Description:
No data to exchange for this application. Job ending.
这是PHP代码 -
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', true);
require_once('config.php');
require_once($QuickBooksFile);
if (function_exists('date_default_timezone_set'))
{
date_default_timezone_set('America/New_York');
}
$map = array(
QUICKBOOKS_QUERY_CUSTOMER => array( '_quickbooks_customer_query_request', '_quickbooks_customer_query_response' ),
);
$errmap = array();
$hooks = array();
$log_level = QUICKBOOKS_LOG_DEVELOP;
$soap = QUICKBOOKS_SOAPSERVER_BUILTIN;
$soap_options = array();
$handler_options = array(
'authenticate' => '_quickbooks_custom_auth',
'deny_concurrent_logins' => false,
);
if (!QuickBooks_Utilities::initialized($DSN))
{
QuickBooks_Utilities::initialize($DSN);
QuickBooks_Utilities::createUser($DSN, $user, $pass);
$primary_key_of_your_customer = 5;
$Queue = new QuickBooks_WebConnector_Queue($DSN);
$Queue->enqueue(QUICKBOOKS_QUERY_CUSTOMER, $primary_key_of_your_customer);
}
$Server = new QuickBooks_WebConnector_Server($DSN, $map, $errmap, $hooks, $log_level, $soap, QUICKBOOKS_WSDL, $soap_options, $handler_options);
$response = $Server->handle(true, true);
function _quickbooks_custom_auth($Username, $Password, &$QuickBooksCompanyFile){
return true;
}
function _quickbooks_customer_query_request($requestID, $user, $action, $ID, $extra, &$err, $last_action_time, $last_actionident_time, $version, $locale)
{
$xml = '<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="13.0"?>
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<CustomerQueryRq requestID="1">
<FullName>Kaley Baker</FullName>
<OwnerID>0</OwnerID>
</CustomerQueryRq>
</QBXMLMsgsRq>
</QBXML>';
return $xml;
}
function _quickbooks_customer_query_response($requestID, $user, $action, $ID, $extra, &$err, $last_action_time, $last_actionident_time, $xml, $idents)
{
file_put_contents('CustomerQuery.txt', $xml);
}
config.php
文件内容如下 -
$UserName='Admin';
$Password='Test123';
$DSN='mysqli://root@localhost/qb';
$QuickBooksCompanyFile = 'E:\QB.QBW';
$QuickBooksFile='C:\xampp\htdocs\accounting\qb\QuickBooks.php';
$Email='demo.code@gmail.com';
$DBHost='localhost';
$DBUser='root';
$DBPass='';
$DBName='qb';
*/
答案 0 :(得分:0)
快速Google或StackOverflow搜索会产生以下链接(连同其他帖子的海洋说同样的事情):
其中说:
“无需数据交换”是什么意思?
该消息的确含义如下:
没有可交换的数据。没有什么可做的。 Web连接器 (以及围绕它构建的大多数框架/开发工具包)使用“队列”概念。 一旦队列为空,没有别的事可做,你就会得到 那条消息。如果您向队列添加内容,那么它将处理 那些项目,直到没有什么可做的,然后你就会得到 “没有数据交换......”再次发出消息。
因此,例如,假设您希望每次都建立一个流程 客户是在您的商店内创建的,客户是在其中创建的 QuickBooks的。然后,您需要设置一个过程 客户是在您的商店中创建的,您排队添加的请求 客户到QuickBooks。
查看您的代码,只能调用任何类型的queue
方法:
$ Queue-&gt; enqueue(QUICKBOOKS_QUERY_CUSTOMER,$ primary_key_of_your_customer);
如果您回到找到此代码的文档/示例:
从这个图书馆:
你会看到一个重要的评论:
// IMPORTANT NOTE: This particular example of queueing something up will
// only ever happen *once* when these scripts are first run/used. After
// this initial test, you MUST do your queueing in another script. DO NOT
// DO YOUR OWN QUEUEING IN THIS FILE! See
// docs/example_web_connector_queueing.php for more details and examples
// of queueing things up.
Sooooo ......
quickbooks_queue
SQL表中)是什么样的?示例: