1
0
mirror of synced 2026-10-15 20:06:14 +08:00
Files
WxJava/docs/ELECTRONIC_INVOICE_API_COMPARISON.md

67 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 服务商电子发票接口体系对比
## 结论
Gitee Issue `IDMETW` 补充的官方链接
[获取开通服务商电子发票能力邀请链接](https://pay.weixin.qq.com/doc/v3/partner/4015941495)
与 GitHub Issue [#4066](https://github.com/binarywang/WxJava/issues/4066) 给出的
[开发接入准备](https://pay.weixin.qq.com/doc/v3/partner/4015792554) 是**同一套**微信支付
V3 服务商电子发票产品文档:前者是 API 列表中的具体接口,后者是该产品的接入总览。
但是,当前 `weixin-java-mp` 的 `WxMpMerchantInvoiceService` 是另一套旧的公众号
`/card/invoice/*` 接口;不能把它当作这两个 Issue 所要求的支付 V3 能力实现。
## 当前仓库既有的公众号体系
- 当前代码将该能力归入公众号模块:
`weixin-java-mp` 的
`WxMpMerchantInvoiceService`。
- 该接口的 Javadoc 明确引用公众号官方文档:
[商户开票模式说明](https://developers.weixin.qq.com/doc/offiaccount/WeChat_Invoice/E_Invoice/Vendor_and_Invoicing_Platform_Mode_Instruction.html)
和
[商户开票接口列表](https://developers.weixin.qq.com/doc/offiaccount/WeChat_Invoice/E_Invoice/Vendor_API_List.html)。
后者当前重定向至
[新版服务号文档](https://developers.weixin.qq.com/doc/service/guide/product/weixin_invoice/E_Invoice/Vendor_API_List.html)。
- 代码实际请求公众号 API:`/card/invoice/getauthurl`、
`/card/invoice/getauthdata`、`/card/invoice/makeoutinvoice`、
`/card/invoice/clearoutinvoice`、`/card/invoice/queryinvoceinfo` 等;见
`WxMpApiUrl.Invoice`。这套接口围绕授权页、获取用户授权数据、开票、冲红和
查询发票信息。
- 历史提交 `058ce62a2b932633931e30762f44c561481dde5f` 将该服务及其请求/响应
Bean 加入 `weixin-java-mp`;提交说明关联 #1305。
> 说明:调研时 Gitee 页面/API 的 TLS 连接失败,未能独立读取 IDMETW 的评论;
> 但用户随后提供的 `4015941495` 链接已明确该 Issue 实际指向支付 V3 服务商电子发票。
## 两个 Issue 共同指向的支付 V3 体系
- #4066 链接的[开发接入准备](https://pay.weixin.qq.com/doc/v3/partner/4015792554)
属于
“微信电子发票”产品,要求在**微信支付服务商号**申请“服务商电子发票”权限,
并提到数电发票资源。
- IDMETW 链接的[获取开通服务商电子发票能力邀请链接](https://pay.weixin.qq.com/doc/v3/partner/4015941495)
位于相同产品的“API 列表”下,路径为
`GET /v3/new-tax-control-fapiao/fapiaomerchant/getspinviteurl`。
- 同一官方文档导航的 API 列表包含:邀请子商户开通、检查子商户开票状态、创建电子
发票卡券模板、配置开发选项、抬头填写链接/信息、各行业开票、冲红、查询、下载/上传
发票文件、插入用户卡包,以及多个异步通知。
- 例如“开具通用行业电子发票”接口为
`POST /v3/new-tax-control-fapiao/fapiao-applications/issue-general`,请求域名为
`https://api.mch.weixin.qq.com`,并要求微信支付 API 证书签名、服务商模式的
`sub_mchid` 和唯一开票申请单号 `fapiao_apply_id`;官方文档:
[开具通用行业电子发票](https://pay.weixin.qq.com/doc/v3/partner/4015792574)。
该页还规定敏感字段使用微信支付公钥或平台证书加密。
## 直接差异
| 维度 | 既有公众号能力 | 两个 Issue 指向的微信支付能力 |
| --- | --- | --- |
| SDK 模块 | `weixin-java-mp` | 应位于 `weixin-java-pay` |
| 官方文档产品线 | `developers.weixin.qq.com` 的公众号电子发票 | `pay.weixin.qq.com/doc/v3/partner` 的微信支付合作伙伴电子发票 |
| API 形态 | `/card/invoice/*` | `/v3/new-tax-control-fapiao/*` |
| 身份/鉴权上下文 | 公众号 access token、用户授权页/授权数据 | 微信支付服务商号、子商户号、V3 签名与敏感字段加密 |
| 覆盖范围 | 授权、开票、冲红、查询及公众号商户配置 | 子商户邀约/状态、模板/开发配置、行业开票、文件和卡包、通知 |
因此,两个 Issue 都是同一个微信支付 V3 服务商电子发票接入需求,当前由
`weixin-java-pay` 的 `PartnerInvoiceService` 提供对应的 `new-tax-control-fapiao` API 实现。