Манифест-025 'ChecksumAugmentationNum' Проблема в.net
Я отправляю формы ACA (налоговый год:2016) в IRS, получая следующую ошибку
<ns3:FormBCTransmitterSubmissionDtl xmlns="urn:us:gov:treasury:irs:ext:aca:air:ty16" xmlns:ns2="urn:us:gov:treasury:irs:common" xmlns:ns3="urn:us:gov:treasury:irs:msg:form1094-1095BCtransmittermessage">
<ACATransmitterSubmissionDetail>
<TransmitterErrorDetailGrp>
<ns2:ErrorMessageDetail>
<ns2:ErrorMessageCd>MANIFEST-025</ns2:ErrorMessageCd>
<ns2:ErrorMessageTxt>Manifest 'ChecksumAugmentationNum' must match the IRS-calculated 'ChecksumAugmentationNum' value of the transmission</ns2:ErrorMessageTxt>
</ns2:ErrorMessageDetail>
</TransmitterErrorDetailGrp>
</ACATransmitterSubmissionDetail>
Прилагается наш формат MTOM, который мы используем для отправки через A2A.
https://www.dropbox.com/home?preview=samplemtom.txt
Я также попытался установить значение ChecksumAugmentationNum в нижнем регистре.
2 ответа
Вы успешно перешли на Налоговый год 2015? Я видел другой пост, связанный с этой проблемой, но не сталкивался с этой проблемой при отправке записей TY2015 (в AATS или Production) или TY2016 в AATS. Мой расчет контрольной суммы не изменился, и это очень просто.
У меня есть два метода, которые я использую для создания контрольной суммы: GetChecksum(string)
а также GetMD5Hash(MD5, string)
, Этот подход работал на 2015 год, и я ожидаю, что он будет работать на 2016 год. IIRC, я взял этот подход непосредственно из MSDN.
string
Я перехожу в метод GetChecksum это содержимое формы данных вложения. В моем процессе я вывожу документ XML в файловую систему для целей аудита, поэтому вложение - это физический файл, который я могу использовать и ссылаться на него. Я прочитал вложение в string
переменная с помощью File.ReadAllText(string path)
метод.
После генерации checksum
Мой процесс также проверит контрольную сумму в базе данных и вернет, существует ли контрольная сумма (имеется в виду, что она использовалась другой формой). В случае, если это так, я обновляю суффикс контакта, заново создаю данные формы и затем восстанавливаю контрольную сумму; это в соответствии с правилами IRS для передачи.
Это то, что в настоящее время работает для меня, и, надеюсь, это поможет вам.
Абоненты приложений:
Это то, что я делаю для вызова функций / процедур расчета контрольной суммы. Следует отметить, что я физически записываю каждый XML-файл данных формы в файловую систему, а затем читаю из него.
string AttachmentFileContents = "";
AttachmentFileContents = File.ReadAllText(FormDataFilePath);
string checkSumAugmentationNumber = new Checksum().GetChecksum(AttachmentFileContents);
Методы контрольной суммы:
Это два метода, которые я использую для расчета контрольной суммы.
public string GetChecksum(string stringToEncrpyt)
{
string hash = "";
using(MD5 md5Hash = MD5.Create())
{
hash = GetMD5Hash(md5Hash, stringToEncrpyt);
}
return hash;
}
private string GetMD5Hash(MD5 md5Hash, string input)
{
byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sb.Append(data[i].ToString("x2"));
}
return sb.ToString();
}