简体   繁体   English

如何使用Rest API v2 with .NET将销售收据添加到QuickBooks Online中

[英]How can I add a sales receipt using the Rest API v2 with .NET into QuickBooks Online

I have tried alot to get this working. 我已经尝试了很多工作。 I finally found some code to create a sales receipt but when I try to add the sales receipt i get an error: "'', hexadecimal value 0x1F, is an invalid character. Line 1, position 1.". 我终于找到了一些代码来创建销售收据,但是当我尝试添加销售收据时,我收到一个错误:“'',十六进制值0x1F,是一个无效字符。第1行,第1位。”。 I am using Visual Web Developer. 我正在使用Visual Web Developer。 Here is the code I came up with: 这是我提出的代码:

realmId = "removed";
            accessToken = "removed";
            accessTokenSecret = "removed";
            consumerKey = ConfigurationManager.AppSettings["consumerKey"];
            consumerSecret = ConfigurationManager.AppSettings["consumerSecret"];
            dataSourcetype = IntuitServicesType.QBO;


            OAuthRequestValidator oauthValidator = new OAuthRequestValidator(accessToken, accessTokenSecret, consumerKey, consumerSecret);
            ServiceContext context = new ServiceContext(oauthValidator, realmId, dataSourcetype);
            DataServices commonService = new DataServices(context);



            Intuit.Ipp.Data.Qbo.SalesReceipt qboSalesReceipt = new Intuit.Ipp.Data.Qbo.SalesReceipt();

            //Create Header
            Intuit.Ipp.Data.Qbo.SalesReceiptHeader qboSalesReceiptHeader = new Intuit.Ipp.Data.Qbo.SalesReceiptHeader();
            qboSalesReceiptHeader.DocNumber = "abc123";
            qboSalesReceiptHeader.TxnDate = DateTime.Now;
            qboSalesReceiptHeader.TxnDateSpecified = true;
            qboSalesReceiptHeader.Note = "Sales Receipt Note";
            qboSalesReceiptHeader.CustomerId = new IdType() { idDomain = idDomainEnum.QBO, Value = "49" };

            //Set Payment Detail in Header
            /*Intuit.Ipp.Data.Qbo.PaymentDetail qboSalesReceiptHeaderPaymentDetail = new Intuit.Ipp.Data.Qbo.PaymentDetail();
            qboSalesReceiptHeaderPaymentDetail.Item = new CashPayment { Desc = "Cash Payment Ref #" };
            qboSalesReceiptHeader.Detail = qboSalesReceiptHeaderPaymentDetail;*/

            //Set Header
            qboSalesReceipt.Header = qboSalesReceiptHeader;

            //Set Line Item
            ItemsChoiceType2[] salesReceiptAttributes = { ItemsChoiceType2.ItemId, ItemsChoiceType2.UnitPrice, ItemsChoiceType2.Qty };
            object[] salesReceiptLineValues = { new IdType() { idDomain = idDomainEnum.QBO, Value = "5" }, new decimal(33), new decimal(2) };
            var salesReceiptLine = new SalesReceiptLine();
            salesReceiptLine.Amount = 66;
            salesReceiptLine.AmountSpecified = true;
            salesReceiptLine.Desc = "test " + DateTime.Now.ToShortDateString();
            salesReceiptLine.ItemsElementName = salesReceiptAttributes;
            salesReceiptLine.Items = salesReceiptLineValues;
            salesReceiptLine.ServiceDate = DateTime.Now;
            salesReceiptLine.ServiceDateSpecified = true;

            //Call IDS to Create Sales Receipt
           Intuit.Ipp.Data.Qbo.SalesReceipt addedSalesReceipt = commonService.Add(qboSalesReceipt) as SalesReceipt;
            //Intuit.Ipp.Data.Qbo.SalesReceipt addedSalesReceipt = commonService.Add(qboSalesReceipt);

            string message = "Sales receipt add complete";

            ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", message);

No matter what I do I just can't get this to work. 无论我做什么,我都无法让它发挥作用。 I really appreciate anyones help. 我非常感谢任何人的帮助。 Thank you 谢谢

Try to capture the raw XML request using some tools like fiddler. 尝试使用fiddler等一些工具捕获原始XML请求。 And then validate if the XML structure is OK(it will check the encoding issues too). 然后验证XML结构是否正常(它也将检查编码问题)。 You can try XML tools plugin of Notepad++ editor for this check. 您可以尝试使用Notepad ++编辑器的XML工具插件进行此检查。

You can test this request XML in ApiExplorer tool also. 您也可以在ApiExplorer工具中测试此请求XML。

Ref - https://developer.intuit.com/apiexplorer?apiname=V2QBO 参考 - https://developer.intuit.com/apiexplorer?apiname=V2QBO

Edit 编辑

QBO Ref - https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/v2/0400_quickbooks_online/salesreceipt QBO参考 - https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/v2/0400_quickbooks_online/salesreceipt

A sample create XML for V2 QBO 示例为V2 QBO创建XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SalesReceipt xmlns="http://www.intuit.com/sb/cdm/v2" xmlns:ns2="http://www.intuit.com/sb/cdm/qbopayroll/v1" xmlns:ns3="http://www.intuit.com/sb/cdm/qbo">
    <Header>
        <DocNumber>abc123</DocNumber>
        <TxnDate>2013-09-09-07:00</TxnDate>
        <Note>Sales Receipt Note</Note>     
        <CustomerId idDomain="QBO">1</CustomerId>
    </Header>
    <Line>
        <Id>1</Id>
        <Desc>Item1</Desc>
        <Amount>100.00</Amount>
        <Taxable>false</Taxable>
        <ItemId>3</ItemId>
    </Line>
</SalesReceipt>

Thanks 谢谢

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM