Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在1个付款QUICKBOOKS API中支付多张发票_Php_Api_Quickbooks_Quickbooks Online - Fatal编程技术网

Php 如何在1个付款QUICKBOOKS API中支付多张发票

Php 如何在1个付款QUICKBOOKS API中支付多张发票,php,api,quickbooks,quickbooks-online,Php,Api,Quickbooks,Quickbooks Online,你好 我目前正在处理QUICKBOOKS API付款,正在使用他们的DevKit。它工作正常,我可以检索发票并单独付款。现在,我想创建一个功能,可以在一次付款中支付多张发票。我现在可以想的是,在所有选定的发票单独支付之前,进行循环,但我猜这不是正确的方法 这是我从DevKit得到的代码 $PaymentService = new QuickBooks_IPP_Service_Payment(); // Create payment object $Payment = new QuickBook

你好

我目前正在处理QUICKBOOKS API付款,正在使用他们的DevKit。它工作正常,我可以检索发票并单独付款。现在,我想创建一个功能,可以在一次付款中支付多张发票。我现在可以想的是,在所有选定的发票单独支付之前,进行循环,但我猜这不是正确的方法

这是我从DevKit得到的代码

$PaymentService = new QuickBooks_IPP_Service_Payment();

// Create payment object
$Payment = new QuickBooks_IPP_Object_Payment();

$Payment->setPaymentRefNum('WEB123');
$Payment->setTxnDate('2014-02-11');
$Payment->setTotalAmt(10);

// Create line for payment (this details what it's applied to)
$Line = new QuickBooks_IPP_Object_Line();
$Line->setAmount(10);

// The line has a LinkedTxn node which links to the actual invoice
$LinkedTxn = new QuickBooks_IPP_Object_LinkedTxn();
$LinkedTxn->setTxnId('{-84}');
$LinkedTxn->setTxnType('Invoice');

$Line->setLinkedTxn($LinkedTxn);

$Payment->addLine($Line);

$Payment->setCustomerRef('{-67}');

// Send payment to QBO 
if ($resp = $PaymentService->add($Context, $realm, $Payment))
{
    print('Our new Payment ID is: [' . $resp . ']');
}
else
{
    print($PaymentService->lastError());
}
如果我把他们放在一个循环中,我相信他们都会得到报酬,也会产生多次付款


还有其他更好的方法吗?请帮忙。谢谢

只需多次执行此操作:

// The line has a LinkedTxn node which links to the actual invoice
$LinkedTxn = new QuickBooks_IPP_Object_LinkedTxn();
$LinkedTxn->setTxnId('{-84}');
$LinkedTxn->setTxnType('Invoice');

$Line->setLinkedTxn($LinkedTxn);

$Payment->addLine($Line);
例如:

foreach ($invoices as $invoice_id)
{
    // The line has a LinkedTxn node which links to the actual invoice
    $LinkedTxn = new QuickBooks_IPP_Object_LinkedTxn();
    $LinkedTxn->setTxnId($invoice_id);
    $LinkedTxn->setTxnType('Invoice');

    $Line->setLinkedTxn($LinkedTxn);

    $Payment->addLine($Line);
}

我用这个代码使它工作

$c = 0;
foreach ($invoice_ids as $i) {
    $Line = new QuickBooks_IPP_Object_Line();
    $Line->setAmount($i_line_amount[$c]); //amount per line
    $LinkedTxn = new QuickBooks_IPP_Object_LinkedTxn();
    $LinkedTxn->setTxnId($i);
    $LinkedTxn->setTxnType('Invoice');
    $Line->setLinkedTxn($LinkedTxn);
    $Payment->addLine($Line);
    $c++;
  }

谢谢你的回答,先生。。我是否应该输入“$Line=new QuickBooks\u IPP\u Object\u Line();$Line->setAmount(10);”来设置每行的金额?