Я пытаюсь создать заказы на покупку, используя Quickbooks PHP SDK, и получаю неверную / отсутствующую ошибку параметра или, возможно, неправильный идентификатор.
Мои параметры основаны на QuickBooks API Explorer. В демонстрационной версии «Создание» заказа на поставку есть возможность создать файл по умолчанию в формате json / xml. Я думал, что это даст мне минимально необходимые параметры.
Поэтому в своем коде я создал массив заказов на покупку с этими параметрами и составил значения. Но не могу понять, что не так или отсутствует.
Несколько примеров заказов на покупку PHP QuickBooks SDK, которые я видел, используют Oauth 1.0, поэтому играть с ними не стоило моего времени, так как мое приложение использует Oauth 2.0
Код состояния: 400. Вспомогательное сообщение: Неверный сильный запрос / неверный текст запроса (получил 400, ожидаемый HTTP / 1.1 20X или перенаправление). Ответное сообщение: Неверный ссылочный IdInvalid Идентификатор ссылки: что-то, что вы пытаетесь использовать был сделан неактивным. Проверьте поля с учетными записями, клиентами, товарами, продавцами или сотрудниками.
{
"Line": [{
"Id": "1",
"Amount": 25.0,
"DetailType": "ItemBasedExpenseLineDetail",
"ItemBasedExpenseLineDetail": {
"CustomerRef": {
"value": "3",
"name": "Cool Cars"},
"BillableStatus": "NotBillable",
"ItemRef": {
"value": "38",
"name": "Garden Supplies"},
"UnitPrice": 25,
"Qty": 1,
"TaxCodeRef": {
"value": "NON"}
}
}],
"VendorRef": {
"value": "41",
"name": "Hicks Hardware"},
"APAccountRef": {
"value": "33",
"name": "Accounts Payable (A/P)"},
"TotalAmt": 25.0
}
$purchaseOrder = PurchaseOrder::create([
"Line" =>[
[
"Id" =>"0",
"Amount" => 25.0,
"DetailType" => "ItemBasedExpenseLineDetail",
"ItemBasedExpenseLineDetail"=>
[
"CustomerRef"=>
[
"value"=>"3",
"name"=>"Cool Cars"],
"BillableStatus"=> "NotBillable",
"ItemRef"=>
[
"value"=> "38",
"name"=> "Garden Supplies"],
"UnitPrice"=> "25",
"Qty"=>"1",
"TaxCodeRef"=>
[
"value"=> "NON",
]
]
]
],
"VendorRef"=>
[
"value"=>"41",
"name"=>"Hicks Hardware"
],
"APAccountRef"=>
[
"value"=>"33",
"name"=>"Accounts Payable (A/P)"
],
"TotalAmt"=> 25.0
]);$resultingpurchaseOrder = $dataService->Add($purchaseOrder);
$error = $dataService->getLastError();
if ($error != null) {
echo "The Status code is: " . $error->getHttpStatusCode() . "\n";
echo "The Helper message is: " . $error->getOAuthHelperError() . "\n";
echo "The Response message is: " . $error->getResponseBody() . "\n";
} else {
var_dump($resultingpurchaseOrder);
}
Потребовалось некоторое время, чтобы понять, но вот что я сделал, чтобы создать успешный образец Заказа на поставку в моей песочнице.
Совет, чтобы найти хороший образец Json / XML для базовых параметров PO от
Это просто пример для тестирования создания ПО, который работал для меня, опубликованный на случай, если он поможет кому-то еще.
$dataService = DataService::Configure(array(
'auth_mode' => 'oauth2',
'ClientID' => "",
'ClientSecret' => "",
'accessTokenKey' => "",
'refreshTokenKey' => '',
'QBORealmID' => "",
'baseUrl' => "https://sandbox-quickbooks.api.intuit.com"));
$OAuth2LoginHelper = $dataService->getOAuth2LoginHelper();
$accessToken = $OAuth2LoginHelper->refreshToken();
$error = $OAuth2LoginHelper->getLastError();
if ($error != null) {
echo "The Status code is: " . $error->getHttpStatusCode() . "\n";
echo "The Helper message is: " . $error->getOAuthHelperError() . "\n";
echo "The Response message is: " . $error->getResponseBody() . "\n";
return;
}
$dataService->updateOAuth2Token($accessToken);
$dataService->setLogLocation("/home/lindsay/Desktop/log");
$purchaseOrder = PurchaseOrder::create([
"ShipAddr" => [
"Id"=> "96",
"Line1"=> "Sandbox Company_US_1",
"Line2"=> "123 Sierra Way",
"Line3"=> "San Pablo, CA 87999"],
"Line" =>[
[
"Id" =>"1",
"Description" => "This is the purchasing description.",
"Amount" => 5.0,
"DetailType" => "ItemBasedExpenseLineDetail",
"ItemBasedExpenseLineDetail"=>
[
"CustomerRef"=>
[
"value"=>"4",
"name"=>"Diego Rodriguez"],
"BillableStatus"=> "NotBillable",
"ItemRef"=>
[
"value"=> "19",
"name"=> "T-Shirt"],
"UnitPrice"=> "5",
"Qty"=>"1",
"TaxCodeRef"=>
[
"value"=> "NON",
]
]
]
],
"VendorRef"=>
[
"value"=>"56",
"name"=>"Bob's Burger Joint"
],
"APAccountRef"=>
[
"value"=>"33",
"name"=>"Accounts Payable (A/P)"
],
"TotalAmt"=> 5.0,
"Memo" => "vendor message test!"
]);$resultingpurchaseOrder = $dataService->Add($purchaseOrder);
$error = $dataService->getLastError();
if ($error != null) {
echo "The Status code is: " . $error->getHttpStatusCode() . "\n";
echo "The Helper message is: " . $error->getOAuthHelperError() . "\n";
echo "The Response message is: " . $error->getResponseBody() . "\n";
} else {
var_dump($resultingpurchaseOrder);
}
Других решений пока нет …