1

我正在向 IRS 提交 ACA 表格(纳税年度:2016),收到以下错误

<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>

附件是我们用来通过 A2A 发送它的 MTOM 格式。

https://www.dropbox.com/home?preview=samplemtom.txt

我也尝试将 ChecksumAugmentationNum 值设置为小写。

4

2 回答 2

0

您是否已成功传输 2015 纳税年度?我看过另一个与此问题相关的帖子,但在将 TY2015(到 AATS 或生产)或 TY2016 记录发送到 AATS 时没有遇到此问题。我的校验和计算没有改变,非常简单。

于 2017-02-24T18:04:37.760 回答
0

我有两种方法用于创建校验和:GetChecksum(string)GetMD5Hash(MD5, string). 这种方法适用于 TY2015,我希望它适用于 TY2016。IIRC,我直接从 MSDN 采用了这种方法。

string我传入GetChecksum方法的是Form Data Attachment的内容。在我的过程中,我出于审计目的将 XML 文档输出到文件系统中,因此附件是供我使用和参考的物理文件。我使用方法将附件读入string变量File.ReadAllText(string path)

在生成checksum我的进程后,还将检查数据库的校验和并返回该校验和是否存在(意味着它被另一个表单使用)。在这种情况下,我更新联系人后缀,重新生成表单数据,然后重新生成校验和;这是根据美国国税局的传输规则。

这就是目前对我有用的方法,希望这对您有所帮助。

应用程序调用者:
这就是我调用校验和计算函数/例程的方法。应该注意的是,我将每个表单数据 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();
}
于 2017-02-27T16:48:54.977 回答