PAYATHON 2026

支付宝交易流水生成金蝶ERP收付款单的接口文档

支付小周

结论

可以实现,但一般没有”支付宝流水一键生成金蝶收付款单”这样的通用接口。

通常分两步对接:

  1. 通过支付宝开放平台获取或下载交易账单。
  2. 按业务规则清洗、汇总和核销流水,再调用金蝶 ERP 的开放接口创建收款单、付款单或退款单。

金蝶各产品的接口并不通用。金蝶云星空、金蝶云·苍穹、EAS、KIS 等产品的认证方式、单据标识和字段结构都有差异。查找接口文档前,需要先确定具体的金蝶产品、版本和目标账套。

相关接口文档

可以先查看以下官方入口:

在支付宝侧搜索以下接口名称:

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 和动态表单接口路径,需要在对应产品的开放平台中查找财务单据接口。

注意事项

支付宝显示”交易成功”,不一定表示款项已经进入企业银行账户。生成收款单前,应先确定企业以交易日、清算日还是银行到账日作为入账日期。

也不宜将支付宝账单中的每一行机械地转换成收付款单。手续费、退款、冻结和资金划拨可能需要生成不同类型的财务单据,也可能需要按日汇总入账。具体映射规则应由财务人员确认,并先在测试账套中验证,再接入生产环境。

备注:内容仅供参考。