在美国版本的QuickBooks Online中成功添加客户,但在加拿大版本的QBO中通过PHP中的Intuit API


Add customer successfully in US version of QuickBooks Online but getting validatiuon error in Canadian version of QBO through Intuit API in PHP

我使用的是QBO IPP PHP SDK QuickBooks V3 API。错误是

"6000:[在处理您的请求时发生了业务验证错误,业务验证错误:此操作所需的某些内容已不可用。其他用户可能已将其删除。请刷新屏幕以查看当前信息。]">

6000:[在处理您的请求时发生了业务验证错误,业务验证错误:您一次只能添加或编辑一个名称。请重试

但当我通过相同的API获得客户详细信息时,我成功地获得了所有客户详细信息。

任何人都可以指引我。对不起,我忘了告诉你我用的是加拿大版的快速图书https://ca.qbo.intuit.com".

这是我为Add客户提供的示例代码,但错误对我来说仍然无法理解

我正在使用V3 API

$CustomerService=新QuickBooks_PP_Service_Customer((;

$Customer = new QuickBooks_IPP_Object_Customer();
$Customer->setTitle('MR');
$Customer->setGivenName('Abdul');
$Customer->setMiddleName('Hanan');
$Customer->setFamilyName('Cheema');
$Customer->setFullyQualifiedName('FullyQualifiedName cheema');
$Customer->setDisplayName('Abdul Hanan Cheema ' . mt_rand(0, 1000));
    $Customer->setCompanyName('Seed Corporation');
    $Customer->setPrintOnCheckName('PrintOnCheckName See');
    $Customer->setActive('1');
    $Customer->setDefaultTaxCodeRef('12');
    $Customer->setTaxable('0');
    $Customer->setJob('jobSee');
    $Customer->setBillWithParent('0');
    $Customer->setBalance('100');
    $Customer->setBalanceWithJobs('0');
    $Customer->setCurrencyRef('CAD');
    $Customer->setPreferredDeliveryMethod('Email');
   // $Customer->setJob('jobSee');

// Terms (e.g. Net 30, etc.)
$Customer->setSalesTermRef(4);
// Phone #
$PrimaryPhone = new QuickBooks_IPP_Object_PrimaryPhone();
$PrimaryPhone->setFreeFormNumber('860-532-0099');
$Customer->setPrimaryPhone($PrimaryPhone);
// Mobile #
$Mobile = new QuickBooks_IPP_Object_Mobile();
$Mobile->setFreeFormNumber('860-532-0099');
$Customer->setMobile($Mobile);
// Fax #
$Fax = new QuickBooks_IPP_Object_Fax();
$Fax->setFreeFormNumber('860-532-0099');
$Customer->setFax($Fax);
// Bill address
$BillAddr = new QuickBooks_IPP_Object_BillAddr();
$BillAddr->setLine1('Office#2 Ali Tower');
$BillAddr->setLine2('GUlburg3');
$BillAddr->setCity('Lahore');
$BillAddr->setCountrySubDivisionCode('PK');
$BillAddr->setPostalCode('44000');
$Customer->setBillAddr($BillAddr);
// Email
$PrimaryEmailAddr = new QuickBooks_IPP_Object_PrimaryEmailAddr();
$PrimaryEmailAddr->setAddress('support@consolibyte.com');
$Customer->setPrimaryEmailAddr($PrimaryEmailAddr);
if ($resp = $CustomerService->add($Context, $realm, $Customer))
{
    print('Our new customer ID is: [' . $resp . '] (name "' . $Customer->getDisplayName() . '")');
}
else
{
    print($CustomerService->lastError($Context));
}

提前感谢

对于此错误:

"6000:[在处理您的请求,业务验证错误:需要执行此操作不再可用。其他用户可能已将其删除。请刷新您的屏幕以查看当前信息。]">

你需要检查你所指的一切(SalesTerm、TaxCode(,并确保它们确实存在。其中一个没有。

对于此错误:

"6000:[在处理您的请求,业务验证错误:您只能添加或编辑一个名称一次。请再试一次。">

确保一次只添加/编辑一件事。

进行更新时,需要先进行读取,以获取实体的最新元数据和synctoken。然后您应该使用它来进行更新。完全或稀疏。怀疑您没有发送用于更新的Id或正确的同步令牌。请在此处粘贴您的请求/响应xml。

在应用层中,Employee、Customer和Vendor实体之间有一个锁,以确保唯一的名称约束。当您尝试使用并行线程修改/创建多个对象时,就会出现上述错误。请对以上3个名称实体依次调用API。如果您仍然面临任何错误,您可以使用相应的请求(和API请求ID(和响应XML来更新您的帖子。

感谢

我使用ItemRef来引用Customer,而不是AnyIntuitObject引用,例如销售条款引用、IncomeAccountRef等