我正在使用网络服务器上的IPP_V3连接到Quicbooks。
我正在尝试实施example_payment_add.php
通过将付款分配到发票来添加付款时,我收到了商家验证错误。
我甚至按照以下页面中的说明更改了分配值的顺序:
(最后一点:接收行的顺序是保留行的顺序。)
注意:只需向客户添加付款而不将其分配给客户,就可以了。
错误: 6000:[处理您的请求时出现业务验证错误,业务验证错误:意外的内部错误。 (-30035)]
代码:
require_once dirname(__FILE__) . '/config.php';
require_once dirname(__FILE__) . '/views/header.tpl.php';
?>
<pre>
<?php
// Set up the IPP instance
$IPP = new QuickBooks_IPP($dsn);
// Get our OAuth credentials from the database
$creds = $IntuitAnywhere->load($the_username, $the_tenant);
// Tell the framework to load some data from the OAuth store
$IPP->authMode(
QuickBooks_IPP::AUTHMODE_OAUTH,
$the_username,
$creds);
// Print the credentials we're using
//print_r($creds);
// This is our current realm
$realm = $creds['qb_realm'];
// Load the OAuth information from the database
if ($Context = $IPP->context())
{
// Set the IPP version to v3
$IPP->version(QuickBooks_IPP_IDS::VERSION_3);
$PaymentService = new QuickBooks_IPP_Service_Payment();
// Create payment object
$Payment = new QuickBooks_IPP_Object_Payment();
$Payment->setTxnDate('2014-04-04');
// Create line for payment (this details what it's applied to)
$Line = new QuickBooks_IPP_Object_Line();
$Line->setAmount(1);
// The line has a LinkedTxn node which links to the actual invoice
$LinkedTxn = new QuickBooks_IPP_Object_LinkedTxn();
$LinkedTxn->setTxnId('10001'); //real invoice number in quickbooks
$LinkedTxn->setTxnType('Invoice');
$Line->setLinkedTxn($LinkedTxn);
$Payment->addLine($Line);
$Payment->setCustomerRef('876');
$Payment->setPaymentRefNum('8762393');
$Payment->setTotalAmt(1);
// Send payment to QBO
if ($resp = $PaymentService->add($Context, $realm, $Payment))
{
print('Our new Payment ID is: [' . $resp . ']');
}
else
{
print($PaymentService->lastError());
}
/*
print('<br><br><br><br>');
print("\n\n\n\n\n\n\n\n");
print('Request [' . $IPP->lastRequest() . ']');
print("\n\n\n\n");
print('Response [' . $IPP->lastResponse() . ']');
print("\n\n\n\n\n\n\n\n\n");
*/
}
else
{
die('Unable to load a context...?');
}
?>
</pre>
<?php
require_once dirname(__FILE__) . '/views/footer.tpl.php';
答案 0 :(得分:3)
已解决:需要使用发票的交易ID而不是发票编号。
答案 1 :(得分:1)
这几乎肯定是错误的:
$ LinkedTxn-&GT; setTxnId(&#39; 10001&#39); //快速书中的真实发票号
您应该使用QuickBooks中发票的Id值。 Id值与用户可见的Invoice reference#(DocNumber字段)不同。
您需要使用Id值。
这也没有多大意义:
$线 - &GT; setAmount(1);
...
$费付款,&GT; setTotalAmt(0.01);
如何将总付款金额仅为1便士,然后您尝试将全部美元应用于发票?
答案 2 :(得分:0)
使用httpSnooper工具(如fiddler)或启用devkit记录器,您应该尝试捕获原始请求和响应XML / JSON。
您可以使用ApiExplorer工具中的XML / JSON来调试此问题。
否则,您可以尝试从QBO ui创建付款并使用GetById端点检索相同的付款。这样您就可以找到付款对象的正确结构。
希望它有用。
由于