首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用C#中的QBO接口v3对发票进行支付?

如何使用C#中的QBO接口v3对发票进行支付?
EN

Stack Overflow用户
提问于 2015-02-26 08:34:12
回答 2查看 2.1K关注 0票数 3

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

我已经尝试了以下代码:

代码语言:javascript
复制
    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);
    }

它会失败,并显示以下错误:

代码语言:javascript
复制
{"ValidationException was thrown."}

我显然遗漏了什么,或者我一定是做错了什么。错误消息是无用的,希望Intuit能将其清除。

我对Intuit为他们的QuickBooks Online API v3发布的糟糕的文档感到相当沮丧,希望他们能开始清理它,让它变得有用。另外,请同时删除那些死掉的404页。

任何帮助或指点都是很棒的。

EN

回答 2

Stack Overflow用户

发布于 2016-02-05 00:26:57

您只需要创建一个payment对象并将其与发票相关联。它成功地为我的QBO v3设置工作。

您将在"LinkedTxn“区域中链接发票,因此在本例中,我的InvoiceId为1282。我的ProccessPayment是假的,因为我们正在手动处理付款和登录QBO。

代码语言:javascript
复制
Payment p = new Payment
{
               PaymentRefNum = "73453",
               PaymentTypeSpecified = true,
               PaymentType = PaymentTypeEnum.CreditCard,
               UnappliedAmt = 0,
               UnappliedAmtSpecified = true,
               TotalAmt = amount,
               TotalAmtSpecified = true,
               ProcessPayment = false,
               ProcessPaymentSpecified = true,
               TxnDateSpecified = true,
               TxnDate = charge.Created,
               CurrencyRef = new ReferenceType { name = "US Dollar", Value = "USD" },
               Line = new Line[] { new Line
               {
                              Amount = amount,
                              AmountSpecified = true,
                              DetailType = LineDetailTypeEnum.PaymentLineDetail,
                              DetailTypeSpecified = true,
                              LinkedTxn = new LinkedTxn[] { new LinkedTxn { TxnId = "1282", TxnType = "Invoice" } } }
               },
               CustomerRef = new ReferenceType { Value = "123" }
};
票数 1
EN

Stack Overflow用户

发布于 2015-10-01 06:24:29

值得一试的是,这件事给我带来了同样的问题。最后,它不喜欢不指定行项目,即使指定了稀疏更新。我发现了sdk工程师的引用,他说只需接受最初保存的发票,修改并将其传递给api。最终至少解决了我的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28732437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档