【发布时间】:2015-02-26 00:34:12
【问题描述】:
如何使用 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 页面。
任何帮助或指示都会很棒。
【问题讨论】:
-
我也对 QuickBooks API 非常不满意,以至于我们最终将其废弃,只从 QuickBooks 中导出我们需要的数据来自己处理。
-
@dubstylee,我明白了。问题是,我正在使用基于 REST 的 IPP v3 SDK,并且需要通过 C# Winform 应用程序使用 QuickBooks 的在线版本更新现有发票。所以,这里没有 QuickBooks 桌面交互。
-
这是旧的,所以我知道这可能已经过去了......但我实际上发现他们的错误非常简单,默认情况下他们只是没有通过 .net v3 api 冒泡.打开日志以查看请求/响应,并且很容易得到验证错误
标签: c# api payment quickbooks-online invoice