# 将电子发票卡券插入用户卡包
接口应在服务器端调用,不可在前端(小程序、网页、APP等)直接调用,具体可参考接口调用指南
接口英文名:insertinvoice
本接口由开票平台或自建平台商户调用。对用户已经授权过的开票请求,开票平台可以使用本接口将发票制成发票卡券放入用户的微信卡包中。
值得关注的是,如果授权页由商户拉起,而插卡递送发票的动作由开票平台来完成的话,商户需要将需要存入微信卡包的标识和order_id在开票请求中发送给开票平台。
注意:需要使用之前调用获取s_pappid接口时的开票平台公众号appid调用本接口,否则会造成报错,插卡失败。
# 1. 调用方式
# HTTPS 调用
POST https://api.weixin.qq.com/card/invoice/insert?access_token=ACCESS_TOKEN
# 云调用
- 本接口不支持云调用
# 第三方调用
本接口支持第三方平台代商家调用。
该接口所属的权限集 id 为:8、26
服务商获得其中之一权限集授权后,可通过使用 authorizer_access_token 代商家进行调用,具体可查看 第三方调用 说明文档。
# 2. 请求参数
# 查询参数 Query String parameters
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
access_token | string | 是 | 接口调用凭证,可使用 access_token、authorizer_access_token |
# 请求体 Request Payload
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
order_id | string | 是 | 发票order_id,既商户给用户授权开票的订单号 |
card_id | string | 是 | 发票card_id |
appid | string | 是 | 该订单号授权时使用的appid,一般为商户appid |
card_ext | object | 是 | 发票具体内容 |
# Body.card_ext Object Payload
发票具体内容
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
nonce_str | string | 是 | 随机字符串,防止重复 |
user_card | object | 是 | 用户信息结构体 |
# Body.card_ext.user_card Object Payload
用户信息结构体
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
invoice_user_data | object | 是 | 用户信息 |
# Body.card_ext.user_card.invoice_user_data Object Payload
用户信息
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
fee | number | 是 | 发票的金额,以分为单位 |
title | string | 是 | 发票的抬头 |
billing_time | number | 是 | 发票的开票时间,为10位时间戳(utc+8) |
billing_no | string | 是 | 发票的发票号码;数电发票传20位发票号码 |
billing_code | string | 是 | 发票的发票代码;数电发票发票代码为空 |
info | objarray | 否 | 商品详情结构 |
fee_without_tax | number | 是 | 不含税金额,以分为单位 |
tax | number | 是 | 税额,以分为单位 |
s_pdf_media_id | string | 是 | 发票pdf文件上传到微信发票平台后,会生成一个发票s_media_id,该s_media_id可以直接用于关联发票PDF和发票卡券。 |
s_trip_pdf_media_id | string | 否 | 其它消费附件的PDF,如行程单、水单等 |
check_code | string | 是 | 校验码,发票pdf右上角,开票日期下的校验码;数电发票发票校验码为空 |
buyer_number | string | 否 | 购买方纳税人识别号 |
buyer_address_and_phone | string | 否 | 购买方地址、电话 |
buyer_bank_account | string | 否 | 购买方开户行及账号 |
seller_number | string | 否 | 销售方纳税人识别号 |
seller_address_and_phone | string | 否 | 销售方地址、电话 |
seller_bank_account | string | 否 | 销售方开户行及账号 |
remarks | string | 否 | 备注,发票右下角初 |
cashier | string | 否 | 收款人,发票左下角处 |
maker | string | 否 | 开票人,发票下方处 |
# Body.card_ext.user_card.invoice_user_data.info(Array) Object Payload
商品详情结构
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
name | string | 是 | 项目的名称 |
num | number | 否 | 项目的数量 |
unit | string | 否 | 项目的单位,如个 |
price | number | 是 | 项目的单价 |
# 3. 返回参数
# 返回体 Response Payload
参数名 | 类型 | 说明 |
---|---|---|
errcode | number | 错误码 |
errmsg | string | 错误信息 |
code | string | 发票code |
openid | string | 获得发票用户的openid |
unionid | string | 只有在用户将公众号绑定到微信开放平台账号后,才会出现该字段 |
# 4. 注意事项
本接口无特殊注意事项
# 5. 代码示例
请求示例
{
"order_id": "111163",
"card_ext": {
"nonce_str": "j!Re1WxaHv",
"user_card": {
"invoice_user_data": {
"info": [
{
"price": 10000,
"num": 3,
"name": "牙膏",
"unit": "个"
}
],
"billing_no": "4545145712",
"billing_code": "4541212454512",
"billing_time": "1468306058",
"tax": 123,
"s_pdf_media_id": "s_pdf_media_id_abc123",
"fee": 123,
"title": "灌哥发票",
"fee_without_tax": 2345
"buyer_number":"123456789012345678"
}
}
},
"card_id": "pjZ8Yt9WoOePThU0NfUKz5-tBEWU",
"appid": "wxc0b84a53ed8e8d29"
}
返回示例
{
"errcode": 0,
"errmsg": "ok",
"code": "682xxxx661927",
"openid": "ojZ8Ytz4lESxxxx_R1TvB2Kds"
}
# 6. 错误码
以下是本接口的错误码列表,其他错误码可参考 通用错误码
错误码 | 错误描述 | 解决方案 |
---|---|---|
40001 | invalid credential access_token isinvalid or not latest | access_token 无效或不为最新获取的 access_token,请开发者确认access_token的有效性 |
# 7. 适用范围
本接口在不同账号类型下的可调用情况:
公众号 | 服务号 |
---|---|
✔ | ✔ |
- ✔:该账号可调用此接口
- 其他未明确声明的账号类型,如无特殊说明,均不可调用此接口;