2016-09-29 26 views
-1

我正在使用quick book php sdk進行quickbook在線集成。當我想嘗試創建發票時,發生以下錯誤。 在我的應用程序中添加發票記錄時出現錯誤。它在我以相同方式添加客戶的情況下工作。php:CheckNullResponseAndThrowException - 添加記錄時響應爲空還是爲空?

例外:

V3-PHP-SDK-2.4.1 /的DataService/DataService.php - 587 - CheckNullResponseAndThrowException - 響應爲零或爲空。

下面是我的代碼:

$invoiceObj = new IPPInvoice(); 
$invoiceObj->Deposit = '0'; 
$invoiceObj->AllowIPNPayment = 'false'; 
$invoiceObj->AllowOnlinePayment = 'false'; 
$invoiceObj->AllowOnlineCreditCardPayment = 'false'; 
$invoiceObj->AllowOnlineACHPayment = 'false'; 
$invoiceObj->DocNumber = '1045'; 
$invoiceObj->TxnDate = "2016-10-19"; 
$invoiceObj->Balance = '250.0'; 
$invoiceObj->CustomerRef = '4'; 
$invoiceObj->CustomerMemo = 'Thank you for your business and have a great day!'; 

$billAddr = new IPPPhysicalAddress(); 
$billAddr->Id = '2'; 
$billAddr->Line1 = '4581 Banani St.'; 
$billAddr->City = 'Dhaka'; 
$invoiceObj->BillAddr = $billAddr; 

$billEmailAddr = new IPPEmailAddress(); 
$billEmailAddr->Address = 'test'.rand(0,100).'@gmail.com'; 
$invoiceObj->BillEmail = $billEmailAddr; 

$invoiceObj->CurrencyRef = 'USD'; 
$invoiceObj->Id = '198'; 
$invoiceObj->DueDate = date(strtotime('+5 days')); 

$invoiceObj->TotalAmt = '250.0'; 
$invoiceObj->ApplyTaxAfterDiscount = 'false'; 
$invoiceObj->PrintStatus = 'NeedToPrint'; 
$invoiceObj->EmailStatus = 'NotSet'; 

$txnTaxDetail = new IPPTxnTaxDetail(); 
$txnTaxDetail->TotalTax = '0'; 

$invoiceObj->TxnTaxDetail = $txnTaxDetail; 
$invoiceObj->SyncToken = '0'; 

$customField = new IPPCustomField(); 
$customField->DefinitionId = '1'; 
$customField->Name = 'Crew #'; 
$customField->Type = 'StringType'; 

$invoiceObj->CustomField = $customField; 

try 
{ 
    $resultingInvoiceObj = $dataService->Add($invoiceObj); 
    echo "Created Invoice Id={$resultingInvoiceObj->Id}"; 
} 
catch (Exception $e) 
{ 
    echo $e->getMessage(); 

} 

回答

0
I have solved this problem. Missing following required params: 

    at least one Line record 
    Line.DetailType 
    Line.Amount 
    Line.Description 
    at least one Line.SalesItemLineDetail 
    Line.SalesItemLineDetail.ItemRef 
    Line.SalesItemLineDetail.Quantity 
    Line.SalesItemLineDetail.UnitPrice 

**Now final code :** 

$invoiceObj = new IPPInvoice(); 
    $invoiceObj->Deposit = '0'; 
    $invoiceObj->AllowIPNPayment = 'false'; 
    $invoiceObj->AllowOnlinePayment = 'false'; 
    $invoiceObj->AllowOnlineCreditCardPayment = 'false'; 
    $invoiceObj->AllowOnlineACHPayment = 'false'; 
    $invoiceObj->DocNumber = '1045'; 
    $invoiceObj->TxnDate = "2016-10-19"; 
    $invoiceObj->Balance = '250.0'; 
    $invoiceObj->CustomerRef = '4'; 
    $invoiceObj->CustomerMemo = 'Thank you for your business and have a great day!'; 

    $billAddr = new IPPPhysicalAddress(); 
    $billAddr->Id = '2'; 
    $billAddr->Line1 = '4581 Banani St.'; 
    $billAddr->City = 'Dhaka'; 
    $invoiceObj->BillAddr = $billAddr; 

    $billEmailAddr = new IPPEmailAddress(); 
    $billEmailAddr->Address = 'test'.rand(0,100).'@gmail.com'; 
    $invoiceObj->BillEmail = $billEmailAddr; 

    $invoiceObj->CurrencyRef = 'USD'; 
    $invoiceObj->DueDate = date(strtotime('+5 days')); 

    $invoiceObj->TotalAmt = '250.0'; 
    $invoiceObj->ApplyTaxAfterDiscount = 'false'; 
    $invoiceObj->PrintStatus = 'NeedToPrint'; 
    $invoiceObj->EmailStatus = 'NotSet'; 

    $Line = new IPPline(); 
    $Line->Amount = 15; 
    $Line->DetailType = 'SalesItemLineDetail'; 
    $Line->Description = 'Tst Product'; 
    $saleItemLineDetail = new IPPSalesItemLineDetail(); 
    $saleItemLineDetail->ItemRef = '1'; 
    $saleItemLineDetail->Quantity = 2; 
    $saleItemLineDetail->UnitPrice = 50; 
    $Line->SalesItemLineDetail = $saleItemLineDetail; 
    $invoiceObj->Line = $Line; 


    $txnTaxDetail = new IPPTxnTaxDetail(); 
    $txnTaxDetail->TotalTax = '0'; 

    $invoiceObj->TxnTaxDetail = $txnTaxDetail; 
    $invoiceObj->SyncToken = '0'; 

    $customField = new IPPCustomField(); 
    $customField->DefinitionId = '1'; 
    $customField->Name = 'Crew #'; 
    $customField->Type = 'StringType'; 

    $invoiceObj->CustomField = $customField; 

    try { 
     $resultingInvoiceObj = $dataService->Add($invoiceObj); 
     echo "Created Invoice Id={$resultingInvoiceObj->Id}"; 
    } catch (Exception $e) { 
     echo $e->getMessage(); 
    }