Добавить учетную запись IPP — учетная запись недействительна

Я пытаюсь добавить банковский счет в QuickBooks Online с помощью IPP. Мой код не работает и говорит, что учетная запись недействительна. Вот мой код:

            Account account = new Account();
            account.Desc = "Desc";
            account.Name = "Checking2";
            account.Type = AccountTypeEnum.Revenue;
            account.TypeSpecified = true;
            account.Subtype = AccountSubtypeEnum.Bank.ToString();
            dataServices.Add(account);

Нужно ли добавлять поля? Я также получаю сообщения о том, что учетная запись с таким именем существует, однако я ее не вижу.

Я не вижу XML в своем журнале:

            OAuthRequestValidator oauthValidator = new OAuthRequestValidator(accessToken, accessTokenSecret, ConfigurationManager.AppSettings["consumerKey"].ToString(), ConfigurationManager.AppSettings["consumerSecret"].ToString());
        ServiceContext context = new ServiceContext(oauthValidator, accessToken, companyID, IntuitServicesType.QBO);
        context.EnableServiceRequestsLogging = true;
        context.IdsLogger = new MyCustomLogger();
        dataServices = new DataServices(context);
        return "OK";


public class MyCustomLogger : ILogger
{
public MyCustomLogger()
{
}

public string ClearLog()
{
    try
    {
        string path = HttpContext.Current.Server.MapPath("/qblog.txt");

        if (File.Exists(path))
        {
            File.Delete(path);
        }

        return "OK";

    }
    catch (Exception ex)
    {
        return ex.ToString();
    }
}

public void Log(TraceLevel idsTraceLevel, string messageToWrite)
{
    string level = idsTraceLevel.ToString();
    WriteToLog(new ErrorMessage(MessageSeverity.Error, "QBFS", messageToWrite));
}

public string WriteToLog(ErrorMessage message)
{
    if (!String.IsNullOrEmpty(message.Message))
    {
        string path = HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath + "/qblog.txt");
        FileStream fileStream = null;

        //If the file exists, then append it
        if (File.Exists(path))
        {
            fileStream = new FileStream(path, FileMode.Append);
        }
        else
        {
            fileStream = new FileStream(path, FileMode.OpenOrCreate);
        }
        StreamWriter sw = new StreamWriter(fileStream);
        try
        {
            sw.WriteLine(String.Format("{0} : {1} {2} {3}", message.ApplicationName, message.Severity, DateTime.Now, message.Message));
            return "OK";
        }
        //If there is an error, just do nothing. Don't stop.
        catch (Exception ex)
        {
            return ex.ToString();
        }
        finally
        {
            sw.Close();
            fileStream.Close();
        }

    }

    return "Message is null or empty";
}

}

Вот мой xml-запрос:

<?xml version="1.0" encoding="utf-8"?><q1:Account xmlns="http://www.intuit.com/sb/cdm/qbo" xmlns:q1="http://www.intuit.com/sb/cdm/v2"><q1:Name>Checking</q1:Name><q1:Desc>Desc</q1:Desc><q1:Subtype>Bank</q1:Subtype></q1:Account>

Вот мой ответ:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><FaultInfo xmlns="http://www.intuit.com/sb/cdm/baseexceptionmodel/xsd"><Message>Another account is already using this name. Please use a different name.</Message><ErrorCode>BAD_REQUEST</ErrorCode><Cause>-11202</Cause></FaultInfo>

person Joseph Anderson    schedule 08.05.2013    source источник
comment
Пожалуйста, зарегистрируйте запрос/ответ: ippdocs.intuit.com/0025_QuickBooksAPI/0055_DevKits/ В учетных записях QBO нет типа, только подтип. См.: ippdocs.intuit.com/0025_QuickBooksAPI/0050_Data_Services/v2/   -  person Peter Lavelle    schedule 08.05.2013
comment
Спасибо, но где я могу увидеть XML? Его нет ни в qblog.txt, ни в SDKTraceLog.log.   -  person Joseph Anderson    schedule 08.05.2013
comment
Включите журнал запросов/ответов, который будет записывать их на диск. ippdocs.intuit.com/0025_QuickBooksAPI/0055_DevKits/   -  person Peter Lavelle    schedule 08.05.2013


Ответы (1)


Мне нужно было указать открытие и текущий баланс с истинными переменными:

            ac = new Account();
            ac.Desc = "Desc";
            ac.Name = "Testy";
            ac.Subtype = QboAccountDetailTypeEnum.Checking.ToString();
            ac.OpeningBalanceDate = DateTime.Now;
            ac.OpeningBalanceDateSpecified = true;
            ac.CurrentBalance = 0;
            ac.CurrentBalanceSpecified = true;
            dataServices.Add(ac);

Мой подтип также был неправильным. Мне нужно было использовать QboAccountDetailTypeEnum.

person Joseph Anderson    schedule 09.05.2013