如何使用C#中的QBO API v3将付款应用于发票?

时间:2015-02-26 00:34:12

标签: c# api payment quickbooks-online invoice

如何使用C#中的QuickBooks Online API v3将付款应用于现有发票?

我尝试过以下代码:

    private void UpdateInvoice(Payment payment)
    {
        Invoice oldInvoice = cmbInvoices.SelectedItem as Invoice;
        if (oldInvoice == null) return;
        Invoice invoiceToUpdate = new Invoice();
        invoiceToUpdate.Id = oldInvoice.Id;
        invoiceToUpdate.SyncToken = oldInvoice.SyncToken;
        invoiceToUpdate.Deposit = payment.TotalAmt;
        invoiceToUpdate.DepositSpecified = true;
        invoiceToUpdate.sparse = true;
        invoiceToUpdate.sparseSpecified = true;
        invoiceToUpdate.PaymentType = PaymentTypeEnum.CreditCard;
        invoiceToUpdate.PaymentTypeSpecified = true;
        invoiceToUpdate.PaymentMethodRef = payment.PaymentMethodRef;
        invoiceToUpdate.PaymentRefNum = payment.PaymentRefNum;
        invoiceToUpdate.CustomerRef = oldInvoice.CustomerRef;
        QBO.DataService.Update(invoiceToUpdate);
    }

并且因此错误而失败:

{"ValidationException was thrown."}

我在这里明显遗漏了一些东西,或者我一定是做错了什么。错误信息是无用的,希望Intuit能够清理它。

我对Intuit为他们的QuickBooks Online API v3提出的错误文档感到非常沮丧,并希望他们能够开始清理并使其有用。此外,请在您访问时删除那些死亡的404页面。

任何帮助或指示都会很棒。

2 个答案:

答案 0 :(得分:1)

您只需创建一个付款对象并将其与发票相关联即可。它适用于我的QBO v3设置。

您正在" LinkedTxn"中链接发票。区域,所以我的InvoiceId在这个例子中将是1282。我的ProccessPayment是错误的,因为我们手动处理付款并登录QBO。

    try {
        writeFile("http://myserver.com/notes.txt", "testing massage");
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

答案 1 :(得分:0)

对于它值得尝试的东西,这件事给我带来了同样的问题。结束它不喜欢不指定行项目,即使在指定稀疏更新时也是如此。我找到了一位sdk工程师的参考资料,说只要拿最初保存的发票,修改并将其传递给api。结束至少照顾我的问题。

相关问题