Манифест-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();
}
Другие вопросы по тегам