Quickbooks 3120来自ReceivePaymentAddRq的错误-php开发工具包
我在这里添加了使用php devkit接收付款 问题是quickbooks没有响应,也没有问题。我检查了web连接器日志和php日志文件。 但响应函数从未调用过 我很确定这在几天前还很有效。 我不知道确切的问题是什么 qbxml版本:10.0 请求xml:Quickbooks 3120来自ReceivePaymentAddRq的错误-php开发工具包,quickbooks,Quickbooks,我在这里添加了使用php devkit接收付款 问题是quickbooks没有响应,也没有问题。我检查了web连接器日志和php日志文件。 但响应函数从未调用过 我很确定这在几天前还很有效。 我不知道确切的问题是什么 qbxml版本:10.0 请求xml: <?xml version="1.0" encoding="utf-8"?> <?qbxml version="10.0"?> <QBXML> <QBXMLMsgsRq onError="co
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="10.0"?>
<QBXML>
<QBXMLMsgsRq onError="continueOnError">
<ReceivePaymentAddRq requestID="153">
<ReceivePaymentAdd>
<CustomerRef >
<FullName >Duncan, Dave</FullName>
</CustomerRef>
<TxnDate >2023-12-15</TxnDate>
<RefNumber>Wire</RefNumber>
<TotalAmount>2585.00</TotalAmount>
<PaymentMethodRef><FullName>Check</FullName></PaymentMethodRef>
<Memo>Paid In Full</Memo>
<AppliedToTxnAdd>
<TxnID>28CA9-1702576301</TxnID>
<PaymentAmount >2585.00</PaymentAmount>
</AppliedToTxnAdd>
</ReceivePaymentAdd>
</ReceivePaymentAddRq>
</QBXMLMsgsRq>
</QBXML>
$map = array(
QUICKBOOKS_ADD_RECEIVE_PAYMENT => array( '_quickbooks_payment_add_request', '_quickbooks_payment_add_response' ));
$errmap = array(
// QUICKBOOKS_IMPORT_CUSTOMER => '_quickbooks_customer_query_error',
'*' => '_quickbooks_error_catchall', // Catch any other errors that might occur
..
$hooks = array(
QuickBooks_WebConnector_Handlers::HOOK_LOGINSUCCESS => '_quickbooks_sync_to_qb', // call this whenever a successful login occurs
);
编辑:
详细日志
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_sendRequestXML() : qbNationality="US"
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_sendRequestXML() : qbXMLMajorVers="13"
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_sendRequestXML() : qbXMLMinorVers="0"
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_sendRequestXML() : Received from sendRequestXML() following parameter:
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_sendRequestXML() : strRequestXML =
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_sendRequestXML() : XML dump follows: -
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="10.0"?>
<QBXML>
<QBXMLMsgsRq onError="continueOnError">
<ReceivePaymentAddRq requestID="158">
<ReceivePaymentAdd><CustomerRef ><FullName >Duncan, Dave</FullName></CustomerRef><RefNumber>Wire</RefNumber>
<TotalAmount>2585.00</TotalAmount>
<PaymentMethodRef><FullName>Check</FullName></PaymentMethodRef>
<Memo>Paid In Full</Memo>
<AppliedToTxnAdd>
<TxnID>28CA9-1702576301</TxnID>
<PaymentAmount >2585.00</PaymentAmount>
</AppliedToTxnAdd>
</ReceivePaymentAdd>
</ReceivePaymentAddRq>
</QBXMLMsgsRq>
</QBXML>
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_sendRequestXML() : Request xml received.
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.ProcessRequestXML() : Processing request #1
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.ProcessRequestXML() : REQUEST: received from application: size (bytes) = 666
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.ProcessRequestXML() : Sending request to QuickBooks.
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.ProcessRequestXML() : Response received from QuickBooks: size (bytes) = 245
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.ProcessRequestXML() : Sending response back to application.
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : *** Calling receiveResponseXML() with following parameters:
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : wcTicket="35382423-f97d-5fc4-3935-d4a7629367a8"
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : response =
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : XML dump follows: -
<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<ReceivePaymentAddRs requestID="158" statusCode="3120" statusSeverity="Error" statusMessage="Object "28CA9-1702576301" specified in the request cannot be found. " />
</QBXMLMsgsRs>
</QBXML>
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : hresult=""
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : message=""
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : Received from receiveResponseXML() following parameters:
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : more="100">
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : Done. No more to process.
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.do_sendRequestXML():qbNationality=“US”
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.do_sendRequestXML():qbXMLMajorVers=“13”
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.do_sendRequestXML():qbXMLMinorVers=“0”
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.do_sendRequestXML():从sendRequestXML()接收以下参数:
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.do_sendRequestXML():strRequestXML=
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.do_sendRequestXML():XML转储如下所示:-
邓肯,戴维维尔
2585
检查
全额支付
28CA9-1702576301
2585
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.do_sendRequestXML():收到请求xml。
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.ProcessRequestXML():处理请求#1
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.ProcessRequestXML():请求:从应用程序接收:大小(字节)=666
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.ProcessRequestXML():向QuickBooks发送请求。
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.ProcessRequestXML():从QuickBooks收到的响应:大小(字节)=245
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.ProcessRequestXML():将响应发送回应用程序。
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.do_receiveResponseXML():***使用以下参数调用receiveResponseXML():
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.do_Receiver ResponseXML():wcTicket=“35382423-f97d-5fc4-3935-d4a7629367a8”
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.do_ReceiverResponseXml():响应=
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.do_ReceiverResponseXML():XML转储如下:-
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.do_ReceiverResponseXML():hresult=“”
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.do_ReceiverResponseXML():message=“”
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.do_receiveResponseXML():从receiveResponseXML()接收以下参数:
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.do_ReceiverResponseXML():more=“100”>
20190327.20:42:17 UTC:QBWebConnector.SOAPWebService.do_ReceiverResponseXML():完成。没有更多的需要处理。
如果看不到日志(Web连接器日志处于详细
模式,以及quickbooks\u log
SQL表输出),很难判断这里到底出了什么问题,但至少有几点需要检查:
1。您确定没有收到QuickBooks的回复吗?
您指出“问题在于quickbooks没有响应”,但这里可能不是实际情况
您是否已验证在实际日志中没有收到响应?例如,如果发生错误(例如,可能客户或发票不存在),则QuickBooks将发回一个错误,但您的响应函数不会被调用,而是会调用一个错误处理程序
你的代码中有类似的东西吗
$errmap = array(
3070 => '_quickbooks_error_stringtoolong', // Whenever a string is too long to fit in a field, call this function: _quickbooks_error_stringtolong()
// ... more error handlers here ...
);
(来自)
可能正在调用错误处理程序而不是响应函数
2。您没有传递requestID=“…”属性
Web连接器在XML中使用requestID=“…”
属性,以便能够将传出的请求与传入的响应相匹配。你没有用,但应该用
更改此项:
为此:
阅读更多:
”$备忘录。”代码>
如果$memo
设置为bla-bla-bla-bla
,那么您将得到格式错误的XML:
bla bla我检查了队列表,qb_状态为“h”,找不到请求中指定的msg字段为“3120:Object”28CA9-1702576301”。仅供参考,我将requsetID添加到qbxml中,上面的xml来自日志文件,这意味着$memo未定义,问题是3120错误代码啊,那么您将收到QuickBooks的回复!我会在这里用一些额外的细节修改我的答案。我检查了发票和交易ID“28CA9-1702576301”,这是正确的。我不知道为什么日志会这样写——“试图处理错误:3120,找不到请求中指定的对象“28CA9-1702576301”。”。请求后,由于此问题,它将进入捕获错误功能。发票是已付款还是未付款?发票上的余额是否小于或等于您申请的金额?发票客户与付款客户是否相同?付款的应收账户是否与发票的应收账户相同?我从这些开始。
function _quickbooks_payment_add_response($requestID, $user, $action, $ID, $extra, &$err, $last_action_time, $last_actionident_time, $xml, $idents)
{error_log('_quickbooks_payment_add_response');
$database = new Database();
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_sendRequestXML() : qbNationality="US"
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_sendRequestXML() : qbXMLMajorVers="13"
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_sendRequestXML() : qbXMLMinorVers="0"
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_sendRequestXML() : Received from sendRequestXML() following parameter:
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_sendRequestXML() : strRequestXML =
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_sendRequestXML() : XML dump follows: -
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="10.0"?>
<QBXML>
<QBXMLMsgsRq onError="continueOnError">
<ReceivePaymentAddRq requestID="158">
<ReceivePaymentAdd><CustomerRef ><FullName >Duncan, Dave</FullName></CustomerRef><RefNumber>Wire</RefNumber>
<TotalAmount>2585.00</TotalAmount>
<PaymentMethodRef><FullName>Check</FullName></PaymentMethodRef>
<Memo>Paid In Full</Memo>
<AppliedToTxnAdd>
<TxnID>28CA9-1702576301</TxnID>
<PaymentAmount >2585.00</PaymentAmount>
</AppliedToTxnAdd>
</ReceivePaymentAdd>
</ReceivePaymentAddRq>
</QBXMLMsgsRq>
</QBXML>
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_sendRequestXML() : Request xml received.
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.ProcessRequestXML() : Processing request #1
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.ProcessRequestXML() : REQUEST: received from application: size (bytes) = 666
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.ProcessRequestXML() : Sending request to QuickBooks.
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.ProcessRequestXML() : Response received from QuickBooks: size (bytes) = 245
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.ProcessRequestXML() : Sending response back to application.
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : *** Calling receiveResponseXML() with following parameters:
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : wcTicket="35382423-f97d-5fc4-3935-d4a7629367a8"
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : response =
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : XML dump follows: -
<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<ReceivePaymentAddRs requestID="158" statusCode="3120" statusSeverity="Error" statusMessage="Object "28CA9-1702576301" specified in the request cannot be found. " />
</QBXMLMsgsRs>
</QBXML>
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : hresult=""
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : message=""
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : Received from receiveResponseXML() following parameters:
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : more="100">
20190327.20:42:17 UTC : QBWebConnector.SOAPWebService.do_receiveResponseXML() : Done. No more to process.
$errmap = array(
3070 => '_quickbooks_error_stringtoolong', // Whenever a string is too long to fit in a field, call this function: _quickbooks_error_stringtolong()
// ... more error handlers here ...
);