3120 error from ReceivePaymentAddRq - php devkitQuickBooks PHP DevKit connection errorsQuickbooks PHP DevKitAdd multiple line items in an invoice In open-source QuickBooks PHP DevKitUpdate & delete Items in open-source QuickBooks PHP DevKit on GitHubUpdate a line in an invoice in open-source QuickBooks PHP DevKit on GitHubUpdate payment in open-source QuickBooks PHP DevKit on GitHubError when using QuickBooks PHP DevKit examplesUnable to connect with QuickBooks PHP DevKitQuickbooks isn't compatible with the version of qbXML that I expectQuickbooks Desktop php Library Issue in “ReceivePaymentToDepositQuery”
Why is drive/partition number still used?
Is there a wealth gap in Boston where the median net worth of white households is $247,500 while the median net worth for black families was $8?
Is there a list of words that will enable the second player in two-player Ghost to always win?
Sci-fi change: Too much or Not enough
Are there any examples of technologies have been lost over time?
Isolated audio without a transformer
Can anyone give a concrete example to illustrate what is an uniform prior?
How many oliphaunts died in all of the Lord of the Rings battles?
Japanese reading of an integer
Symplectisation as a functor between appropriate categories
What language is Raven using for her attack in the new 52?
How to tar a list of directories only if they exist
How can religions be structured in ways that allow inter-faith councils to work?
Examples of simultaneous independent breakthroughs
Polyhedra, Polyhedron, Polytopes and Polygon
Why do all my history books divide Chinese history after the Han dynasty?
Could the rotation of a black hole cause other planets to rotate?
Does the Intel 8086 CPU have user mode and kernel mode?
Why is 'n' preferred over "n" for output streams?
Why/when is AC-DC-AC conversion superior to direct AC-AC conversion?
Why can't my huge trees be chopped down?
Checking if an integer is a member of an integer list
Is it legal to use cash pulled from a credit card to pay the monthly payment on that credit card?
Catan Victory points
3120 error from ReceivePaymentAddRq - php devkit
QuickBooks PHP DevKit connection errorsQuickbooks PHP DevKitAdd multiple line items in an invoice In open-source QuickBooks PHP DevKitUpdate & delete Items in open-source QuickBooks PHP DevKit on GitHubUpdate a line in an invoice in open-source QuickBooks PHP DevKit on GitHubUpdate payment in open-source QuickBooks PHP DevKit on GitHubError when using QuickBooks PHP DevKit examplesUnable to connect with QuickBooks PHP DevKitQuickbooks isn't compatible with the version of qbXML that I expectQuickbooks Desktop php Library Issue in “ReceivePaymentToDepositQuery”
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I'm adding receive payments using php devkit here https://github.com/consolibyte/quickbooks-php.
The problem is no response from the quickbooks and also there is no issue. I checked the web connector logs and php log files.
But response function is not called ever.
I'm pretty sure this was working well until few days ago.
I have no idea what the exact problem is.
qbxml version: 10.0
request xml:
<?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>
php scripts:
$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
);
function _quickbooks_sync_to_qb($requestID, $user, $hook, &$err, $hook_data, $callback_config)
$database = new Database();
$db = $database->getConnection();
$Queue = new QuickBooks_WebConnector_Queue($database->dsn);
$payment = new Payment($db);
$payment->needSync = true;
$stmt = $payment->read();
$num = $stmt->rowCount();
if ($num > 0)
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
$Queue->enqueue(QUICKBOOKS_ADD_RECEIVE_PAYMENT, $row['id']);
$database->destroy();
function _quickbooks_payment_add_request($requestID, $user, $action, $ID, $extra, &$err, $last_action_time, $last_actionident_time, $version, $locale)
error_log('start from here');
$database = new Database();
$db = $database->getConnection();
// Grab the data from our MySQL database
$payment = new Payment($db);
$payment->id = (int) $ID;
error_log('1');
// Validation
$stmt = $payment->read();
$num = $stmt->rowCount();
if ($num > 0) error_log('2');
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
extract($row);
// get trasaction id from invoice
$invoice = new Invoice($db);
$invoice->refNumber = $invoice_ref_number;
error_log('21');
$xml = '<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="10.0"?>
<QBXML>
<QBXMLMsgsRq onError="continueOnError">
<ReceivePaymentAddRq>
<ReceivePaymentAdd>';
if ($customer_ref_listid != ''
error_log('3');
$database->destroy();
error_log('4');
error_log($xml);
return $xml;
error_log('5');
$database->destroy();
return false;
This function seems not called even it is registered properly.
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();
EDIT:
VERBOSE LOG
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.
quickbooks
add a comment |
I'm adding receive payments using php devkit here https://github.com/consolibyte/quickbooks-php.
The problem is no response from the quickbooks and also there is no issue. I checked the web connector logs and php log files.
But response function is not called ever.
I'm pretty sure this was working well until few days ago.
I have no idea what the exact problem is.
qbxml version: 10.0
request xml:
<?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>
php scripts:
$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
);
function _quickbooks_sync_to_qb($requestID, $user, $hook, &$err, $hook_data, $callback_config)
$database = new Database();
$db = $database->getConnection();
$Queue = new QuickBooks_WebConnector_Queue($database->dsn);
$payment = new Payment($db);
$payment->needSync = true;
$stmt = $payment->read();
$num = $stmt->rowCount();
if ($num > 0)
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
$Queue->enqueue(QUICKBOOKS_ADD_RECEIVE_PAYMENT, $row['id']);
$database->destroy();
function _quickbooks_payment_add_request($requestID, $user, $action, $ID, $extra, &$err, $last_action_time, $last_actionident_time, $version, $locale)
error_log('start from here');
$database = new Database();
$db = $database->getConnection();
// Grab the data from our MySQL database
$payment = new Payment($db);
$payment->id = (int) $ID;
error_log('1');
// Validation
$stmt = $payment->read();
$num = $stmt->rowCount();
if ($num > 0) error_log('2');
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
extract($row);
// get trasaction id from invoice
$invoice = new Invoice($db);
$invoice->refNumber = $invoice_ref_number;
error_log('21');
$xml = '<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="10.0"?>
<QBXML>
<QBXMLMsgsRq onError="continueOnError">
<ReceivePaymentAddRq>
<ReceivePaymentAdd>';
if ($customer_ref_listid != ''
error_log('3');
$database->destroy();
error_log('4');
error_log($xml);
return $xml;
error_log('5');
$database->destroy();
return false;
This function seems not called even it is registered properly.
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();
EDIT:
VERBOSE LOG
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.
quickbooks
add a comment |
I'm adding receive payments using php devkit here https://github.com/consolibyte/quickbooks-php.
The problem is no response from the quickbooks and also there is no issue. I checked the web connector logs and php log files.
But response function is not called ever.
I'm pretty sure this was working well until few days ago.
I have no idea what the exact problem is.
qbxml version: 10.0
request xml:
<?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>
php scripts:
$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
);
function _quickbooks_sync_to_qb($requestID, $user, $hook, &$err, $hook_data, $callback_config)
$database = new Database();
$db = $database->getConnection();
$Queue = new QuickBooks_WebConnector_Queue($database->dsn);
$payment = new Payment($db);
$payment->needSync = true;
$stmt = $payment->read();
$num = $stmt->rowCount();
if ($num > 0)
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
$Queue->enqueue(QUICKBOOKS_ADD_RECEIVE_PAYMENT, $row['id']);
$database->destroy();
function _quickbooks_payment_add_request($requestID, $user, $action, $ID, $extra, &$err, $last_action_time, $last_actionident_time, $version, $locale)
error_log('start from here');
$database = new Database();
$db = $database->getConnection();
// Grab the data from our MySQL database
$payment = new Payment($db);
$payment->id = (int) $ID;
error_log('1');
// Validation
$stmt = $payment->read();
$num = $stmt->rowCount();
if ($num > 0) error_log('2');
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
extract($row);
// get trasaction id from invoice
$invoice = new Invoice($db);
$invoice->refNumber = $invoice_ref_number;
error_log('21');
$xml = '<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="10.0"?>
<QBXML>
<QBXMLMsgsRq onError="continueOnError">
<ReceivePaymentAddRq>
<ReceivePaymentAdd>';
if ($customer_ref_listid != ''
error_log('3');
$database->destroy();
error_log('4');
error_log($xml);
return $xml;
error_log('5');
$database->destroy();
return false;
This function seems not called even it is registered properly.
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();
EDIT:
VERBOSE LOG
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.
quickbooks
I'm adding receive payments using php devkit here https://github.com/consolibyte/quickbooks-php.
The problem is no response from the quickbooks and also there is no issue. I checked the web connector logs and php log files.
But response function is not called ever.
I'm pretty sure this was working well until few days ago.
I have no idea what the exact problem is.
qbxml version: 10.0
request xml:
<?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>
php scripts:
$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
);
function _quickbooks_sync_to_qb($requestID, $user, $hook, &$err, $hook_data, $callback_config)
$database = new Database();
$db = $database->getConnection();
$Queue = new QuickBooks_WebConnector_Queue($database->dsn);
$payment = new Payment($db);
$payment->needSync = true;
$stmt = $payment->read();
$num = $stmt->rowCount();
if ($num > 0)
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
$Queue->enqueue(QUICKBOOKS_ADD_RECEIVE_PAYMENT, $row['id']);
$database->destroy();
function _quickbooks_payment_add_request($requestID, $user, $action, $ID, $extra, &$err, $last_action_time, $last_actionident_time, $version, $locale)
error_log('start from here');
$database = new Database();
$db = $database->getConnection();
// Grab the data from our MySQL database
$payment = new Payment($db);
$payment->id = (int) $ID;
error_log('1');
// Validation
$stmt = $payment->read();
$num = $stmt->rowCount();
if ($num > 0) error_log('2');
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
extract($row);
// get trasaction id from invoice
$invoice = new Invoice($db);
$invoice->refNumber = $invoice_ref_number;
error_log('21');
$xml = '<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="10.0"?>
<QBXML>
<QBXMLMsgsRq onError="continueOnError">
<ReceivePaymentAddRq>
<ReceivePaymentAdd>';
if ($customer_ref_listid != ''
error_log('3');
$database->destroy();
error_log('4');
error_log($xml);
return $xml;
error_log('5');
$database->destroy();
return false;
This function seems not called even it is registered properly.
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();
EDIT:
VERBOSE LOG
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.
quickbooks
quickbooks
edited Mar 27 at 20:55
brucelin
asked Mar 26 at 18:41
brucelinbrucelin
1111 silver badge14 bronze badges
1111 silver badge14 bronze badges
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
It's hard to tell without seeing the logs (Web Connector logs in VERBOSE
mode and also the quickbooks_log
SQL table output) exactly what's wrong here, but here's at least a few things to check:
1. Are you SURE you're not getting a response from QuickBooks?
You indicate "The problem is no response from the quickbooks" but that may not be the actual case here.
Have you verified that you're not getting a response in the actual logs? For example, if an error were to occur (e.g. maybe the customer or the invoice does not exist) then QuickBooks will send back an error but your response function won't get called -- an error handler will get called instead.
Do you have something like this in your code?
$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 ...
);
(from https://github.com/consolibyte/quickbooks-php/blob/master/docs/web_connector/example_web_connector.php )
Maybe an error handler is getting called instead of your response function?
2. You aren't passing a requestID="..." attribute
The Web Connector uses a requestID="..."
attribute in the XML to be able to match up the outgoing requests with the incoming responses. You're not using it, but should be.
Change this:
<ReceivePaymentAddRq>
To this:
<ReceivePaymentAddRq requestID="' . $requestID . '">
Read more:
- http://wiki.consolibyte.com/wiki/doku.php/quickbooks_integration_php_consolibyte#i_m_getting_the_error_messageno_registered_functions_for_action
3. You're not XML encoding values
For this:
<Memo>' . $memo . '</Memo>
If $memo
is set to bla bla <something> bla bla
then you're going to end up with malformed XML:
<Memo>bla bla <something bla bla</Memo>
You should be XML-encoding these values.
4. The $memo variable is undefined
You're saying that your resulting XML looks like this:
<Memo>Paid In Full</Memo>
But when I look at your code, $memo
is undefined. This makes me suspect that the XML you pasted here is not the actual XML you're sending to QuickBooks.
Where does that variable get set to Paid In Full
? It doesn't get set anywhere in the code you pasted.
This should also be causing a PHP error/warning about an undefined variable, which could be breaking things.
5. Make sure your Web Connector is in VERBOSE mode
VERBOSE mode in the Web Connector shows a lot more data. You should be able to easily find the request in question and analyze/post the relevant logs.
6. Check the quickbooks_log and quickbooks_queue tables
What do they show/say?
What is the status (qb_status
field) and message on the queued up record (quickbooks_queue
SQL table)?
I checked _queue table, qb_status says "h" and msg field is "3120: Object "28CA9-1702576301" specified in the request cannot be found. "
– brucelin
Mar 27 at 15:57
FYI, I added the requsetID to the qbxml and the above xml is coming from the log file which means $memo is not undefined, the problem is 3120 error code
– brucelin
Mar 27 at 16:10
Ah, so you ARE getting a response from QuickBooks then! I will amend my answer with some additional details here.
– Keith Palmer Jr.
Mar 27 at 20:35
I checked the invoice and trasaction ID "28CA9-1702576301", this is correct one. I'm not sure why the log says this - "Attempting to handle error: 3120, Object "28CA9-1702576301" specified in the request cannot be found.". after request, it falls into catch error function because of this issue.
– brucelin
Mar 27 at 20:38
1
Is the invoice paid or unpaid? Is the balance on the invoice less than or equal to the amount you are applying to it? Is the customer for the invoice the same as the customer for the payment? Is the A/R account for the payment the same as the A/R account for the invoice? I'd start with those.
– Keith Palmer Jr.
Mar 27 at 20:40
|
show 2 more comments
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55364196%2f3120-error-from-receivepaymentaddrq-php-devkit%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
It's hard to tell without seeing the logs (Web Connector logs in VERBOSE
mode and also the quickbooks_log
SQL table output) exactly what's wrong here, but here's at least a few things to check:
1. Are you SURE you're not getting a response from QuickBooks?
You indicate "The problem is no response from the quickbooks" but that may not be the actual case here.
Have you verified that you're not getting a response in the actual logs? For example, if an error were to occur (e.g. maybe the customer or the invoice does not exist) then QuickBooks will send back an error but your response function won't get called -- an error handler will get called instead.
Do you have something like this in your code?
$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 ...
);
(from https://github.com/consolibyte/quickbooks-php/blob/master/docs/web_connector/example_web_connector.php )
Maybe an error handler is getting called instead of your response function?
2. You aren't passing a requestID="..." attribute
The Web Connector uses a requestID="..."
attribute in the XML to be able to match up the outgoing requests with the incoming responses. You're not using it, but should be.
Change this:
<ReceivePaymentAddRq>
To this:
<ReceivePaymentAddRq requestID="' . $requestID . '">
Read more:
- http://wiki.consolibyte.com/wiki/doku.php/quickbooks_integration_php_consolibyte#i_m_getting_the_error_messageno_registered_functions_for_action
3. You're not XML encoding values
For this:
<Memo>' . $memo . '</Memo>
If $memo
is set to bla bla <something> bla bla
then you're going to end up with malformed XML:
<Memo>bla bla <something bla bla</Memo>
You should be XML-encoding these values.
4. The $memo variable is undefined
You're saying that your resulting XML looks like this:
<Memo>Paid In Full</Memo>
But when I look at your code, $memo
is undefined. This makes me suspect that the XML you pasted here is not the actual XML you're sending to QuickBooks.
Where does that variable get set to Paid In Full
? It doesn't get set anywhere in the code you pasted.
This should also be causing a PHP error/warning about an undefined variable, which could be breaking things.
5. Make sure your Web Connector is in VERBOSE mode
VERBOSE mode in the Web Connector shows a lot more data. You should be able to easily find the request in question and analyze/post the relevant logs.
6. Check the quickbooks_log and quickbooks_queue tables
What do they show/say?
What is the status (qb_status
field) and message on the queued up record (quickbooks_queue
SQL table)?
I checked _queue table, qb_status says "h" and msg field is "3120: Object "28CA9-1702576301" specified in the request cannot be found. "
– brucelin
Mar 27 at 15:57
FYI, I added the requsetID to the qbxml and the above xml is coming from the log file which means $memo is not undefined, the problem is 3120 error code
– brucelin
Mar 27 at 16:10
Ah, so you ARE getting a response from QuickBooks then! I will amend my answer with some additional details here.
– Keith Palmer Jr.
Mar 27 at 20:35
I checked the invoice and trasaction ID "28CA9-1702576301", this is correct one. I'm not sure why the log says this - "Attempting to handle error: 3120, Object "28CA9-1702576301" specified in the request cannot be found.". after request, it falls into catch error function because of this issue.
– brucelin
Mar 27 at 20:38
1
Is the invoice paid or unpaid? Is the balance on the invoice less than or equal to the amount you are applying to it? Is the customer for the invoice the same as the customer for the payment? Is the A/R account for the payment the same as the A/R account for the invoice? I'd start with those.
– Keith Palmer Jr.
Mar 27 at 20:40
|
show 2 more comments
It's hard to tell without seeing the logs (Web Connector logs in VERBOSE
mode and also the quickbooks_log
SQL table output) exactly what's wrong here, but here's at least a few things to check:
1. Are you SURE you're not getting a response from QuickBooks?
You indicate "The problem is no response from the quickbooks" but that may not be the actual case here.
Have you verified that you're not getting a response in the actual logs? For example, if an error were to occur (e.g. maybe the customer or the invoice does not exist) then QuickBooks will send back an error but your response function won't get called -- an error handler will get called instead.
Do you have something like this in your code?
$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 ...
);
(from https://github.com/consolibyte/quickbooks-php/blob/master/docs/web_connector/example_web_connector.php )
Maybe an error handler is getting called instead of your response function?
2. You aren't passing a requestID="..." attribute
The Web Connector uses a requestID="..."
attribute in the XML to be able to match up the outgoing requests with the incoming responses. You're not using it, but should be.
Change this:
<ReceivePaymentAddRq>
To this:
<ReceivePaymentAddRq requestID="' . $requestID . '">
Read more:
- http://wiki.consolibyte.com/wiki/doku.php/quickbooks_integration_php_consolibyte#i_m_getting_the_error_messageno_registered_functions_for_action
3. You're not XML encoding values
For this:
<Memo>' . $memo . '</Memo>
If $memo
is set to bla bla <something> bla bla
then you're going to end up with malformed XML:
<Memo>bla bla <something bla bla</Memo>
You should be XML-encoding these values.
4. The $memo variable is undefined
You're saying that your resulting XML looks like this:
<Memo>Paid In Full</Memo>
But when I look at your code, $memo
is undefined. This makes me suspect that the XML you pasted here is not the actual XML you're sending to QuickBooks.
Where does that variable get set to Paid In Full
? It doesn't get set anywhere in the code you pasted.
This should also be causing a PHP error/warning about an undefined variable, which could be breaking things.
5. Make sure your Web Connector is in VERBOSE mode
VERBOSE mode in the Web Connector shows a lot more data. You should be able to easily find the request in question and analyze/post the relevant logs.
6. Check the quickbooks_log and quickbooks_queue tables
What do they show/say?
What is the status (qb_status
field) and message on the queued up record (quickbooks_queue
SQL table)?
I checked _queue table, qb_status says "h" and msg field is "3120: Object "28CA9-1702576301" specified in the request cannot be found. "
– brucelin
Mar 27 at 15:57
FYI, I added the requsetID to the qbxml and the above xml is coming from the log file which means $memo is not undefined, the problem is 3120 error code
– brucelin
Mar 27 at 16:10
Ah, so you ARE getting a response from QuickBooks then! I will amend my answer with some additional details here.
– Keith Palmer Jr.
Mar 27 at 20:35
I checked the invoice and trasaction ID "28CA9-1702576301", this is correct one. I'm not sure why the log says this - "Attempting to handle error: 3120, Object "28CA9-1702576301" specified in the request cannot be found.". after request, it falls into catch error function because of this issue.
– brucelin
Mar 27 at 20:38
1
Is the invoice paid or unpaid? Is the balance on the invoice less than or equal to the amount you are applying to it? Is the customer for the invoice the same as the customer for the payment? Is the A/R account for the payment the same as the A/R account for the invoice? I'd start with those.
– Keith Palmer Jr.
Mar 27 at 20:40
|
show 2 more comments
It's hard to tell without seeing the logs (Web Connector logs in VERBOSE
mode and also the quickbooks_log
SQL table output) exactly what's wrong here, but here's at least a few things to check:
1. Are you SURE you're not getting a response from QuickBooks?
You indicate "The problem is no response from the quickbooks" but that may not be the actual case here.
Have you verified that you're not getting a response in the actual logs? For example, if an error were to occur (e.g. maybe the customer or the invoice does not exist) then QuickBooks will send back an error but your response function won't get called -- an error handler will get called instead.
Do you have something like this in your code?
$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 ...
);
(from https://github.com/consolibyte/quickbooks-php/blob/master/docs/web_connector/example_web_connector.php )
Maybe an error handler is getting called instead of your response function?
2. You aren't passing a requestID="..." attribute
The Web Connector uses a requestID="..."
attribute in the XML to be able to match up the outgoing requests with the incoming responses. You're not using it, but should be.
Change this:
<ReceivePaymentAddRq>
To this:
<ReceivePaymentAddRq requestID="' . $requestID . '">
Read more:
- http://wiki.consolibyte.com/wiki/doku.php/quickbooks_integration_php_consolibyte#i_m_getting_the_error_messageno_registered_functions_for_action
3. You're not XML encoding values
For this:
<Memo>' . $memo . '</Memo>
If $memo
is set to bla bla <something> bla bla
then you're going to end up with malformed XML:
<Memo>bla bla <something bla bla</Memo>
You should be XML-encoding these values.
4. The $memo variable is undefined
You're saying that your resulting XML looks like this:
<Memo>Paid In Full</Memo>
But when I look at your code, $memo
is undefined. This makes me suspect that the XML you pasted here is not the actual XML you're sending to QuickBooks.
Where does that variable get set to Paid In Full
? It doesn't get set anywhere in the code you pasted.
This should also be causing a PHP error/warning about an undefined variable, which could be breaking things.
5. Make sure your Web Connector is in VERBOSE mode
VERBOSE mode in the Web Connector shows a lot more data. You should be able to easily find the request in question and analyze/post the relevant logs.
6. Check the quickbooks_log and quickbooks_queue tables
What do they show/say?
What is the status (qb_status
field) and message on the queued up record (quickbooks_queue
SQL table)?
It's hard to tell without seeing the logs (Web Connector logs in VERBOSE
mode and also the quickbooks_log
SQL table output) exactly what's wrong here, but here's at least a few things to check:
1. Are you SURE you're not getting a response from QuickBooks?
You indicate "The problem is no response from the quickbooks" but that may not be the actual case here.
Have you verified that you're not getting a response in the actual logs? For example, if an error were to occur (e.g. maybe the customer or the invoice does not exist) then QuickBooks will send back an error but your response function won't get called -- an error handler will get called instead.
Do you have something like this in your code?
$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 ...
);
(from https://github.com/consolibyte/quickbooks-php/blob/master/docs/web_connector/example_web_connector.php )
Maybe an error handler is getting called instead of your response function?
2. You aren't passing a requestID="..." attribute
The Web Connector uses a requestID="..."
attribute in the XML to be able to match up the outgoing requests with the incoming responses. You're not using it, but should be.
Change this:
<ReceivePaymentAddRq>
To this:
<ReceivePaymentAddRq requestID="' . $requestID . '">
Read more:
- http://wiki.consolibyte.com/wiki/doku.php/quickbooks_integration_php_consolibyte#i_m_getting_the_error_messageno_registered_functions_for_action
3. You're not XML encoding values
For this:
<Memo>' . $memo . '</Memo>
If $memo
is set to bla bla <something> bla bla
then you're going to end up with malformed XML:
<Memo>bla bla <something bla bla</Memo>
You should be XML-encoding these values.
4. The $memo variable is undefined
You're saying that your resulting XML looks like this:
<Memo>Paid In Full</Memo>
But when I look at your code, $memo
is undefined. This makes me suspect that the XML you pasted here is not the actual XML you're sending to QuickBooks.
Where does that variable get set to Paid In Full
? It doesn't get set anywhere in the code you pasted.
This should also be causing a PHP error/warning about an undefined variable, which could be breaking things.
5. Make sure your Web Connector is in VERBOSE mode
VERBOSE mode in the Web Connector shows a lot more data. You should be able to easily find the request in question and analyze/post the relevant logs.
6. Check the quickbooks_log and quickbooks_queue tables
What do they show/say?
What is the status (qb_status
field) and message on the queued up record (quickbooks_queue
SQL table)?
edited Mar 27 at 20:39
answered Mar 27 at 11:06
Keith Palmer Jr.Keith Palmer Jr.
22.2k15 gold badges57 silver badges99 bronze badges
22.2k15 gold badges57 silver badges99 bronze badges
I checked _queue table, qb_status says "h" and msg field is "3120: Object "28CA9-1702576301" specified in the request cannot be found. "
– brucelin
Mar 27 at 15:57
FYI, I added the requsetID to the qbxml and the above xml is coming from the log file which means $memo is not undefined, the problem is 3120 error code
– brucelin
Mar 27 at 16:10
Ah, so you ARE getting a response from QuickBooks then! I will amend my answer with some additional details here.
– Keith Palmer Jr.
Mar 27 at 20:35
I checked the invoice and trasaction ID "28CA9-1702576301", this is correct one. I'm not sure why the log says this - "Attempting to handle error: 3120, Object "28CA9-1702576301" specified in the request cannot be found.". after request, it falls into catch error function because of this issue.
– brucelin
Mar 27 at 20:38
1
Is the invoice paid or unpaid? Is the balance on the invoice less than or equal to the amount you are applying to it? Is the customer for the invoice the same as the customer for the payment? Is the A/R account for the payment the same as the A/R account for the invoice? I'd start with those.
– Keith Palmer Jr.
Mar 27 at 20:40
|
show 2 more comments
I checked _queue table, qb_status says "h" and msg field is "3120: Object "28CA9-1702576301" specified in the request cannot be found. "
– brucelin
Mar 27 at 15:57
FYI, I added the requsetID to the qbxml and the above xml is coming from the log file which means $memo is not undefined, the problem is 3120 error code
– brucelin
Mar 27 at 16:10
Ah, so you ARE getting a response from QuickBooks then! I will amend my answer with some additional details here.
– Keith Palmer Jr.
Mar 27 at 20:35
I checked the invoice and trasaction ID "28CA9-1702576301", this is correct one. I'm not sure why the log says this - "Attempting to handle error: 3120, Object "28CA9-1702576301" specified in the request cannot be found.". after request, it falls into catch error function because of this issue.
– brucelin
Mar 27 at 20:38
1
Is the invoice paid or unpaid? Is the balance on the invoice less than or equal to the amount you are applying to it? Is the customer for the invoice the same as the customer for the payment? Is the A/R account for the payment the same as the A/R account for the invoice? I'd start with those.
– Keith Palmer Jr.
Mar 27 at 20:40
I checked _queue table, qb_status says "h" and msg field is "3120: Object "28CA9-1702576301" specified in the request cannot be found. "
– brucelin
Mar 27 at 15:57
I checked _queue table, qb_status says "h" and msg field is "3120: Object "28CA9-1702576301" specified in the request cannot be found. "
– brucelin
Mar 27 at 15:57
FYI, I added the requsetID to the qbxml and the above xml is coming from the log file which means $memo is not undefined, the problem is 3120 error code
– brucelin
Mar 27 at 16:10
FYI, I added the requsetID to the qbxml and the above xml is coming from the log file which means $memo is not undefined, the problem is 3120 error code
– brucelin
Mar 27 at 16:10
Ah, so you ARE getting a response from QuickBooks then! I will amend my answer with some additional details here.
– Keith Palmer Jr.
Mar 27 at 20:35
Ah, so you ARE getting a response from QuickBooks then! I will amend my answer with some additional details here.
– Keith Palmer Jr.
Mar 27 at 20:35
I checked the invoice and trasaction ID "28CA9-1702576301", this is correct one. I'm not sure why the log says this - "Attempting to handle error: 3120, Object "28CA9-1702576301" specified in the request cannot be found.". after request, it falls into catch error function because of this issue.
– brucelin
Mar 27 at 20:38
I checked the invoice and trasaction ID "28CA9-1702576301", this is correct one. I'm not sure why the log says this - "Attempting to handle error: 3120, Object "28CA9-1702576301" specified in the request cannot be found.". after request, it falls into catch error function because of this issue.
– brucelin
Mar 27 at 20:38
1
1
Is the invoice paid or unpaid? Is the balance on the invoice less than or equal to the amount you are applying to it? Is the customer for the invoice the same as the customer for the payment? Is the A/R account for the payment the same as the A/R account for the invoice? I'd start with those.
– Keith Palmer Jr.
Mar 27 at 20:40
Is the invoice paid or unpaid? Is the balance on the invoice less than or equal to the amount you are applying to it? Is the customer for the invoice the same as the customer for the payment? Is the A/R account for the payment the same as the A/R account for the invoice? I'd start with those.
– Keith Palmer Jr.
Mar 27 at 20:40
|
show 2 more comments
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55364196%2f3120-error-from-receivepaymentaddrq-php-devkit%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown