支付宝支付下单接口开票信息参数问题
结论
-
在
alipay.trade.page.pay的开票明细中:-
code是商家侧用于标识商品或服务的编码,不能直接当作税收分类编码。 -
sumPrice是当前明细行的商品总价,不是含税单价。 -
单价填写
price,数量填写num。一般应满足:[ sumPrice = price \times num ]
sumPrice是否含税,不能只看字段名称。具体应以当前接口文档、商户开票配置和实际开票系统采用的金额口径为准。 -
-
如果当前
alipay.trade.wap.pay接口文档的业务参数中没有invoice_info,就应视为不支持在下单请求中传入这项开票信息,不要自行添加未公开参数。手机网站支付完成后,可以通过商户自己的开票页面或独立开票流程收集信息并开具发票。
参数含义
电脑网站支付的开票明细通常包含以下字段:
| 字段 | 含义 |
|---|---|
code | 商家侧商品或服务编码 |
name | 商品或服务名称 |
num | 数量 |
price | 单价 |
sumPrice | 当前明细行总价 |
taxRate | 税率 |
例如,某项服务单价为 100.00 元,数量为 2,各字段应填写为:
price = 100.00
num = 2
sumPrice = 200.00
不要将 sumPrice 填成 100.00。如果接口要求填写税收分类编码,应使用文档中明确标注为“税收分类编码”的专用字段,不能用 code 代替。
电脑网站支付示例
不同语言的支付宝 SDK 可能采用驼峰命名,最终请求 JSON 则使用下划线命名。下面只展示参数结构,字段是否可用仍以当前 SDK 和接口文档为准:
{
"out_trade_no": "202609130001",
"product_code": "FAST_INSTANT_TRADE_PAY",
"total_amount": "200.00",
"subject": "技术服务",
"invoice_info": {
"key_info": {
"is_support_invoice": true,
"invoice_merchant_name": "示例科技有限公司",
"tax_num": "统一社会信用代码或纳税人识别号"
},
"details": [
{
"code": "SERVICE-001",
"name": "技术服务费",
"num": 2,
"price": "100.00",
"sum_price": "200.00",
"tax_rate": "0.06"
}
]
}
}
使用 Java SDK 对象时,字段可能写成:
item.setCode("SERVICE-001");
item.setName("技术服务费");
item.setNum(2L);
item.setPrice("100.00");
item.setSumPrice("200.00");
item.setTaxRate("0.06");
具体的数据类型和 setter 名称可能随 SDK 版本变化,请以项目实际引入的 SDK 类定义为准。
手机网站支付的处理方式
alipay.trade.wap.pay 用于创建手机网站支付交易。如果接口文档没有列出 invoice_info,可以按以下流程处理:
- 调用
alipay.trade.wap.pay完成下单和支付。 - 根据异步通知确认交易已支付成功。
- 在商户订单页提供“申请开票”入口。
- 收集发票抬头、纳税人识别号、邮箱等必要信息。
- 通过商户自己的开票系统或已接入的开票服务完成开票。
- 保存发票申请与支付宝交易号、商户订单号之间的关联。
WAP 下单参数示例:
{
"out_trade_no": "202609130002",
"product_code": "QUICK_WAP_WAY",
"total_amount": "200.00",
"subject": "技术服务",
"quit_url": "https://merchant.example.com/order/202609130002"
}
如果文档不支持,请勿直接追加:
{
"invoice_info": {}
}
支付宝网关可能会忽略未知字段,也可能因参数校验失败而拒绝请求,因此不能依赖这种未公开的行为。
注意事项
sumPrice是明细总价,price才是单价。code是商品编码,不等同于税收分类编码。- 开票明细金额应与订单金额一致。如果存在折扣、优惠或多项商品,还需要明确优惠金额的分摊方式。
- 金额建议使用字符串形式的十进制数,例如
"100.00",避免浮点数计算造成精度误差。 taxRate的格式和可选范围应以当前接口文档为准,不要自行认定应填写6、0.06或"6%"中的某一种。- 是否含税取决于开票金额口径,不能只凭字段名称判断。如果文档没有明确说明,应向支付宝技术支持或所使用的开票服务商确认。
- 接口能力可能发生调整。上线前请核对支付宝开放平台中对应接口的最新参数表,以及项目实际使用的 SDK 模型。
备注:内容仅供参考。
