我们使用IPP服务在QuickBooks Online中推送/获取数据。我们在创建BillPayment
时遇到了问题。提供的例子中没有“添加BillPayment”(/ docs / partner_platform / example_app_ipp_v3)。
除了Line
对象外,我们设法使所有变量都正确。这有点令人困惑,因为有一个Payment
对象。
你如何进行?这类交易是否有现有的工作/完整例子?
我们尝试了以下代码(复制了Payment
例程代码)来添加Line
对象:
$Line = new QuickBooks_IPP_Object_Line();
$Line->setAmount(10);
$LinkedTxn = new QuickBooks_IPP_Object_LinkedTxn();
$LinkedTxn->setTxnId('{-84}'); //Is this the Bill Ref ID?
$LinkedTxn->setTxnType('Bill');
$Line->setLinkedTxn($LinkedTxn);
$BillPaymentObject->addLine($Line);
Payment
个对象变量:
生成的错误表明应提供帐户。该文档包含APAccountRef
和CCAccountRef
,但我们尝试应用它们但失败了。该错误不提供有关处于错误状态的Line
对象或Payment
对象的信息。
6000: [A business validation error has occurred while processing your request, Business Validation Error: Vous devez sélectionner un compte pour cette opération.]
(您必须为此操作选择一个帐户)
上次请求XML:
<billpayment xmlns="http://schema.intuit.com/finance/v3">
<docnumber>11</docnumber>
<txndate>2014-06-14</txndate>
<vendorref>8</vendorref>
<paytype>CreditCardPayment=10</paytype>
<creditcardpayment>1111222233334444</creditcardpayment>
<ccaccountref>15</ccaccountref>
<totalamt>1.50</totalamt>
<line xmlns="http://schema.intuit.com/finance/v3">
<amount>10</amount>
<linkedtxn xmlns="http://schema.intuit.com/finance/v3">
<txnid>11</txnid>
<txntype>Bill</txntype>
</linkedtxn>
</line>
</billpayment>
完整的PHP代码例如没有AUTH部分(看哪):
$str_service = 'QuickBooks_IPP_Service_'.$_REQUEST['type'];
$str_object = 'QuickBooks_IPP_Object_'.$_REQUEST['type'];
//Création d'un item
$Service = new $str_service();
$Object = new $str_object();
$arr_excluded_key = array('token', 'type', 'arr_item', 'billAddrLine1', 'billAddrLine2', 'billAddrCity', 'billAddrCountrySubDivisionCode', 'billAddrPostalCode', 'primaryPhone', 'fax', 'mobile');
//Boucle pour les set
foreach($_REQUEST as $key => $value){
if(!in_array($key, $arr_excluded_key)){
$str_method = 'set'.ucfirst($key);
$Object->$str_method($value);
}
}
switch($_REQUEST['type']){
case 'BillPayment':
foreach($_REQUEST['arr_item'] as $item){
$Line = new QuickBooks_IPP_Object_Line();
$Line->setAmount(10); //Static for testing purposes
// The line has a LinkedTxn node which links to the actual bill
$LinkedTxn = new QuickBooks_IPP_Object_LinkedTxn();
$LinkedTxn->setTxnId('{-11}'); //Static for testing purposes
$LinkedTxn->setTxnType('Bill');
$Line->setLinkedTxn($LinkedTxn);
$Object->addLine($Line);
}
break;
}
//Response
#$Service->add($Context, $realm, $Object);
#echo $Service->lastRequest($Context);exit;
if ($resp = $Service->add($Context, $realm, $Object)){
print($resp);
}
else{
print($Service->lastError($Context));
}
这是发送的查询(它是真实的网址,它应该用于测试目的):http://dev.magikweb.ca/magik-net/quickbooks/save.php?token=aaabbbcccddd1234&type=BillPayment&docNumber=11&txnDate=2014-06-14&vendorRef=8&payType=CreditCardPayment=10&CreditCardPayment=1111222233334444&CCAccountRef=15&totalAmt=1.50&arr_item[0][amount]=0.75&arr_item[0][txnId]=11&arr_item[0][amount]=0.75&arr_item[0][txnId]=11
答案 0 :(得分:0)
如果错误建议您指定帐户:
(您必须为此操作选择一个帐户)
我要尝试的第一件事是指定一个帐户。参考Intuit的文档:
您会看到APAccountRef
节点允许您指定整个帐单付款的帐户。
所有QuickBooks_IPP_Object_*
类都有完全镜像Intuit的文档/ XML节点名称的方法。
因此,如果您看到名为APAccountRef
的XML节点将成为相应的方法:
->setAPAccountRef($ref);
->getAPAccountRef();
您是否尝试过指定APAccountRef
?
关于这个:
付款对象变量: * docNumber * txnDate * vendorRef ...
我不确定你从哪里得到 - 他们是不正确的。正确的节点名称是:
XML 区分大小写,因此请确保使用正确的大小写,否则您将收到错误。
关于这个:
该文档包含APAccountRef和CCAccountRef,但我们尝试应用它们并失败。
你到底是怎么回事&#34;?你的代码是什么样的?发送到Intuit的XML是什么样的?您是否收到相同的错误或错误?
我们真的需要更多细节来帮助。
关于这个:
你如何进行?
排除故障的最佳方法是:
发布所有代码,以便我们测试并重现问题
发布您发送给Intuit的XML,以便我们查看正在进行的操作(您可以在调用print($Service->lastRequest($Context));
方法后调用->add(...)
来获取此信息。