服务商为商家下载对账单是否只需传入二级商户smid?
支付阿杰
结论
不能只传二级商户的 smid。
smid 只用于标识要查询的二级商户。调用 alipay.data.dataservice.bill.downloadurl.query 时,通常还要提供以下内容:
bill_type:账单类型,例如交易账单。bill_date:账单日期,具体格式和可查询范围以当前接口文档为准。- 服务商应用调用接口所需的公共参数及签名信息,例如
app_id、method、charset、sign_type、timestamp、version、sign。 - 采用商家授权模式代商家调用时,还要传入该商家的
app_auth_token。
所以,smid 不能替代账单类型、账单日期或授权凭证。
为什么不能只传 smid
接口需要确认以下信息:
- 要查询哪个商家或二级商户的账单;
- 要查询哪种类型的账单;
- 要查询哪一天或哪一期的账单。
smid 只能确定第一个信息。如果缺少 bill_type 或 bill_date,接口就无法判断需要生成哪份账单的下载地址。
smid 和 app_auth_token 的用途也不同:
smid是二级商户标识;app_auth_token表示商家已授权服务商应用。
是否需要同时使用两者,要看服务商接入的产品模式、商户签约关系,以及该接口当前的代调用规则。两者不能相互替代。
推荐调用步骤
1. 确认调用身份
先确认具体的查询场景:
- 服务商应用查询自身账单;
- 服务商通过商家授权查询商家账单;
- 服务商查询其名下二级商户的账单。
如果通过商家授权代调用,应使用目标商家对应的 app_auth_token,不要误用其他商家的授权令牌。
2. 准备业务参数
业务参数至少要包含账单类型和账单日期。如果需要定位二级商户,再按照接口文档加入 smid。
示意结构如下:
{
"bill_type": "trade",
"bill_date": "2026-09-12",
"smid": "目标二级商户的smid"
}
bill_type 的可选值、bill_date 的格式,以及 smid 是否受支持或必须填写,都应以当前支付宝开放平台接口文档和实际签约产品为准。
3. 设置商家授权令牌
服务商以商家授权身份调用时,可以在支付宝 SDK 请求中设置:
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-12",
"smid": "目标二级商户的smid"
}
""");
// 仅在服务商代已授权商家调用时设置
request.putOtherTextParam("app_auth_token", "商家的app_auth_token");
AlipayDataDataserviceBillDownloadurlQueryResponse response =
alipayClient.execute(request);
不同版本的 SDK 可能采用不同方式设置 app_auth_token,请以所用 SDK 的请求类定义为准。
4. 检查返回结果
调用完成后,除了 HTTP 状态,还要检查业务响应:
if (response.isSuccess()) {
String downloadUrl = response.getBillDownloadUrl();
// 及时下载并妥善保存账单
} else {
System.out.println(response.getCode());
System.out.println(response.getSubCode());
System.out.println(response.getSubMsg());
}
注意事项
smid必须在当前服务商的可查询范围内。即使参数格式正确,也可能因为商户关系或权限校验而失败。app_auth_token必须属于目标商家,且授权范围要覆盖该接口。- 账单通常不会实时生成,查询当天账单时可能尚未出账。
- 下载地址一般有有效期,获取后应及时下载,不要长期保存后反复使用。
- 不同账单类型支持的日期格式、查询周期和历史范围可能不同。
- 如果提示“参数缺失”,应重点检查
bill_type、bill_date和公共请求参数。如果提示“无权限”或“商户关系不存在”,应重点检查app_auth_token、smid、应用权限和签约关系。 - 支付宝开放平台可能调整字段和代调用规则。正式接入前,请以当前
alipay.data.dataservice.bill.downloadurl.query接口文档、应用授权模式及对应产品的签约说明为准。
备注:内容仅供参考。
