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

在美国版本的QuickBooks Online中成功添加客户,但在加拿大版本的QBO中通过PHP中的Intuit API获得ValidatiOn错误,php,quickbooks,intuit-partner-platform,quickbooks-online,intuit,Php,Quickbooks,Intuit Partner Platform,Quickbooks Online,Intuit,我使用的是QBO IPP PHP SDK QuickBooks V3 API。 错误是 6000:[处理您的请求时发生业务验证错误,业务验证错误:此操作所需的某些内容不再可用。其他用户可能已将其删除。请刷新屏幕以查看当前信息。] 6000:[处理您的请求时发生业务验证错误,业务验证错误:您一次只能添加或编辑一个名称。请重试。” 但是,当我通过相同的API获得客户详细信息时,我就成功地获得了所有客户详细信息 任何人都可以指引我。 对不起,我忘了告诉您我正在使用加拿大版的“速成书” 这是我添加客户的

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

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

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

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

任何人都可以指引我。 对不起,我忘了告诉您我正在使用加拿大版的“速成书”

这是我添加客户的示例代码,但我仍然无法理解错误

我正在使用V3 API

$CustomerService=新的QuickBooks\u IPP\u服务\u客户()


提前感谢

当您执行更新时,您需要先执行读取以获取实体的最新元数据和synctoken。然后您应该使用该元数据和synctoken执行更新。完整或稀疏。
怀疑您没有发送Id或正确的synctoken进行更新。请将您的请求/响应XML粘贴到此处。

在应用程序层中,员工、客户和供应商实体之间存在一个锁,以确保唯一的名称约束。当您尝试使用并行线程修改/创建多个对象时,会出现上述错误。请如果您仍然面临任何错误,您可以使用相应的请求(和API requestID)和响应XML更新您的帖子

感谢您出现此错误:

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

你需要检查你所指的一切(销售术语、税务代码),并确保它们确实存在。其中一个不存在

对于此错误:

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


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

我使用ItemRef来引用客户,而不是任何IntuitObject引用,例如sales TermReference、IncomeAccountRef等。当我将客户添加到加拿大版的QuickBooks Online()通过相同的QuickBooks API V3和相同的PHP编程代码,QuickBooks API V3生成上述错误。尽管此客户在QBO中不存在。我的代码连接和QBO客户类实例化与加拿大版本的QuickBooks Online()是准确的,因为我成功地从加拿大版的QuickBooks Online中准确地获取了客户数据。在这种情况下,我建议您为您的客户生成请求/响应xml文件,并使用代码创建。将其与您的cutomer read response进行比较。您为CA客户设置的标记不正确。非常感谢很多。我用的是销售术语reference,这就是这个错误的原因。现在我用的是ItemRef,它工作准确。
$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));
}