# 一、通用接口
# 1.1 获取access_token
参考获取接口调用凭据
# 1.2 接收callback推送
登录公众平台进入【开发者中心设置】,设置接收callback的URL。用户授权领取票、财政电子票据状态更新时,微信服务器会通过这个URL通知开发者。
微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。
# 二、执收单位接口
# 2.1 获取ticket
# 2.2 获取授权页链接
参考获取授权页链接
# 2.3 接收授权完成事件
接口说明
用户授权完成后,执收单位的服务号会收到授权完成的事件,关于事件推送请参考接受callback推送
返回结果
数据格式:xml
| 参数 | 类型 | 描述 |
|---|---|---|
| ToUserName | String | 服务号标识 |
| FromUserName | String | 用户 openID |
| CreateTime | Int | 事件时间 |
| MsgType | String | 固定为event |
| Event | String | 固定为user_authorize_invoice |
| SuccOrderId | String | 授权成功的订单号 |
| FailOrderId | String | 授权失败的订单号 |
| AuthorizeAppId | String | 用于接收事件推送的服务号的AppId |
| Source | String | 授权来源,web表示来自微信内H5 |
示例代码
<xml>
<ToUserName><![CDATA[gh_fc0a06a20993]]></ToUserName>
<FromUserName><![CDATA[oZI8Fj040-be6rlDohc6gkoPOQTQ]]></FromUserName>
<CreateTime>1475134700</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[user_authorize_invoice]]></Event>
<SuccOrderId><![CDATA[1202933957956]]></SuccOrderId>
<FailOrderId><![CDATA[]]></FailOrderId>
<AuthorizeAppId><![CDATA[]]></AuthorizeAppId>
<Source><![CDATA[]]></Source>
</xml>
# 2.4 查询授权信息
参考查询授权信息
# 2.5 拒绝领取票据接口
参考拒绝开票
# 三、财政局接口
# 3.1 获取财政局s_pappid
# 3.2 创建财政电子票据接口
# 3.3 上传pdf
参考上传发票PDF
# 3.4 获取pdf
# 3.5 将财政电子票据添加到用户微信卡包
参考票据插入用户卡包
# 3.6 状态更新事件推送
接口说明
当报销方更新财政电子票据状态的时候,公众平台会推送一条消息服务号消息通知财政局设置的接收事件回调的url,关于事件推送参考接口6.1.2
返回结果
数据格式:XML
| 参数 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| ToUserName | String | 是 | 服务号标识 |
| FromUserName | String | 是 | 用户openid |
| CreateTime | Int | 是 | 事件时间 |
| MsgType | String | 是 | 固定为"event" |
| Event | String | 是 | 固定为"update_invoice_status" |
| Status | String | 是 | 财政电子票据报销状态 |
| CardId | String | 是 | 财政电子票据id |
| Code | String | 是 | 财政电子票据code |
示例代码
<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>
# 3.7 更新电子票据状态
参考更新发票卡券状态
# 四、备注
# 4.1 订单授权状态
| 状态 | 描述 |
|---|---|
| never auth | 用户未授权 |
| auth success | 用户已授权 |
| auth time out | 用户授权后,领取票据超时 |
| invoice send | 用户授权后,领取票成功 |
| reject insert | 撤销领取票据 |
| invoice sending | 用户授权后,领取中 |
# 4.2 错误码
| 状态 | 描述 | 备注 |
|---|---|---|
| 0 | OK | 成功 |
| 72015 | unauthorized create invoice | 没有操作权限,请检查是否已开通相应权限。 |
| 72031 | invalid params | 参数错误。可能为请求中包括无效的参数名称或包含不通过后台校验的参数值 |
| 72035 | biz reject insert | 财政电子票据已经被拒绝领取。若 order_id 被用作参数调用过拒绝领取接口,再使用此 order_id 插卡机会报此错误 |
| 72036 | invoice is busy | 财政电子票据正在被修改状态,请稍后再试 |
| 72038 | invoice order never auth | 订单没有授权,可能是财政局的s_pappid 、执收单位 appid 、订单 order_id 不匹配 |
| 72040 | invoice pdf error | Pdf 无效,请提供真实有效的 pdf |
| 72042 | billing_code and billing_no repeated | 票据号码和票据代码重复 |
| 72043 | billing_code or billing_no size error | 票据号码和票据代码错误 |
| 40078 | invalid card status | card_id 未授权。 若开发者使用沙箱环境报此错误,主要因为未将调用接口的微信添加到测试把名单; 若开发者使用正式环境报此错误,主要原因可能为:调用接口服务号未开通卡券权限,或创建 card_id 与插卡时间间隔过短。 |