67 lines
4.2 KiB
Markdown
67 lines
4.2 KiB
Markdown
# 服务商电子发票接口体系对比
|
||
|
||
## 结论
|
||
|
||
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 实现。
|