开票平台接口列表
1 获取自身的开票平台识别码
2 创建发票卡券模板
3 上传PDF
4 查询已上传的PDF文件
5 将电子发票卡券插入用户卡包
6 更新发票卡券状态
7 发票状态更新事件推送
8 解码code接口
9 错误码
# 1 获取自身的开票平台识别码
接口说明
开票平台可以通过此接口获得本开票平台的预开票url,进而获取s_pappid。开票平台将该s_pappid并透传给商户,商户可以通过该s_pappid参数在微信电子发票方案中标识出为自身提供开票服务的开票平台。
请求方式
请求URL:https://api.weixin.qq.com/card/invoice/seturl?access_token={access_token}
请求方法:POST
请求参数
请求参数使用JSON格式,传入空值{}
返回结果
返回结果为JSON格式,字段如下:
示例代码
请求
{}
返回
{
"errcode": 0,
"errmsg": "ok",
"invoice_url": "https://mp.weixin.qq.com/bizmall/authinvoice?action=list&s_pappid=d3xxxxxxxxxxxxxGLSS0wrL14No8c1"
}
# 2 创建发票卡券模板
接口说明
通过本接口可以为创建一个商户的发票卡券模板,为该商户配置发票卡券模板上的自定义栏位。创建发票卡券模板生成的card_id将在创建发票卡券时被引用,故创建发票卡券模板是创建发票卡券的基础。
请求方式
请求URL:https://api.weixin.qq.com/card/invoice/platform/createcard?access_token={access_token}
请求方法:POST
请求参数
请求参数使用JSON格式,字段如下:
invoice_info为Object,里面包括以下字段:
base_info为Object,里面包括以下字段:
返回结果
返回结果为JSON格式,字段如下:
示例代码
请求:
{
"invoice_info": {
"base_info": {
"logo_url": "http://mmbiz.qpic.cn/mmbiz/iaL1LJM1mF9aRKPZJkmG8xXhiaHqkKSVMMWeN3hLut7X7hicFNjakmxibMLGWpXrEXB33367o7zHN0CwngnQY7zb7g/0",
"title": "xx公司",
"custom_url_name": "xyz",
"custom_url": "xyz",
"custom_url_sub_title": "xyz",
"promotion_url_name": "puname",
"promotion_url": "purl",
"promotion_url_sub_title": "ptitle",
},
"type": " 广东省增值税普通发票 ",
"payee": " 测试 - 收款方 ",
}
}
返回:
{
"errcode": 0,
"errmsg": "ok",
"card_id": "pjZ8Yt9WoOePThU0NfUKz5-tBEWU"
}
# 3 上传PDF
接口说明
商户或开票平台可以通过该接口上传PDF。PDF上传成功后将获得发票文件的标识,后续可以通过插卡接口将PDF关联到用户的发票卡券上,一并插入到收票用户的卡包中。
注意:若上传成功的PDF在三天内没有被关联到发票卡券发送到用户卡包上,将会被清理。若商户或开票平台需要在三天后再关联发票卡券的话,需要重新上传。
请求方式
请求URL:https://api.weixin.qq.com/card/invoice/platform/setpdf?access_token={access_token}
请求方法:POST
请求参数
数据格式使用multipart/form-data,参数清单如下:
返回结果
返回结果为JSON格式,字段如下:
示例代码
请求:
------WebKitFormBoundary2exwM16BY25kVBgf Content-Disposition: form-data; name="pdf"; filename="1133090578170938.pdf" Content-Type: application/pdf Pdf content ------WebKitFormBoundary2exwM16BY25kVBgf—
返回:
{
"errcode":0,
"errmsg":"ok",
"s_media_id":"3015806758683707"
}
# 4 查询已上传的PDF文件
接口说明
用于供发票PDF的上传方查询已经上传的发票或消费凭证PDF。
请求方式
请求URL:https://api.weixin.qq.com/card/invoice/platform/getpdf?action=get_url&access_token={access_token}
请求方法:POST
请求参数
请求参数使用JSON格式,字段如下:
返回结果
返回结果为JSON格式,字段如下:
示例代码
请求:
{
"action": "get_url",
"s_media_id": "75195574948725301"
}
返回:
{
"errcode": 0,
"errmsg": "ok",
"pdf_url": "https://mp.weixin.qq.com/intp/invoice/getpdf?action=media_pdf&media_key=dFRnTkV6WCswNjB1V1czZ0tVU3MhaX4yb2pxeEVSY0teSCtuflY6UXAifD5rL09kTjFpOFVWKyJGNCgxTCtkJER6VjFlRCtVU2JKcS5FZw",
"pdf_url_expire_time": 7200
}
# 5 将电子发票卡券插入用户卡包
接口说明
本接口由开票平台或自建平台商户调用。对用户已经授权过的开票请求,开票平台可以使用本接口将发票制成发票卡券放入用户的微信卡包中。
值得关注的是,如果授权页由商户拉起,而插卡递送发票的动作由开票平台来完成的话,商户需要将需要存入微信卡包的标识和order_id在开票请求中发送给开票平台。
注意:需要使用之前调用获取s_pappid接口时的开票平台公众号appid调用本接口,否则会造成报错,插卡失败。
请求方式
请求URL:https://api.weixin.qq.com/card/invoice/insert?access_token={access_token}
请求方法:POST
请求参数
请求参数使用JSON格式,字段如下:
card_ext为Object,包括以下内容:
user_card中包含一个invoice_user_data对象,invoice_user_data包含以下内容:
info为Object列表,列表中每个Object包含以下信息:
返回结果
返回结果为JSON格式,字段如下:
示例代码
请求:
{
"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 更新发票卡券状态
接口说明
发票平台在获知发票状态变化(如被冲红、被报销)时,需更新在用户卡包中发票卡券的状态。确保发票卡券可用性,避免无效报销、重复报销。
本接口主要用于发票平台更新从其他渠道或者的发票报销状态变更,企业报销接口请见企业报销电子发票章节。
目前电子发票冲红在微信中表现为对应的发票卡券被核销,调用该接口并将发票卡券状态置为“INVOICE_REIMBURSE_CANCEL”即可
具体发票状态见发票状态一览表。
请求方式
请求URL:https://api.weixin.qq.com/card/invoice/platform/updatestatus?access_token={access_token}
请求方法:POST
请求参数
请求参数使用JSON格式,字段如下:
返回结果
返回结果为JSON格式,字段如下:
示例代码
请求:
{
"card_id": "pjZ8Yt7Um2jYxzneP8GomnxoVFWo",
"code": "186921658591",
"reimburse_status": "INVOICE_REIMBURSE_INIT"
}
返回:
{
"errcode": 0,
"errmsg": "ok"
}
# 7 发票状态更新事件推送
接口说明
微信在获知用户将发票提交企业报销后,会将发票状态的变更情况推送给发票平台及商户,以便确保各方的发票状态同步。发票平台或自建平台商户通过配置时间接收URL,解析推送事件类型,获得状态变更消息。
该事件将发送至开发者填写的URL(登录公众平台进入【开发者中心设置】,参考下图)。
示例代码
<xml>
<ToUserName><![CDATA[gh_9e1765b5568e]]></ToUserName>
<FromUserName><![CDATA[ojZ8Ytz4lESgdWZ34L_R1TvB2Kds]]></FromUserName>
<CreateTime>1478068440</CreateTime> <MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[update_invoice_status]]></Event>
<Status><![CDATA[INVOICE_REIMBURSE_INIT]]></Status>
<CardId><![CDATA[pjZ8Yt7Um2jYxzneP8GomnxoVFWo]]></CardId>
<Code><![CDATA[186921658591]]></Code>
</xml>
# 8 解码code接口
接口说明
为了满足商户基于发票本身的扩展诉求,允许发票内页添加url跳转外链(创建发票字段中的promotion_url和custom_url)。带有的的字段有encrypt_code、card_id。
假如指定的url为:http://www.qq.com 用户点击时,跳转的url则为:http://www.qq.com?encrypt_code=ENCRYPT_CODE&card_id=CARDID
encrypt_code为加密码,需调用接口解码方可得到真实的code。获取到的真实code和调用插卡接口返回的code相同。
请求方式
请求URL:https://api.weixin.qq.com/card/code/decrypt?access_token={access_token}
请求方法:POST
请求参数
请求参数使用JSON格式,参数清单如下:
返回结果
返回结果为JSON格式,字段如下:
示例代码
请求:
{
"encrypt_code":"XXIzTtMqCxwOaawoE91+VJdsFmv7b8g0VZIZkqf4GWA60Fzpc8ksZ/5ZZ0DVkXdE"
}
返回:
{
"errcode":0,
"errmsg":"ok",
"code":"751234212312"
}