EBICS 3.0 架构 H005 [EBICS_INVALID_XML] 根据 EBICS XML 架构,XML 无效

问题描述 投票:0回答:1

我尝试实施 EBICS 3.0 通信,但无法正确发送我的 INI 请求。

我使用 NodeJS Ebics 客户端 (https://github.com/eCollect/node-ebics-client) 我尝试编辑以使用 H005 架构,但当我尝试发送请求时,根据 EBICS XML 架构错误,我收到 [EBICS_INVALID_XML] XML invalid。

有生成的 XML(当然有假数据):

<?xml version="1.0" encoding="utf-8"?>
<ebicsUnsecuredRequest xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:org:ebics:H005" Version="H005" Revision="1">
    <header authenticate="true">
        <static>
            <HostID>EBIXQUAL</HostID>
            <PartnerID>123456789987654321</PartnerID>
            <UserID>123456789987654321</UserID>
            <Product Language="en">Node Ebics Client 0.0.7</Product>
            <OrderDetails>
                <AdminOrderType>INI</AdminOrderType>
            </OrderDetails>
            <SecurityMedium>0000</SecurityMedium>
        </static>
        <mutable />
    </header>
    <body>
        <DataTransfer>   <OrderData>eJx1k1lzolAQhf9Kinmk4r2ACFhICsQFESGs4hsEZAmbLIL8+skkU06s1LzdPue71VXdp9mXIc+ermHdJGWxQLAJRJ7C4q0MkiJaIF17fqaRF441kqjw2q4Otc6Xw5taB2Eteq339PG7aOZBs0Ditq3mAPR9P+mJSVlHAIcQAsiADyZokugX8kU/oKGfvDWftAEhhvzoJBXnkmO/3raXdSHHBs1cN/iHWimDLusajt/7qsQ7VHydVqOkJnKTtPv49YrpB9MWNmhxrVtHX+W6fG12Y4pT7/WJSgyyEEZBURIvJ0+nYZrKnQnOrUTtYmy1tnHNOZY1mJl8VKK5WsFj1jPO8XxBz2mkudTa8Zshv6nQnV2EHQZeB95tUmFDWZ0f3jK1qPm1CqjKoqnzoAzVsBSnbtXsyBNJDISH4Wjn5XQa69aQyrHDZ8RYjpniXpaR2+CQ34trK+xRu98ymxtPboVYEGVXpse1MuZaKB5WiYvtKw+QaW8ykS+mEmr0obaMs2p/TYAt2rLvCGanCdXNl6/mJqiWbUq1lrIZ9FxhZDXV9p30vj1OvT19842Lt61O64OmWu+6jqZvCxZ8G/Kfga+GqizCouX4V174dO/KZ/WwIDPJQ6P18orDIcY8Q+YZp0wMziGcY9iEoYgTC/4xLHjY9j0P9ldGOR7CGQt+yN+kh+R4dVuEtSRyGE5MyRlFMwxNzcgpgWMfne4uazX/pf5aPzrcr4D7DcBUGOc=</OrderData>
        </DataTransfer>
    </body>
</ebicsUnsecuredRequest>

对我来说,该文档的结构似乎是正确的。不是吗? 这个 XML 文档有什么问题?

架构似乎就在那里https://github.com/openyard/ebics/tree/master/xsd/h005

有人尝试过在nodeJS中实施新标准吗? 如果是的话请反馈

谢谢

node.js xml banking ebics
1个回答
1
投票

要使其与 EBICS 3.0 一起使用,请确保在您的 OrderData 中使用 S002,例如:

<?xml version="1.0" encoding="UTF-8"?>
<SignaturePubKeyOrderData xmlns="http://www.ebics.org/S002" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:s001="http://www.ebics.org/S002" xsi:schemaLocation="http://www.ebics.org/S002 ebics_signature_S002.xsd">
    <SignaturePubKeyInfo>
        <ds:X509Data>
            <ds:X509Certificate>...</ds:X509Certificate>
        </ds:X509Data>
        <SignatureVersion>A005</SignatureVersion>
    </SignaturePubKeyInfo>
    <PartnerID>XYZ</PartnerID>
    <UserID>ABC</UserID>
</SignaturePubKeyOrderData>

还要确保您的证书已正确创建。 例如:在 WSL(在 Windows 10+ 中)或使用 openssl 的 Linux 下:

sudo apt-get install openssl
openssl genrsa -out /mnt/c/Temp/auth.pem 2048
openssl req -new -key /mnt/c/Temp/auth.pem -out /mnt/c/Temp/auth.csr
openssl x509 -req -days 365 -in /mnt/c/Temp/auth.csr -signkey  /mnt/c/Temp/auth.pem -out  /mnt/c/Temp/auth.crt

然后读取您的 auth.crt 文件。 使用 BouncyCastle,可以通过(C# 中的示例)来实现:

 cert = new X509Certificate2(@"c:/Temp/sign.crt");
© www.soinside.com 2019 - 2024. All rights reserved.