我正在提交RequestSubmissionStatusDetail美国国税局的请求.
这是我的问题.在向IRS提交以下文档时,我总是得到"无效的WS安全标题".我不知道我的请求的哪一部分对此提交不负责任.
我正在引用以下PDF(示例代码从第35页开始):
我已经在VB和C#中编写了代码.我已经用Fiddler拦截了请求,并且还使用Altova XMLSpy将原始XML请求发送到IRS端点.
这是代码,几乎是逐行的PDF,减去密钥和TCC.
POST https://la.www4.irs.gov/airp/aca/a2a/1095BC_Status_Request_AATS2016 HTTP/1.1
Content-Type: text/xml; charset=utf-8
VsDebuggerCausalityData: uIDPo1urdU71mo5BnU/TZ/Ji3p0AAAAAddUwh6B4CU6+F/jOewcN7JE6Ql8n+R1PofxFBfDEEg4ACQAA
SOAPAction: "RequestSubmissionStatusDetail"
Host: la.www4.irs.gov
Content-Length: 4044
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
<soapenv:Envelope xmlns:oas1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:us:gov:treasury:irs:msg:irstransmitterstatusrequest" xmlns:urn1="urn:us:gov:treasury:irs:ext:aca:air:7.0" xmlns:urn2="urn:us:gov:treasury:irs:common" xmlns:urn3="urn:us:gov:treasury:irs:msg:acasecurityheader">
<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<ds:Signature Id="SIG-82E7E6716E615C14D6144736030986660" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments" />
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<ds:Reference URI="#TS-82E7E6716E615C14D6144736030986559">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<InclusiveNamespaces PrefixList="wsse wsa oas1 soapenv urn urn1 urn2 urn3" xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" />
</ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<ds:DigestValue>sgPiL73lIwOppVKHHUFkuWDEcLM=</ds:DigestValue>
<!-- DigestValue from Timestamp --> …Run Code Online (Sandbox Code Playgroud) 我已经尝试了提交和作文参考指南中引用的官方副本,但没有运气(下面):
<?xml version="1.0" encoding="UTF-8"?>
<p:ACAUIBusinessHeader xmlns:p="urn:us:gov:treasury:irs:msg:acauibusinessheader"
xmlns:acaBusHeader="urn:us:gov:treasury:irs:msg:acabusinessheader"
xmlns="urn:us:gov:treasury:irs:ext:aca:air:7.0"
xmlns:irs="urn:us:gov:treasury:irs:common"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurityutility-1.0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:us:gov:treasury:irs:msg:acauibusinessheader IRSACAUserInterfaceHeaderMessage.xsd">
<acaBusHeader:ACABusinessHeader>
<UniqueTransmissionId>token</UniqueTransmissionId>
<irs:Timestamp>2016-12-31T12:00:00</irs:Timestamp>
</acaBusHeader:ACABusinessHeader>
<ACATransmitterManifestReqDtl>
<PaymentYr>2015</PaymentYr>
<PriorYearDataInd>0</PriorYearDataInd>
<irs:EIN>EIN</irs:EIN>
<TransmissionTypeCd>O</TransmissionTypeCd>
<TestFileCd>TestFileCd</TestFileCd>
<OriginalReceiptId>OriginalReceiptId</OriginalReceiptId>
<TransmitterForeignEntityInd>0</TransmitterForeignEntityInd>
<TransmitterNameGrp>
<BusinessNameLine1Txt>BusinessNameLine1Txt</BusinessNameLine1Txt>
<BusinessNameLine2Txt>BusinessNameLine2Txt</BusinessNameLine2Txt>
</TransmitterNameGrp>
<CompanyInformationGrp>
<CompanyNm>CompanyNm</CompanyNm>
<MailingAddressGrp>
<USAddressGrp>
<AddressLine1Txt>AddressLine1Txt</AddressLine1Txt>
<AddressLine2Txt>AddressLine2Txt</AddressLine2Txt>
<irs:CityNm>CityNm</irs:CityNm>
<USStateCd>AL</USStateCd>
<irs:USZIPCd>USZIPCd</irs:USZIPCd>
<irs:USZIPExtensionCd>USZIPExtensionCd</irs:USZIPExtensionCd>
</USAddressGrp>
</MailingAddressGrp>
<ContactNameGrp>
<irs:PersonFirstNm>PersonFirstNm</irs:PersonFirstNm>
<irs:PersonMiddleNm>PersonMiddleNm</irs:PersonMiddleNm>
<irs:PersonLastNm>PersonLastNm</irs:PersonLastNm>
<irs:SuffixNm>SuffixNm</irs:SuffixNm>
</ContactNameGrp>
<ContactPhoneNum>ContactPhoneNum</ContactPhoneNum>
</CompanyInformationGrp>
<VendorInformationGrp>
<VendorCd>VendorCd</VendorCd>
<ContactNameGrp>
<irs:PersonFirstNm>PersonFirstNm</irs:PersonFirstNm>
<irs:PersonMiddleNm>PersonMiddleNm</irs:PersonMiddleNm>
<irs:PersonLastNm>PersonLastNm</irs:PersonLastNm>
<irs:SuffixNm>SuffixNm</irs:SuffixNm>
</ContactNameGrp>
<ContactPhoneNum>ContactPhoneNum</ContactPhoneNum>
</VendorInformationGrp>
<TotalPayeeRecordCnt>0</TotalPayeeRecordCnt>
<TotalPayerRecordCnt>1</TotalPayerRecordCnt>
<SoftwareId>SoftwareId</SoftwareId>
<FormTypeCd>1094/1095B</FormTypeCd>
<irs:BinaryFormatCd>application/xml</irs:BinaryFormatCd>
<irs:ChecksumAugmentationNum>ChecksumAugmentationNum</irs:ChecksumAugmentationNum>
<irs:AttachmentByteSizeNum>0</irs:AttachmentByteSizeNum>
<DocumentSystemFileNm>DocumentSystemFileNm</DocumentSystemFileNm>
</ACATransmitterManifestReqDtl>
</p:ACAUIBusinessHeader>
Run Code Online (Sandbox Code Playgroud)
当然,当您提交自己的信息并在ISS-UI AATS 2016网站上提交时,它只是说:
1 error has occurred. See below for more …Run Code Online (Sandbox Code Playgroud) 我试图将引用添加到我的安全标题,并遇到一个相当普遍的错误:
格式错误的参考元素
我尝试了以下类似的结果:
ID的元素作为的URI所述的Reference目的.XmlElement对象到Reference通过LoadXml()方法.我正在XmlElement使用此StackOverflow帖子GetIdElement上的重载找到检索引用.当我传入一个空字符串作为时URI,ComputeSignature()方法SignedXml按预期工作.但是,我需要添加最多3个对安全标头的引用.
更新#1
感谢这篇博文,我能够从中创建简化版本,我相信导致我的问题的是使用Namespace属性和前缀.
更新#2
看起来好像元素Id属性上的命名空间声明<Timestamp>导致发生此错误.
更新#3
我认为我有这个工作.请参阅下面的回答帖子.
工作示例:
请注意,Id XAttribute定义的命名空间不起作用; 而Id XAttribute没有定义的命名空间确实有效.
private void CreateSecurityAndTimestampXML(string fileName)
{
TimestampID = "TS-E" + GUID.NewGuid();
DateTime SecurityTimestampUTC = DateTime.UtcNow;
XDocument xdoc = new XDocument(
new XElement(wsse + "Security",
new XAttribute(XNamespace.Xmlns + "wsse", wsse.NamespaceName), …Run Code Online (Sandbox Code Playgroud) 尝试通过BulkRequestTransmitter Web服务提交时,我收到以下错误.对于此消息,组合指南不太有用,当我将SOAP XML与Composition Guide中的SOAP进行比较时,它们似乎是一对一的.我希望另一组眼睛能够看到问题所在.
消息格式不正确和/或无法解释.请查看位于https://www.irs.gov/for-Tax-Pros/Software-Developers/Information-Returns/Affordable-Care-Act-Information的"AIR提交组合和参考指南"第3节中概述的XML标准.-Return-AIR-Program,更正任何问题,然后重试.
我试过的:
base64string格式提交表格数据(如此提交内容).ds为Signature元素添加了前缀.使用此SO帖子以便为Signature元素添加前缀.MIME的BulkTransmitterService请求的格式.HttpWebRequest对象发送; 2.)通过WSDL导入到项目的发送提交请求Service Reference,使用自定义编码器GZip and Mtom Encoding并手动创建SOAP状态请求所需的XML(通过发送HttpWebRequest).更新#1
根据一些新增内容更新了请求.
ds为Signature元素添加了前缀.更新#2
我开始SOAP在Visual Studio的新实例中手动创建.xml文件,根据需要导入模式引用.我在任何类型的应用程序创建之外这样做.
通过这样做,我能够SOAP通过我的应用程序找到一些额外的错误(感谢intellisense!).我发现的错误是在Manifest XML中,因为它们不符合IRS模式.
我将在接下来的24小时内查看这些内容并进行相应更新.
urn:MailingAddressGrp应具有的任何一个孩子urn:USAddressGrp或urn:ForeignAddressGrp.那个孩子应该包含适当的地址元素.我的代码目前缺少直接的孩子urn:MailingAddressGrp.urn1:DocumentSystemFileNmof 的值Form1094C_Request_[TCC]_yyyyMMddThhmmssfffZ.xml不正确.我还不完全确定它应该是什么.