使用 Postman 进行简单的 Twinfield API 请求

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

我想将销售发票与 javascript/google apps 脚本连接起来。因此我想用 Postman 测试一些东西。我知道,该 API 与 XML 配合使用,并且要获取数据,您需要使用所谓的浏览代码 100。但我一直坚持创建一个工作请求来获取销售发票数据:(

到目前为止我做了什么:

  • 阅读 Twinfield API 文档
  • 开发者门户
  • 中创建了登录信息
  • 设法使用 Postman 请求授权码:我做了一个解决方法来调整 Postman 中的参数,然后将请求 URL 粘贴到浏览器中
  • 成功请求访问令牌
  • 确定簇

我做了很多研究,但找不到任何我能理解的例子。例如

  • Postman 中的请求 URL 应该是什么样子
  • 我需要什么参数
  • 是否可以在 JavaScript 中方便地请求获取未结销售发票

如果有任何帮助,我将非常感激!

javascript xml api postman twinfield
2个回答
1
投票

试试这个

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Header>
        <Header xmlns="http://www.twinfield.com/">
            <AccessToken>{{Accescode}}</AccessToken>
            <CompanyCode>{{Company}}</CompanyCode>
        </Header>
    </soap:Header>
    <soap:Body>
        <ProcessXmlDocument xmlns="http://www.twinfield.com/">
            <xmlRequest>
                <columns code="100">
                    <column xmlns="">
                        <field>fin.trs.head.yearperiod</field>
                        <operator>between</operator>
                        <from>2021/01</from>
                        <to>2022/01</to>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.head.code</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.head.shortname</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.head.number</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.head.status</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.head.date</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.line.dim2</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.line.dim2name</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.head.curcode</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.line.valuesigned</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.line.basevaluesigned</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.line.repvaluesigned</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.line.openbasevaluesigned</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.line.invnumber</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.line.datedue</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.line.matchstatus</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.line.matchnumber</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.line.matchdate</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.line.openvaluesigned</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.line.availableforpayruns</field>
                        <visible>true</visible>
                    </column>
                    <column xmlns="">
                        <field>fin.trs.line.modified</field>
                        <visible>true</visible>
                    </column>
                </columns>
            </xmlRequest>
        </ProcessXmlDocument>
    </soap:Body>
</soap:Envelope>

编辑: 让我们从头开始,首先我假设您能够获得访问代码。 使用访问代码,您需要对以下网址执行 Postmand get 请求:https://login.twinfield.com/auth/authentication/connect/accesstokenvalidation?token={{Accescode}}

从结果中,您需要为我复制 clusterUrl,它看起来像这样:

"twf.clusterUrl": "https://api.accounting2.twinfield.com"

接下来我们需要找到公司ID,这也可以从 Postman 处获得,并在 url 中发送以下帖子:https://api.accounting2.twinfield.com/webservices/processxml.asmx?wsdl

正如您所看到的,其中包含之前的 cluserURL,因此您必须将其替换为您找到的那个。 您需要随此请求发送的 XML 信封如下:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:twin="http://www.twinfield.com/">
    <soapenv:Header>
        <twin:Header>
            <twin:AccessToken>{{Accescode}}</twin:AccessToken>
        </twin:Header>
    </soapenv:Header>
    <soapenv:Body>
        <twin:ProcessXmlString>
            <twin:xmlRequest><![CDATA[<list><type>offices</type></list>]]></twin:xmlRequest>
        </twin:ProcessXmlString>
    </soapenv:Body>
</soapenv:Envelope>

这将生成一个包含 ID 的列表,您可以从中收集数据。 要获取销售发票,您需要再次使用以下网址:

https://api.accounting2.twinfield.com/webservices/processxml.asmx?wsdl

但是这次我们将信封更改为我上面发布的第一个信封,将整个内容放入原始正文中,这应该会产生发票列表。

如果您需要更多信息,我可以尝试收集适合您的集合,但我希望这足以帮助您入门

编辑2: 关于你的第二个问题,你需要设置标头以接受xml输入,见下文 header settings


0
投票

嘿有没有人可以指导我...实际上我想知道如何使用 Twinfield API 创建客户或供应商。您能否指导我以下事项:

我应该使用什么 API 端点或 URL 在 Twinfield 中创建客户或供应商? 我应该在请求正文中使用什么 XML 结构来创建客户或供应商? 我需要在请求中包含任何特定参数(例如公司 ID、客户/供应商代码等)吗? 创建客户或供应商后,我应该期待什么类型的响应? 任何见解或例子将不胜感激!感谢您的帮助!

© www.soinside.com 2019 - 2024. All rights reserved.