IQ Retail API не возвращает данные счета

Я пытаюсь отправить запрос на счет-фактуру на IQIntAPI и получаю следующее сообщение об ошибке.

<?xml version="1.0" encoding="UTF-8"?>
<IQ_API_Result>
   <IQ_API_Error>
      <IQ_Error_Code>5</IQ_Error_Code>
      <IQ_Error_Description>Unable to open Data Tables for Company [FMC]</IQ_Error_Description>
      <IQ_Error_Data>
         <IQ_Error_Data_Item>
            <IQ_Error_Code>7</IQ_Error_Code>
            <IQ_Error_Description>IQ_User_Password Is Invalid</IQ_Error_Description>
            <IQ_Error_Extended_Data />
         </IQ_Error_Data_Item>
         <IQ_Error_Data_Item>
            <IQ_Error_Code>5</IQ_Error_Code>
            <IQ_Error_Description>Unable to open Data Tables for Company [FMC]</IQ_Error_Description>
            <IQ_Error_Extended_Data />
         </IQ_Error_Data_Item>
      </IQ_Error_Data>
   </IQ_API_Error>
</IQ_API_Result>

Company_Number, IQ_Terminal_Number, IQ_User_Number и IQ_User_Password верны для пользователя API, который я пробовал запустить REST Server, давая все права доступа к папке компании, но API по-прежнему выдает ту же ошибку. Ниже приведена часть моего исходного кода:

IntPtr FResult;
            string FResultString;
            int FResultLength;
            string FMessage;
            int FMessageLength;
            int FCallResult;

            StringWriter FStringWriter = new StringWriter();

            using (XmlWriter FWriter = XmlWriter.Create(FStringWriter))
            {
                FWriter.WriteStartDocument();

                FWriter.WriteStartElement("IQ_API");
                FWriter.WriteStartElement("IQ_API_Request_Document_Invoice");
                FWriter.WriteElementString("IQ_Company_Number", "FMC");
                FWriter.WriteElementString("IQ_Terminal_Number", "1");
                FWriter.WriteElementString("IQ_User_Number", "100");
                FWriter.WriteElementString("IQ_User_Password", "KIDD");
                FWriter.WriteEndElement(); //IQ_API_Request_Stock                   
                FWriter.WriteEndElement(); //IQ_API                
                FWriter.WriteEndDocument();
                FWriter.Flush();
            }


            FMessage = FStringWriter.ToString();
            FMessageLength = FMessage.Length;
            FResultLength = 0;

            FCallResult = IQ_API_Request_Document_Invoice(FMessage, FMessageLength, out FResult, ref FResultLength);
            FResultString = Marshal.PtrToStringAnsi(FResult);

            if (FCallResult != 0)
            {
                MessageBox.Show("An Error Occurred. Error Code [" + FCallResult.ToString() + "]");
            }
            lstResult.Text = FormatXML(FResultString.Substring(0, FResultLength));

Где я могу ошибиться в исходном коде или настройке IQ Retail?

1 ответ

Мой ответ может быть очень поздним, но я надеюсь, что мой ответ поможет следующему человеку в будущем решить эту проблему.

Если вы используете «IQEntAPITest.exe» , который обычно находится в этом каталоге

C:\IQRetail\IQEnterprise\IQEntAPITest.exe

или где бы вы ни устанавливали IQ, вы можете использовать свой пароль как есть. IQEntAPITest преобразует пароль в фоновом режиме для вас в SHA1, поэтому вы можете использовать свой прямой пароль.

В этом случае вы не используете IQEntAPITest, поэтому вам нужно будет SHA1 ввести свой пароль и убедиться, что буквы во вновь сгенерированном SHA1-пароле находятся в верхнем регистре. Скопируйте и вставьте этот пароль в свой код. Вы должны быть в порядке.

Другие вопросы по тегам