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-пароле находятся в верхнем регистре. Скопируйте и вставьте этот пароль в свой код. Вы должны быть в порядке.