_1.1 获取access_token
1.2 接收callback推送
2.1 获取ticket
2.2 获取授权页链接
2.3 接收授权完成事件
2.4 查询授权信息
2.5 拒绝领取票据接口
3.1 获取财政局s_pappid
3.2 接收授权完成事件
接口说明
access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。建议公众号开发者使用中控服务器统一获取和刷新access_token,其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致access_token覆盖而影响业务。关于 access_token 的更多介绍,请参考公众号开发文档。 请求方式
请求URL:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
请求方法:GET
请求参数
参数
类型
是否必填
描述
grant_type
String
是
获取access_token填写client_credential
appid
String
是
第三方用户唯一凭证
secret
String
是
第三方用户唯一凭证密钥,即appsecret
返回结果 数据格式:JSON
参数
类型
是否必填
描述
access_token
String
是
获取到的凭证
expires_in
Int
是
凭证有效时间。单位:秒
示例代码
返回:
{
"access_token":"ACCESS_TOKEN",
"expires_in":7200
}
登录公众平台进入【开发者中心设置】,设置接收callback的URL。用户授权领取票、财政电子票据状态更新时,微信服务器会通过这个URL通知开发者。
微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。
接口说明
ticket用于加强安全性。ticket的有效期目前为2个小时,需定时刷新。建议公众号开发者使用中控服务器统一获取和刷新ticket。 请求方式
请求URL:https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=wx_card
请求方法:GET
返回结果
数据格式:JSON
参数
类型
是否必填
描述
errcode
Int
是
错误码
errmsg
String
是
错误信息
ticket
String
是
临时票据,用于url中signature的签名
expires_in
Int
是
有效时长,一般是7200s
示例代码
{
"errcode": 0,
"errmsg": "ok",
"ticket": "m7RQzjA_ljjEkt-JCoklRM5zrzYr-6PI09QydZmNXXz-opTqMv53aFj1ykRt_AOtvqidqZZsLhCDgwGC6nBDiA",
"expires_in": 7200
}
注意事项
1 ticket有效期为7200s,7200s内重复请求ticket不变。
2 执收单位后台须对ticket进行缓存,保证正常调用。
接口说明
通过此接口,获取授权页链接,让用户跳转到授权页。 请求方式
请求URL:https://api.weixin.qq.com/nontax/getbillauthurl?access_token={access_token}
请求方法:POST 请求参数
参数
类型
是否必填
描述
s_pappid
String
是
财政局id,需要找财政局提供
order_id
String
是
订单id
money
Int
是
订单金额,以分为单位
timestamp
Int
是
时间戳
source
String
是
开票来源,web:公众号开票,app:app开票
redirect_url
String
否
授权成功后跳转页面
ticket
String
是
Api_ticket,参考获取api_ticket接口获取
返回结果 数据格式:JSON
参数
类型
是否必填
描述
errcode
Int
是
错误码
errmsg
String
是
错误信息
当错误码为0时,有以下信息
参数
类型
是否必填
描述
auth_url
String
是
授权链接
expire_time
Int
是
过期时间,单位为秒,授权链接会在一段时间之后过期
示例代码
请求:
{
"s_pappid": "wxabcd",
"order_id": "1234",
"money": 11,
"timestamp": 1474875876,
"source": "web",
"redirect_url": "https://mp.weixin.qq.com",
"ticket": "tttt"
}
返回:
{
"errcode": 0,
"errmsg": "ok",
"auth_url": "http://auth_url",
"expire_time": 7200
}
接口说明
用户授权完成后,执收单位的公众号会收到授权完成的事件,关于事件推送请参考接受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>
接口说明
执收单位可以调用该接口查询订单是否有被用户授权。
请求方式
请求URL:https://api.weixin.qq.com/card/invoice/getauthdata?access_token={access_token}
请求方法:POST
请求参数
参数
类型
是否必填
描述
order_id
String
是
订单order_id
s_pappid
String
是
财政局id
返回结果 数据格式:JSON
参数
类型
是否必填
描述
errcode
Int
是
错误码
errmsg
String
是
错误信息
示例代码
请求参数
{
"s_pappid": "{s_pappid}",
"order_id": "{order_id}"
}
返回数据:
{
"errcode": 0,
"errmsg": "ok",
"invoice_status": "auth success",
"auth_time": 1480342498
}
接口说明
用户完成授权后,执收单位若发现用户提交信息错误、或者发生了退款时,可以调用该接口拒绝领取票并告知用户。
请求方式
请求URL:https://api.weixin.qq.com/card/invoice/rejectinsert?access_token={access_token}
请求方法:POST
请求参数
参数
类型
是否必填
描述
s_pappid
String
是
财政局id
order_id
String
是
订单id
reason
String
是
撤销原因
url
String
是
跳转链接
返回结果
参数
类型
是否必填
描述
errcode
Int
是
错误码
errmsg
String
是
错误信息
示例代码
请求:
{
"s_pappid": "d3JCEfhGLW+q0iGP+o9",
"order_id": "111229",
"reason": "1234",
"url": "avb"
}
返回:
{
"errcode": 0,
"errmsg": "ok"
}
接口说明
可以通过此接口获取财政局的s_pappid,并透传给执收单位,执收单位可以通过该s_pappid参数指定提供开票服务的财政局。同一个财政局的s_pappid是一样的,所以只需要调用一次接口,并保存起来。
请求方式
请求URL:https://api.weixin.qq.com/card/invoice/seturl?access_token={access_token}
请求方法:POST
请求参数
请求参数格式为JSON,传入数据为空,即传入{}
返回结果
参数
类型
是否必填
描述
errcode
Int
是
错误码
errmsg
String
是
错误信息
invoice_url
String
是
财政局须将url内的s_pappid给到服务的执收单位,执收单位在请求授权链接时会向微信传入该参数
示例代码
请求
{}
返回
{
"errcode": 0,
"errmsg": "ok",
"invoice_url": "https://mp.weixin.qq.com/bizmall/authinvoice?action=list&s_pappid=d3xxxxxxxxxxxxxGLSS0wrL14No8c1"
}
接口说明
财政局可以通过这个接口帮助执收单位创建一张财政电子票据模板。同一个财政局可以对应多个执收单位,同一个执收单位,使用同一个card_id,不同的执收单位,使用不同的card_id。
请求方式
请求URL:https://api.weixin.qq.com/nontax/createbillcard?access_token={access_token}
请求方法:POST
请求参数
数据格式:JSON
财政电子票据invoice_info字段
参数
类型
是否必填
描述
base_info
Object
是
财政电子票据信息
payee
string
是
收款方(开票方)全称,显示在财政电子票据详情内
base_info字段
参数
类型
是否必填
描述
logo_url
String
是
财政局LOGO,请参考上传图片接口
返回结果
参数
类型
是否必填
描述
errcode
Int
是
错误码
errmsg
String
是
错误信息
当错误码为0是,有以下信息:
参数
类型
是否必填
描述
card_id
String
是
票据card_id
示例代码
请求:
{
"invoice_info" : {
"payee" : "测试非税票据",
"base_info" : {
"logo_url": : "http://mmbiz.qpic.cn/mmbiz/iaL1LJM1mF9aRKPZJkmG8xXhiaHqkKSVMMWeN3hLut7X7hicFNjakmxibMLGWpXrEXB33367o7zHN0CwngnQY7zb7g/0"
}
}
}
返回:
{
"errcode": 0,
"errmsg": "ok",
"card_id": "pjZ8Yt9WoOePThU0NfUKz5-tBEWU"
}
接口说明
财政局可以将票据pdf上传到微信财政电子票据平台,用于开票使用。上传的pdf有三天的有效期限制,需要在过期之前调用插卡接口。
请求方式
请求URL:https://api.weixin.qq.com/card/invoice/platform/setpdf?access_token={access_token}
请求方法:POST
请求参数
数据格式:multipart/form-data
参数
是否必填
描述
是
form-data中媒体文件标识,有filename、filelength、content-type等信息
返回结果 数据格式:JSON
参数
类型
是否必填
描述
errcode
Int
是
错误码
errmsg
String
是
错误信息
s_media_id
String
是
获取pdf和插卡使用,s_media_id有效期有3天
示例代码
请求:
------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”
}
接口说明
获取财政电子票据pdf。 请求方式
请求URL:https://api.weixin.qq.com/card/invoice/platform/getpdf?access_token={access_token}
请求方法:POST
请求参数
数据格式:JSON
参数
类型
是否必填
描述
s_media_id
string
是
财政电子票据s_media_id
actin
String
是
填“get_url”
返回结果
数据格式:JSON
参数
类型
是否必填
描述
errcode
Int
是
错误码
errmsg
String
是
错误信息
pdf_url
String
是
pdf的url
pdf_url_expire_time
Int
是
pdf_url过期时间,7200秒
示例代码
请求:
{
"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
}
接口说明
执收单位完成用户插卡授权后,向财政局请求给某一个订单号进行领取财政电子票据,财政局须调用该接口对用户进行开票。
请求方式
请求URL:https://api.weixin.qq.com/nontax/insertbill?access_token={access_token}
请求方法:POST
请求参数
数据格式:JSON
参数
类型
是否必填
描述
order_id
string
是
财政电子票据order_id
card_id
String
是
财政电子票据card_id
appid
String
是
该订单号授权时使用的appid,一般为执收单位appid
card_ext
Object
是
财政电子票据具体内容
card_ext包含以下内容:
参数
类型
是否必填
描述
user_card
Object
是
用户信息结构体
user_card中包含一个invoice_user_data对象,invoice_user_data包含以下字段:
参数
类型
是否必填
描述
fee
Int
是
财政电子票据的金额,以分为单位
title
String
是
财政电子票据的缴费单位
billing_time
Int
是
财政电子票据的开票时间,为10位时间戳(utc+8)
billing_no
String
是
财政电子票据代码
billing_code
String
是
财政电子票据号码
s_pdf_media_id
String
是
财政电子票据pdf文件上传到微信财政电子票据平台后,会生成一个财政电子票据s_media_id,该s_media_id可以直接用于开财政电子票据,上传参考“5、上传pdf”
返回结果 数据格式:JSON
参数
类型
是否必填
描述
errcode
Int
是
错误码
errmsg
String
是
错误信息
当错误码为0是,有以下信息:
参数
类型
是否必填
描述
code
String
是
财政电子票据code
openid
String
是
用户标识,即领取到财政电子票据的openid
示例代码
请求:
{
"order_id" : "1511169724",
"card_ext" : {
"user_card" : {
"invoice_user_data" : {
"billing_time" : "1511169724",
"billing_code" : "aabbccdd",
"billing_no" : "1511169724",
"s_pdf_media_id" : "s_pdf_media_id",
"fee" : 123,
"title" : "灌哥发票"
}
}
},
"card_id" : "pjZ8Yt7xiy3b9UfffRIA4Tm2xTnw",
"appid" : "wxc0b84a53ed8e8d29"
}
返回:
{
"errcode": 0,
"errmsg": "ok",
"code": "682xxxx661927",
"openid": "ojZ8Ytz4lESxxxx_R1TvB2Kds"
}
接口说明
当报销方更新财政电子票据状态的时候,公众平台会推送一条消息公众号消息通知财政局设置的接收事件回调的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>
接口说明
如果财政局的财政电子票据状态发生改变,需要调用该接口,将状态同步给公众平台,确保双方财政电子票据的状态一致。
请求方式
请求URL:https://api.weixin.qq.com/card/invoice/platform/updatestatus?access_token={access_token}
请求方法:POST
请求参数
数据格式:JSON
参数
类型
是否必填
描述
card_id
String
是
财政电子票据id
code
String
是
财政电子票据code
reimburse_status
String
是
财政电子票据报销状态
返回结果
参数
类型
是否必填
描述
errcode
Int
是
错误码
errmsg
String
是
错误信息
示例代码
请求:
{
"card_id": "pjZ8Yt7Um2jYxzneP8GomnxoVFWo",
"code": "186921658591",
"reimburse_status": "INVOICE_REIMBURSE_INIT"
}
返回:
{
"errcode": 0,
"errmsg": "ok"
}
状态
描述
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 与插卡时间间隔过短。
Original url: Access
Created at: 2019-11-21 12:17:51
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
最新评论