支付宝交易流水生成金蝶ERP收付款单的接口文档
结论
可以实现,但一般没有”支付宝流水一键生成金蝶收付款单”这样的通用接口。
通常分两步对接:
- 通过支付宝开放平台获取或下载交易账单。
- 按业务规则清洗、汇总和核销流水,再调用金蝶 ERP 的开放接口创建收款单、付款单或退款单。
金蝶各产品的接口并不通用。金蝶云星空、金蝶云·苍穹、EAS、KIS 等产品的认证方式、单据标识和字段结构都有差异。查找接口文档前,需要先确定具体的金蝶产品、版本和目标账套。
相关接口文档
可以先查看以下官方入口:
- 支付宝开放平台文档:https://opendocs.alipay.com/
- 金蝶开放平台:https://open.kingdee.com/
在支付宝侧搜索以下接口名称:
alipay.data.dataservice.bill.downloadurl.query
该接口用于获取账单文件的下载地址。支持哪些账单类型和日期范围,以及需要什么授权,应以支付宝开放平台当前文档为准。
如果使用金蝶云星空,可以在金蝶开放平台或对应产品的 WebAPI 文档中查询以下能力:
登录/身份认证
单据保存 Save
单据提交 Submit
单据审核 Audit
单据查询 ExecuteBillQuery
金蝶云星空标准单据中常见的业务对象标识有:
AR_RECEIVEBILL # 收款单
AP_PAYBILL # 付款单
这些标识并不一定适用于所有版本和二次开发环境。正式调用前,应通过金蝶 BOS 的”WebAPI”或”单据标识”工具确认实际使用的表单标识和字段标识。
推荐的处理流程
1. 获取支付宝账单
调用支付宝账单下载地址查询接口:
AlipayClient alipayClient = new DefaultAlipayClient(
gatewayUrl,
appId,
privateKey,
"json",
"UTF-8",
alipayPublicKey,
"RSA2"
);
AlipayDataDataserviceBillDownloadurlQueryRequest request =
new AlipayDataDataserviceBillDownloadurlQueryRequest();
request.setBizContent("""
{
"bill_type": "trade",
"bill_date": "2026-09-01"
}
""");
AlipayDataDataserviceBillDownloadurlQueryResponse response =
alipayClient.execute(request);
if (!response.isSuccess()) {
throw new IllegalStateException(
response.getCode() + ": " + response.getSubMsg()
);
}
String downloadUrl = response.getBillDownloadUrl();
这段示例只说明调用结构。SDK 版本、异常类型和返回字段的访问方式,应以项目实际使用的支付宝 Java SDK 为准。
下载地址通常有有效期,获取后应立即下载,不要将它保存为长期文件地址。
2. 清洗并分类流水
支付宝账单不能未经处理就逐行生成金蝶单据,至少要处理以下情况:
- 正常收款
- 退款和部分退款
- 支付宝手续费
- 资金冻结与解冻
- 同一订单的多笔资金变化
- 跨日到账
- 重复下载或重复导入
- 订单号与金蝶销售单、应收单之间的匹配
- 实收金额、订单金额和手续费之间的差额
可以使用支付宝交易号或商户订单号建立幂等键,例如:
ALIPAY:{支付宝交易号}:{业务类型}:{金额}
生成金蝶单据前,先查询该幂等键是否已经处理,避免重复创建收付款单。
3. 建立业务映射
至少需要维护以下映射关系:
| 支付宝字段 | 金蝶业务字段 |
|---|---|
| 商户订单号 | 源单编号或备注 |
| 支付宝交易号 | 外部流水号 |
| 完成时间 | 业务日期 |
| 收入金额 | 收款金额 |
| 支出金额 | 付款或退款金额 |
| 服务费 | 手续费科目或费用单据 |
| 对方账户 | 往来单位或备注 |
| 币种 | 结算币别 |
| 支付渠道 | 结算方式 |
| 支付宝账户 | 银行账号或资金账户 |
如果支付宝订单号可以对应金蝶销售订单、应收单或采购退款单,应优先采用”源单下推”或带源单关联的方式。只创建无源单收款单,可能无法自动完成应收核销。
4. 调用金蝶接口保存单据
下面是金蝶云星空常见的动态表单保存结构,仅用于说明实现思路。字段标识必须从目标账套的 WebAPI 文档中获取,不能直接复制到生产环境。
POST /K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc
Content-Type: application/json
{
"formid": "AR_RECEIVEBILL",
"data": {
"NeedUpDateFields": [],
"NeedReturnFields": [],
"IsDeleteEntry": "true",
"SubSystemId": "",
"IsVerifyBaseDataField": "false",
"IsEntryBatchFill": "true",
"ValidateFlag": "true",
"NumberSearch": "true",
"InterationFlags": "",
"IgnoreInterationFlag": "",
"IsAutoAdjustField": false,
"Model": {
"FBillTypeID": {
"FNumber": "请替换为实际单据类型编码"
},
"FDATE": "2026-09-01",
"FCURRENCYID": {
"FNumber": "PRE001"
},
"FCONTACTUNITTYPE": "BD_Customer",
"FCONTACTUNIT": {
"FNumber": "请替换为实际客户编码"
},
"FSETTLEORGID": {
"FNumber": "请替换为实际结算组织编码"
},
"FPAYORGID": {
"FNumber": "请替换为实际收款组织编码"
},
"FREMARK": "支付宝交易号:请替换为实际流水号",
"FRECEIVEBILLENTRY": [
{
"FSETTLETYPEID": {
"FNumber": "请替换为实际结算方式编码"
},
"FACCOUNTID": {
"FNumber": "请替换为实际资金账户编码"
},
"FRECTOTALAMOUNTFOR": 100.00,
"FCOMMENT": "支付宝交易收款"
}
]
}
}
}
这些字段会随金蝶版本、启用模块、单据类型和自定义字段而变化。币别编码、往来单位类型、组织字段和收款明细字段,都应以目标账套生成的 WebAPI 示例为准。
单据保存成功后,是否继续提交和审核,要根据企业的内控要求决定。生产环境一般先保存为暂存或创建状态,校验无误后再提交审核,不宜通过接口无条件自动审核。
接口响应必须校验
不能只看 HTTP 状态码来判断单据是否创建成功。金蝶接口即使返回 HTTP 200,业务校验仍可能失败。程序还应检查响应中的成功标志、错误信息、单据内码和单据编号。
示意代码如下:
JsonNode result = objectMapper.readTree(responseBody);
JsonNode responseStatus = result
.path("Result")
.path("ResponseStatus");
boolean success = responseStatus.path("IsSuccess").asBoolean(false);
if (!success) {
String errors = responseStatus.path("Errors").toString();
throw new IllegalStateException("金蝶收款单保存失败:" + errors);
}
String billId = result.path("Result").path("Id").asText();
String billNumber = result.path("Result").path("Number").asText();
实际返回层级可能随接口和版本变化,应以对应环境的响应为准。
实施前需要确认的事项
要确定准确的接口地址和请求报文,至少需要确认:
- 金蝶产品名称及版本
- 私有化部署还是公有云服务
- 目标单据是收款单、付款单、退款单还是费用单
- 是否需要关联销售订单、应收单或应付单
- 是否需要自动提交、审核和核销
- 客户、供应商、组织、币别及资金账户的匹配规则
- 支付宝手续费如何入账
- 一笔订单多次退款时如何拆单
- 金蝶是否存在自定义必录字段
- 接口账号是否具有单据新增、提交和审核权限
如果使用的不是金蝶云星空,就不能沿用上述 AR_RECEIVEBILL、AP_PAYBILL 和动态表单接口路径,需要在对应产品的开放平台中查找财务单据接口。
注意事项
支付宝显示”交易成功”,不一定表示款项已经进入企业银行账户。生成收款单前,应先确定企业以交易日、清算日还是银行到账日作为入账日期。
也不宜将支付宝账单中的每一行机械地转换成收付款单。手续费、退款、冻结和资金划拨可能需要生成不同类型的财务单据,也可能需要按日汇总入账。具体映射规则应由财务人员确认,并先在测试账套中验证,再接入生产环境。
备注:内容仅供参考。
