PHP Web应用对接Tally Prime实现数据双向交互的方法咨询
Tally Prime与PHP应用销售数据双向对接常见问题解答
是否必须使用TDL开发?
不需要强制依赖TDL即可完成基础的销售数据双向传输,只有特殊定制场景下才需要用到TDL开发。
无TDL对接实现方案
Tally Prime默认内置了HTTP API服务,无需额外开发TDL即可完成标准单据、主数据的读写操作:
- 首先在Tally Prime设置中开启「远程API访问」,默认服务端口为9000,支持本地/局域网内访问
- 所有数据交互通过XML格式报文完成,PHP端可直接构造符合Tally规范的XML请求,通过POST方式发送到Tally的HTTP服务地址即可
- 基础操作对应请求类型:
- 从Tally拉取销售数据:使用
EXPORT类型请求,可拉取销售订单、销售出库单、销售发票等全量/增量单据数据 - 向Tally写入销售数据:使用
IMPORT类型请求,可将PHP应用生成的销售单据、客户/商品主数据同步到Tally中
- 从Tally拉取销售数据:使用
以下是PHP端发起同步请求的极简示例:
// 构造Tally XML请求(示例为拉取所有销售订单的简化报文) $xmlRequest = <<<XML <ENVELOPE> <HEADER> <VERSION>1</VERSION> <TALLYREQUEST>Export</TALLYREQUEST> <TYPE>Data</TYPE> <ID>Sales Orders</ID> </HEADER> <BODY> <DESC> <STATICVARIABLES> <SVEXPORTFORMAT>$$SysName:XML</SVEXPORTFORMAT> </STATICVARIABLES> </DESC> </BODY> </ENVELOPE> XML; // CURL发起请求 $ch = curl_init('http://localhost:9000'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlRequest); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: text/xml']); $response = curl_exec($ch); curl_close($ch); // 解析返回的XML即可得到销售订单数据
需要用到TDL的场景
如果存在以下需求,才需要额外开发TDL配合对接:
- 需要同步Tally中自定义的非标字段、自定义单据类型
- 需要在数据同步时触发Tally侧的自定义业务规则校验、自动计算逻辑
- 超大量数据批量同步时需要做性能优化
- 需要实现不在官方默认API暴露范围内的特殊业务操作
新手对接注意事项
- 所有请求XML的字段、节点层级必须严格匹配Tally的报文规范,否则会返回解析错误
- 写入数据时建议添加唯一单据编号作为幂等标识,避免重复同步生成重复单据
- 增量同步可通过单据的创建/修改时间戳作为过滤条件,减少不必要的数据传输
内容的提问来源于stack exchange,提问作者Pritika
相关产品推荐
相关产品推荐

