企业微信的电子发票接口,必须要经过认证【且】激活人数≥200人才可以调用,如果任一条件不符合,调接口返回的内容是:
{
"errcode": 48001,
"errmsg": "api unauthorized:api unauthorized hint: [03****24]"
}
因为这200人的无赖限制,很多企业望而却步。社区关于此问题的帖子也很多,其中就有聪明人说,能不能借用微信公众号的能力?好,那就试试。
在企业微信H5先调用jssdk,获取到发票数据(card_id和encrypt_code),然后调公众号的接口,用公众号的access_token,结果是:
{
"errcode": 40075,
"errmsg": "invalid encrypt code hint: [9UBU****er48]"
}
也就是签名不匹配,这不废话吗?选发票的时候调用的jssdk是用企业微信的corpid鉴权,得到的是以企业微信身份加密的数据,你用公众平台的appid去解密,怎么能解开呢?
因此,对于同一发票,使用微信公众号appid鉴权的jssdk,和使用企业微信corpid鉴权的jssdk,调用chooseInvoice得到的encrypt_code是不同的,不能拿微信公众号的接口去解密企业微信内选择的电子发票数据
有的聪明人又说了,那我用公众号的appid去鉴权jssdk不就行了?那试试呗:
{
"err_msg":"chooselnvoice:fail no permission"
}
怎么样,打脸不?企业微信里一些jssdk接口,需要agentConfig二次鉴权才可以调用。
但是在小程序,无论是在微信还是企业微信内运行,只要调用的不是【wx.qy】开头的API,实际上使用的都是微信方面的能力。因此对于同一发票,调用chooseInvoice得到的encrypt_code就完全一致,并且在小程序调用wx.chooseInvoice时,也无需像JSSDK那样需要传入签名。解密的时候只需用小程序的access_token调用公众平台的电子发票接口即可成功解密,接下来提取发票信息、发票的PDF文件、锁定与核销发票等,就看贵司的业务需求了,同样是用公众平台的接口即可。当然,小程序的成本会高一些(主要是300/年的认证费用)
另:小程序的chooseInvoice接口,在企业微信内仅移动端支持
公众平台发票接口文档:https://developers.weixin.qq.com/doc/offiaccount/WeChat_Invoice/E_Invoice/Reimburser_API_List.html

6530

被折叠的 条评论
为什么被折叠?



