TIMESTAMP=$(date +%s)
NONCE=$(uuidgen)
SIGNATURE=$(printf '%s' "${TIMESTAMP}.${NONCE}." | openssl dgst -sha256 -hmac "${SECRET_KEY}" | awk '{print $NF}')
curl --get 'https://api.stablepay.co/api/v1/bills/1234567890/download_url' \
-H "Authorization: Bearer ${API_KEY}" \
-H "X-StablePay-Timestamp: ${TIMESTAMP}" \
-H "X-StablePay-Nonce: ${NONCE}" \
-H "X-StablePay-Signature: ${SIGNATURE}"
{
"bill_id": "1234567890",
"filename": "payment-2026-09-01.csv",
"content_type": "text/csv",
"download_url": "https://example.com/bills/payment-2026-09-01.csv?signature=example",
"expires_in": 600
}
{
"error": {
"code": "invalid_parameter",
"message": "请求参数不合法"
},
"request_id": "req_example",
"timestamp": 1790812800
}
{
"status": "error",
"error": "认证失败"
}
账单 API
获取账单下载地址
为当前商户已有的单个账单文件签发临时下载地址。
GET
/
api
/
v1
/
bills
/
{bill_id}
/
download_url
TIMESTAMP=$(date +%s)
NONCE=$(uuidgen)
SIGNATURE=$(printf '%s' "${TIMESTAMP}.${NONCE}." | openssl dgst -sha256 -hmac "${SECRET_KEY}" | awk '{print $NF}')
curl --get 'https://api.stablepay.co/api/v1/bills/1234567890/download_url' \
-H "Authorization: Bearer ${API_KEY}" \
-H "X-StablePay-Timestamp: ${TIMESTAMP}" \
-H "X-StablePay-Nonce: ${NONCE}" \
-H "X-StablePay-Signature: ${SIGNATURE}"
{
"bill_id": "1234567890",
"filename": "payment-2026-09-01.csv",
"content_type": "text/csv",
"download_url": "https://example.com/bills/payment-2026-09-01.csv?signature=example",
"expires_in": 600
}
{
"error": {
"code": "invalid_parameter",
"message": "请求参数不合法"
},
"request_id": "req_example",
"timestamp": 1790812800
}
{
"status": "error",
"error": "认证失败"
}
校验账单属于当前商户后,为已有账单文件签发临时下载地址。 下载地址有效期为 600 秒。调用方获得地址后直接从 OSS 下载文件。
请直接使用查询账单返回的字符串
下载地址有效期为 600 秒。该接口只签发已有文件的地址,不生成、合并或重新计算账单。
认证与请求头
使用 Bearer API Key,并同时携带以下签名请求头。GET 请求的requestBody 为空字符串,签名字符串为 {timestamp}.{nonce}.,使用商户 API Secret 计算 HMAC-SHA256 并转换为小写 hex。详见认证与签名。
string
必填
Bearer API Key,格式:
Bearer sk_live_xxx。string
必填
Unix 时间戳(秒)。必须与服务端时间相差不超过 5 分钟。
string
必填
防重放随机字符串,长度 16-64 个字符,建议每次请求使用新的 UUID。 最短 16 个字符。 最长 64 个字符。
string
必填
使用商户 API Secret 对
{timestamp}.{nonce}.{requestBody} 计算 HMAC-SHA256,结果为小写 hex。GET 请求的 requestBody 为空字符串。路径参数
string
必填
账单 ID。建议直接使用查询账单接口返回的字符串值。 匹配规则:
^[1-9][0-9]*$。成功响应
HTTP200,application/json。下载地址签发成功。
string
必填
账单 ID。
string
必填
下载文件名。
string
必填
文件媒体类型,例如
text/csv。string
必填
OSS 临时签名下载地址。该地址包含访问凭证,请勿公开或长期保存。 格式:
uri。integer
必填
下载地址剩余有效时间,单位为秒。 取值:
600。错误响应
| HTTP 状态码 | 说明 |
|---|---|
| 400 | 账单 ID 或请求参数不合法。 |
| 401 | 认证失败。 |
| 404 | 账单不存在、不属于当前商户,或账单文件不存在。 |
| 410 | 历史账单文件不符合当前商户隔离规则,无法提供下载。 |
| 422 | 账单记录存在,但账单文件尚不可用。 |
| 503 | BillProd、OSS 或其他依赖服务暂时不可用。 |
服务错误结构
object
必填
string
必填
请求 ID。
integer
必填
错误发生时间,Unix 秒。 格式:
int64。网关认证错误结构
API 网关在请求进入 PaymentProd 前可能返回以下结构的 HTTP401 响应。
string
必填
取值:
error。string
必填
认证失败原因。
bill_id。下载地址包含访问凭证,请勿公开或长期保存。
TIMESTAMP=$(date +%s)
NONCE=$(uuidgen)
SIGNATURE=$(printf '%s' "${TIMESTAMP}.${NONCE}." | openssl dgst -sha256 -hmac "${SECRET_KEY}" | awk '{print $NF}')
curl --get 'https://api.stablepay.co/api/v1/bills/1234567890/download_url' \
-H "Authorization: Bearer ${API_KEY}" \
-H "X-StablePay-Timestamp: ${TIMESTAMP}" \
-H "X-StablePay-Nonce: ${NONCE}" \
-H "X-StablePay-Signature: ${SIGNATURE}"
{
"bill_id": "1234567890",
"filename": "payment-2026-09-01.csv",
"content_type": "text/csv",
"download_url": "https://example.com/bills/payment-2026-09-01.csv?signature=example",
"expires_in": 600
}
{
"error": {
"code": "invalid_parameter",
"message": "请求参数不合法"
},
"request_id": "req_example",
"timestamp": 1790812800
}
{
"status": "error",
"error": "认证失败"
}
最后修改于 2026年10月19日
此页面对您有帮助吗?
