Флаги stopOnError
и continueOnError
указывают, что делать (остановить или продолжить) с оставшейся частью текущего запроса, если в текущем запросе возникает ошибка.
Например, если вы сделали это:
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="2.0"?>
<QBXML>
<QBXMLMsgsRq onError="continueOnError">
<CustomerAddRq requestID="1">
...
</CustomerAddRq>
<InvoiceAddRq requestID="2">
...
</InvoiceAddRq>
....
Вы сообщаете QuickBooks, что если в разделе CustomerAddRq
возникает ошибка, игнорируйте ее и продолжайте обработку раздела InvoiceAddRq
(по сравнению с тем, если бы вы использовали stopOnError
, он даже не пытался бы выполнить InvoiceAddRq
после обнаружения ошибки в разделе CustomerAddRq
.
Однако, если вы используете веб-коннектор правильно (а вы это делаете), вы отправляете несколько отдельных запросов, а не один пакетный запрос, как в приведенном выше примере. Это означает, что stopOnError
и continueOnError
не то, что вам нужно.
Вместо этого вам нужно обработать ошибку в вашем PHP-коде с помощью обработчика ошибок.
Добавьте функцию:
/**
* Try to handle an error
*
* @param string $requestID
* @param string $user This is the username of the connected Web Connector user
* @param string $action The action type that experienced an error (i.e. QUICKBOOKS_ADD_CUSTOMER, or QUICKBOOKS_QUERY_CUSTOMER, or etc.)
* @param string $ID The $ID value of the record that experienced an error (usually your primary key for this record)
* @param array $extra
* @param string $err If an error occurs **within the error handler**, put an error message here (i.e. if your error handler experienced an internal error), otherwise, leave this NULL
* @param string $xml
* @param string $errnum The error number or error code which occurred
* @param string $errmsg The error message received from QuickBooks
* @return boolean Return TRUE if the error was handled and you want to continue processing records, or FALSE otherwise
*/
function my_error_handler($requestID, $user, $action, $ID, $extra, &$err, $xml, $errnum, $errmsg)
{
// ...
// return true; // return TRUE if you want the Web Connector to continue to process requests
// return false; // return FALSE if you want the Web Connector to stop processing requests and report the error
}
И обязательно сообщите PHP-библиотеке QuickBooks о своей новой функции обработчика ошибок:
$errmap = array(
// This is an array mapping the error number/code to the error handler function
3070 => 'my_error_handler',
// You can also use static method error handlers if you don't like functions...
// 3070 => 'MyStaticClass::myStaticMethod',
// ... or object instant error handlers.
// 3070 => array( $MyObjectInstance, 'myMethod' ),
// You can also register a "catch-all" error handler to catch all errors:
// '*' => 'my_catchall_error_handler',
);
Больше информации:
person
Keith Palmer Jr.
schedule
07.04.2015