# @crvouga/mockingbird-service-kill-bill 中文文档

规范地址：https://npmcn.com/package/%40crvouga/mockingbird-service-kill-bill/

版本：3\.10\.16
npm 元数据更新时间：2026-11-06T22:19:05.165Z
中文译文更新时间：2026-11-11T02:19:09.664Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40crvouga/mockingbird-service-kill-bill
原文对照：https://npmcn.com/package/%40crvouga/mockingbird-service-kill-bill/?lang=original
项目主页：https://github.com/crvouga/mockingbird/tree/main/packages/service/kill-bill#readme
源码仓库：https://github.com/crvouga/mockingbird

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：4.7 MB，18 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2026-09-22T23:54:54.231Z
- 最新版本发布：2026-11-06T22:19:04.808Z
- 近 30 天下载量：16405（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：47（近 12 个月 47 个）

## 中文简介

国有Kill Bill 模拟器 账户、订阅、发票、付款、信用、退货、目录和时钟控制.

## 安装

```sh
npm install @crvouga/mockingbird-service-kill-bill
```

也可以使用：`pnpm add @crvouga/mockingbird-service-kill-bill`、`yarn add @crvouga/mockingbird-service-kill-bill`、`bun add @crvouga/mockingbird-service-kill-bill`

## README

# @crvouga/ mockingbird-service-kill-bill 页面存档备份,存于互联网档案馆

> 本地模拟器。 真正的API合同. 部分 [嘲笑鸟](https://github.com/crvouga/mockingbird)。 。 。 .

州立Kill Bill REST模拟器用于计费整合测试. 它模拟了租户范围账户、付款方法、订阅、捆绑、发票、付款、信贷、退款、退款、退款、退款、目录、审计元数据、一个测试钟、账户逾期状态以及秘密保护的生命周期网络呼号.

## 安装

```bash
npm install -D @crvouga/mockingbird-service-kill-bill
```

仅限无害环境管理。 节点22+或Bun 1.2+.

## 使用量

```ts
import { AccountApi, Configuration, apiKey } from "killbill"
import { createServer } from "@crvouga/mockingbird-service-kill-bill/server"

const emulator = await createServer()

// The Kill Bill client your application already uses. Only its basePath changes.
const config = new Configuration({
  basePath: emulator.url,
  username: "admin",
  password: "password",
  apiKey: apiKey("bob", "lazar"),
})
const accounts = new AccountApi(config)
await accounts.createAccount({ name: "Synthetic Customer", externalKey: "customer-1", currency: "USD" }, "example")
const { data: account } = await accounts.getAccountByKey("customer-1")
console.log(account.accountId, account.currency) // acc-… USD

await emulator.close()
```

默认证书为 Basic 认证 `admin:password` 加租户头 `X-Killbill-ApiKey: bob` 财务报告和审定财务报表 `X-Killbill-ApiSecret: lazar`变异也要求 `X-Killbill-CreatedBy`;可选的理由和评论头被记录在审计日记.

`POST /1.0/kb/tenants` 创造另一个拥有基本授权的房客 `X-Killbill-CreatedBy` 只有这个 用那个房客的阿皮钥匙创建的账户 藏在别处. `POST /1.0/kb/tenants/registerNotificationCallback?cb=` 将发票和付款活动作为Kill Bill通知JSON。 与Kill Bill 0.24.16(以对真实服务器的回调计量)一样,发送是在请求得到答复后进行,按每个账户的顺序排列:在巴士闲置时引发的事件等待 `notificationDelayMs` (2000年默认;Kill Bill的公交车取走2–3 s),在投递期间或投递后升起的公交车,如回电时的付款,立即出行(投递后Kill Bill的公交民意调查再次出行;测量到~70 ms). `GET /1.0/kb/test/queues` 等待待产。 在每次尝试失败后15分、30分、2小时、12小时和一天的时间内,当钟表到达时(一个钟表移动或下一个请求),回调(non-2xx或没有回答)被重审。 进程 `onEvent` 钩子在请求中仍然接收事件.

`GET /1.0/kb/accounts/pagination` 财务报告和审定财务报表 `GET /1.0/kb/invoices/pagination` 列出经认证的 租户现有的帐单记录是赤裸的阵列. `offset` 默认为 0并 `limit` 改为100; 正限使用创建顺序,而负限则倒置. 发票更新保留 原地处地. 答复正在进行 `X-Killbill-Pagination-CurrentOffset`, (中文(简体) ), `TotalNbRecords` 财务报告和审定财务报表 `MaxNbRecords`。 。 。 . `NextOffset` 财务报告和审定财务报表 `NextPageUri` 仅在另一页存在时才显示。 下一页 URL 保留选中的命名空间并配置了管理员前缀; 继续发送 Basic 认证和 租户头. 返回空/已耗尽的页面 `[]`。零限制也返回 `[]`作为真正的SQL pagination确实如此;客户端应该停止在一空页面上. 账户余额默认为无效; 使用 `accountWithBalance=true` 或者说 `accountWithBalanceAndCBA=true` 实际发票余额/CBA. 这两本读作使用与发票的创建、支付和作废相同的收款,并参与 标准命名空间、时钟、重置、快照和故障控制.

先知是杀比尔的 [账户资源](https://github.com/killbill/killbill/blob/a21c14d61ab93b902ddba2a1c5ecfbc7aca76e07/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AccountResource.java), (中文(简体) ), [发票资源](https://github.com/killbill/killbill/blob/a21c14d61ab93b902ddba2a1c5ecfbc7aca76e07/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java), (中文(简体) ), [贴花反应](https://github.com/killbill/killbill/blob/a21c14d61ab93b902ddba2a1c5ecfbc7aca76e07/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxRsResourceBase.java), (中文(简体) ), 财务报告和审定财务报表 [命令执行](https://github.com/killbill/killbill/blob/a21c14d61ab93b902ddba2a1c5ecfbc7aca76e07/util/src/main/java/org/killbill/billing/util/entity/dao/DefaultPaginationSqlDaoHelper.java)。 。 。 . 模拟器的有限度的收集是精确的; 卖家的大数据集的计数热度, 审计预测和搜索终点没有建模。 无效的 pagination 使用模拟器已存在的 错误信封; 准确的活性错误文本仍未验证 。 发票 如Kill Bill 0.24.16所示.

## 现场平等

`bun run parity -- [scenario…] [--out <dir>] [--allow-remote]` 重放固定请求情景 (单位:千美元)`scripts/scenarios.ts`)针对你运行的"杀手"(Kill Bill)和"新模范",每个新房客都有 创建并传播规范的文字记录(标识成为占位符和即时) `<ts>`\* 日期, 数额和状态. `KILL_BILL_URL` 杀死比尔的名字( 例如) `http://127.0.0.1:8080`· ; `KILL_BILL_USERNAME`编号 :`KILL_BILL_PASSWORD` 默认为 `admin`编号 :`password`(三); 没有它,脚本出口2。 它会写,所以它拒绝一个非回放 URL 没有 `--allow-remote`。 。 。 .

假想包括未找到的答案、目录错误、续签发票 (单位:千美元)`POST /1.0/kb/invoices`及其目标日期、账户贷记(承诺和草案)及其 7个注销形状,项目调整后的外部退款 及其密钥检索和审计日志, 未来日期订阅在开始前取消, a 权利暂停并恢复,在两次续约中暂停计费,BCD在测试下更改 时钟(一 二叠加并按年度计划) (即于所请之日,至期终同出一出,并取去 )和续展日(停收帐单、放行和BCD更改)。 改变计划 方案使用第二个目录,其规则在 END OF TERM 和 每一次Kill Bill的默认对齐 他们都符合Kill Bill 0.24.16(版本) Geviti在生产中运行),于2026-11-06.

## 控件

-   `POST /__admin/payments/decline-next` 财务报告和审定财务报表 `/pending-next` 选择下一个付款结果.
-   `POST /__admin/payments/:id/retry` 继承最近失败或待处理的交易.
-   `POST /__admin/catalog/plans` 种子一个计划.
-   `GET /__admin/billing` 检查账单状态和审计条目. `GET /__admin/state` 是共享的收藏视图.
-   `GET /1.0/kb/test/clock` 返回 Kill Bill 的时钟 JSON (`currentUtcTime`, (中文(简体) ), `localDate`, (中文(简体) ), `timeZone`) (中文(简体) ). `PUT /1.0/kb/test/clock?requestedDate=...` 预付经常性账单; `POST /1.0/kb/test/clock` 没有 `requestedDate` 重新发送到系统时间 .
-   `PUT /1.0/kb/subscriptions/:id/undoChangePlan` 取消待定的计划更改。 没有待修改,它返回400 和杀死比尔错误代码1071.
-   `GET /1.0/kb/test/queues?timeoutSec=` 返回 200,当没有适当的通知或总线事件未完成时,返回 200,然后返回 412 秒。 默认超时为5秒. 通知只有在通知 `effectiveDate` 时间或时间之前;行入 `kb_bus_events` 总是数起。 两个收藏都通过 `GET /__admin/state`。 。 。 .
-   故障预设覆盖插件失败,速率限制,网络丢失,以及webhook重复/重排/投放交付.

## API 密码

-   `KillBillAPI`, (中文(简体) ), `KillBillAPIOptions`, (中文(简体) ), `KillBillEvent`: REST处理器与事件合同.
-   账户、订阅、捆绑、发票、付款、交易和目录状态类型.
-   `createRuntime`, (中文(简体) ), `KillBillRuntime`, (中文(简体) ), `KillBillRuntimeOptions`:全程运行和webhook中枢.
-   `KILL_BILL_NAMESPACE`, (中文(简体) ), `KILL_BILL_PRESETS`: 命名空间和故障控制.
-   `document`, (中文(简体) ), `operationIds`, (中文(简体) ), `supportedOperationIds`: 生成了 OpenAPI 元数据.
-   `createServer`, (中文(简体) ), `KillBillServerOptions`, (中文(简体) ), `DEFAULT_PORT`, (中文(简体) ), `serveTarget` 从 `./server`。 。 。 .

## 菲德尔边界

模拟器的目标是确定适配器和生命周期测试。 它不运行 Kill Bill 插件, 税收引擎, 数据库, 通知工人, 或生产权利和调用算法 。 发票付款 `externalPayment=true` 例外: 它们存储在内置中 `__EXTERNAL_PAYMENT__` 方法,而不发送到网关. `GET /1.0/kb/invoices/{invoiceId}/payments` 以 `targetInvoiceId`。 。 。 . `POST /1.0/kb/invoices/{invoiceId}/payments`如Kill Bill 0.24.10所述,外部或通过付款方法在发票余额上停留:没有欠款,它没有记录任何付款并回答204(重试使用同一方法) `paymentExternalKey` 超过余额的金额拒绝与 `PaymentApiException` 7199 (英语). 标签账户 `AUTO_INVOICING_OFF` (单位:千美元)`00000000-0000-0000-0000-000000000002`未开具发票:订阅从 `chargedThroughDate` 没有, `POST /1.0/kb/invoices` 回答201和发票 什么都没有,和 `DELETE /1.0/kb/accounts/{id}/tags?tagDef=` (204) 一次性持有的标签单(平等方案) `auto-invoicing-off`) (中文(简体) ). 自动支付新发票跳过标签账户 `AUTO_PAY_OFF` (附则定义) `00000000-0000-0000-0000-000000000001`),否则只支付运行时尚欠的余额,因此自动支付运行前的通知消费者记录不再收取费用. 申请期间自动付费,所以消费者支付延迟付款 `INVOICE_CREATION` 没有发现任何欠款(204年),如"杀"法案0.24.16. `GET /1.0/kb/invoicePayments/{paymentId}` 返回该付款加 `targetInvoiceId`。 。 。 . `POST /1.0/kb/invoicePayments/{paymentId}/refunds` 添加a `REFUND` 同一笔付款(杀害法案0.24.10). `externalPayment=true` 在退款上记录了一笔单独的信用付款 并留下原件 `refundedAmount` 不变. `GET /1.0/kb/test/queues` 只有报告是否尚未提交到期通知和总线活动,包括推车通知。 未来日期的通知,包括生效日期仍然在时间之前的中期计划的修改,不算数. `GET /1.0/kb/accounts/{accountId}/overdue` 使用固定的 Kill Bill 0.24.10 配置: 合成清晰状态 `__KILLBILL__CLEAR__OVERDUE_STATE__`状态 `OD1` 如果最早的未付发票(正结余,不作废)至少已经过期一天(`timeSinceEarliestUnpaidInvoiceEqualsOrExceeds`) (中文(简体) ). 上传已过期的替换配置没有建模 。 订阅 `priceOverrides` 条目 `phaseName` 实值 `{planName}-evergreen` (或 `phaseType` 实值 `EVERGREEN` (b) 替换经常性发票项目上的目录金额 `GET /1.0/kb/subscriptions/{id}` 返回已发送的更改。 其他目录阶段没有建模. `POST /1.0/kb/subscriptions` 如 Kill Bill 0.24.10 在目录无法为计划服务时所做的: 没有上传目录( 启动模拟器 ) `plans: []`它返回500个 `java.lang.IllegalStateException` "版本Catalog目录中没有用于输入日期的现有版本...",因此上传其目录于该错误上的客户端可以恢复,一个上传目录中缺少的计划返回了400个 `SubscriptionBaseApiException` 代码2021"找不到任何名为"..."的计划".

## 账户、订阅和发票兼容性增加

以下合同为 **最好猜,不是甲骨文验证**他们跟随官员 [账户 API](https://apidocs.killbill.io/account), (中文(简体) ), [订阅资源](https://github.com/killbill/killbill/blob/master/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/SubscriptionResource.java), (中文(简体) ), [发票资源](https://github.com/killbill/killbill/blob/master/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/InvoiceResource.java), (中文(简体) ), [Shiro 管理员配置](https://github.com/killbill/killbill/blob/master/profiles/killbill/src/main/resources/shiro.ini),以及 [外部总线收听器](https://github.com/killbill/killbill/blob/master/beatrix/src/main/java/org/killbill/billing/beatrix/extbus/BeatrixListener.java)。 。 。 . 现场对等跑者退出2号,因为它需要一个孤立的租户,没有启用; 确切的供应商错误、账户特定许可、按比例分配和账单过渡没有重现.

-   `GET /1.0/kb/security/permissions` 只要求配置的基本证书和返回 `["*:*"]`,模拟默认管理员。 证书遗失或不正确 `UNAUTHORIZED`自定义角色和用户特定许可清单没有建模.
-   `PUT /1.0/kb/accounts/{accountId}` 只更新已提供的内容 `name` 财务报告和审定财务报表 `email` 区域 返回 204 键。 除非 `treatNullAsReset=true`。变化不可变 字段返回 400 `INVALID_ACCOUNT`; 其他更新字段返回模拟器限制 `UNSUPPORTED_ACCOUNT_UPDATE`。拒绝更新后,账户保持不变.
-   `POST /1.0/kb/subscriptions/{subscriptionId}/block` 记录屏蔽状态并返回 201 (《杀害法案》0.24.16,平等设想) `block-entitlement`) (中文(简体) ). 最新有效状态 `service` 应用; 任何屏蔽服务都会暂停计费,以及 `isBlockEntitlement` 制作 订阅数 `BLOCKED`。每个州增加 `PAUSE_`编号 :`RESUME_ENTITLEMENT` 财务报告和审定财务报表 `_BILLING` 订阅事件及其捆绑 `timeline`。 。 。 . `requestedDate` 可选附表a 状态。 一旦暂停计费生效,将计入其余计费期(a) `REPAIR_ADJ` 发票 `CBA_ADJ` 成为账户信用)和暂停续期账单 无;使用该信用额度,从自己的一天到下一个开出账单的一天,按比例结算的恢复账单 第一(《杀害法案》第0.24.16条,平等设想) `billing-pause-resume`) (中文(简体) ). 屏蔽状态变化 就像Kill Bill那样 立即重新开票.
-   `PUT /1.0/kb/subscriptions/{subscriptionId}/bcd` 接受 `billCycleDayLocal` 从1起至31起 和返回 204 (杀害法案 0.24.16, 均等假设) `bcd-*`) (中文(简体) ). 按日历延长的每月计划 在计费日数月, 夹到月底。 从 `effectiveFromDate` (默认的今天) 首个休养期是新日的起养期,在生效日期后期开具账单 最后一个新帐单日或前日:在新帐单日开出帐单,按比例计算 新的时期(BCD 5,从01-01帐号02-01.02-05,01-05,4/31),否则为本月 从一开始(BCD 5,从02-01起,从02-01起,从4/28起)。 订阅报告新一天 从第一个新计费日开始 半年度和年度计划遵循同样的规则 更长时间。 更改堆栈,每个从自己的生效日期接管(稍后的更改为 相同日期取代;对等设想 `bcd-twice`页:1 `billCycleDayLocal` 发送时间 订阅从一开始就是它的BCD. 从期末算起的帐单,已发行 后天,BCD搬到了那一天, 延长了整整一段时期(均等情景) `move-renewal-day-annual`) (中文(简体) ). 回溯变化返回 `UNSUPPORTED_BCD`。 。 。 .
-   `PUT /1.0/kb/subscriptions/{subscriptionId}` 改变计划(《杀害法案》0.24.16,平等) 假设 `change-*`) (中文(简体) ). 与 `billingPolicy=IMMEDIATE` (默认)更改于今日生效; 只有一个 `requestedDate`,该日期 `billingPolicy=END_OF_TERM`时 续约日期, 重新提出计划。 生效后,它开出一张发票: 从那天到下一个计费日的新计划 也就是当月的时期 (根据04-11号法案04-11.next 04-01 at 355/365修改年度计划) `REPAIR_ADJ` 联 合 国 旧计划账单期的未用份额,然后作为自动付款支付差额 会的. `priceOverrides` 与更改一起发送,替换订阅的。 每个变化都是 `CHANGE` (一) 请求时(当即请求时), `prices` 列表 订阅的每个计划都已经或正在更改,事件报告生效的计划 当他们发生。 取消取消时或取消之后的更改; `undoChangePlan` 财务报告和审定财务报表 `DELETE …/changePlan` 放弃任何尚未生效的更改。 目录是自己的 更改政策规则不读:没有政策和日期意味着 `IMMEDIATE`。 。 。 .
-   `POST /1.0/kb/invoices/dryRun?accountId=...&targetDate=YYYY-MM-DD` 预览重现 至 `targetDate` 每一次未开具发票的主动、解锁订阅, 消费身份证、排放事件、收取费用或推进计费。 它支持 `TARGET_DATE` 只有;其他干运行类型/动作返回一个明显的错误。 退税 200 有发票 `items`; 没有到期返回 204. 预览ID是合成的. 税收和 改变应享权利模拟不是模拟.
-   `POST /1.0/kb/invoices?accountId=...&targetDate=YYYY-MM-DD` 发票 账户的活跃订阅开始于或在此之前 `targetDate`不动时钟, 按自动付款方式支付,并连同发票退回201 `Location`. 待决 开始于或在此之前的订阅 `targetDate` 也是记帐的 没有发票 返回 Kill Bill 0.24.16的404,没有实体(Tomcat的HTML页面)。 37个月或以上的目标 今天之后是400个 `InvoiceApiException` 4005和15个以上项目,一个订阅a 日(包括审查)为400码4"SAFETY BOUND TRIGGERED"(均等方案) `invoice-renewal`, (中文(简体) ), `invoice-target-dates`) (中文(简体) ).
-   `GET /1.0/kb/paymentTransactions?transactionExternalKey=...` 返回所持有的付款 交易为 `PaymentJson`,或 404 个 `PaymentApiException` 7020"付款... 不存在".
-   退款会降低发票的金额 `refundAdj` 通过退款,通过 `invoicePayments` 或者说 `payments`与 `isAdjusted` 这个 添加 `ITEM_ADJ` (“发票项目调整”) `adjustments`这 降低金额并留下余额;不这样做,退款将重新打开余额. 未按键 支付或交易按其本人的id键,但外部退款的信用支付除外, 获得生成的密钥(杀害法案0.24.16,均等方案) `refund-adjusted`) (中文(简体) ).
-   `POST /1.0/kb/credits` 每笔信贷增加a `CREDIT_ADJ` (-个,给定的描述)和a `CBA_ADJ` (+amont,"调整(账户信用)")在新发票上, `COMMITTED` 与 `autoCommit=true` 财务报告和审定财务报表 `DRAFT` 否则,回答200与 `CREDIT_ADJ` 金额 (正数). `PUT /1.0/kb/invoices/{invoiceId}/commitInvoice` 执行 `DRAFT` 返回 204 (均等情况) `account-credit-draft`) (中文(简体) ). 账户的 `accountCBA` 这是 `creditAdj` 联 合 国 已承付的发票及其 `accountBalance` 期初余额减去贷方 新的发票用途 (“调整(使用账户信贷)”),新的信贷支付账户的开户 发票一次,最古老的一次,只保留其余部分(均等情况) `credit-pays-open-invoice`) (中文(简体) ).
-   `DELETE /1.0/kb/subscriptions/{id}`:权利在期末终止 `entitlementPolicy=END_OF_TERM`现在 `IMMEDIATE`,否则 `requestedDate` (一天或一天) (即时)或现在;期末停止计费 `billingPolicy=END_OF_TERM` 和默认的, 现在用 `IMMEDIATE`,或打开 `requestedDate` 与 `useRequestedDateForBilling=true`编辑 订阅读取 `CANCELLED` 从权利站起,携带 `STOP_ENTITLEMENT` 财务报告和审定财务报表 `STOP_BILLING` 账单里没有账单 收账单,停止在一个 记账期后未使用的份额 调整("调整(订阅变更)";等价假想) `cancel-after-item-adjust`(单位:千美元) `REPAIR_ADJ` 发票 `CBA_ADJ` 成为账户信用。 订阅开始前请求的瞬间是 `EntitlementApiException` 1001号.
-   一个未知的账户,订阅或发票id是404 `ObjectDoesNotExist` ("Object id=...) (中文(简体) ) 类型=ACCOUNT不存在!");未知账户外部密钥为404 `AccountApiException` 3003 (英语). Kill Bill 用Tomcat的404页回答一个错误的(非UUID)id; 模拟符ids不是 UUID , 所以模拟器用 `ObjectDoesNotExist`。 。 。 .
-   `audit=FULL` (或 `MINIMAL`在读取时,增加每张发票、发票项目、付款和交易 审计行 : `INSERT` (和 `UPDATE` (支付和交易) `X-Killbill-CreatedBy`, (中文(简体) ), `-Comment`, (中文(简体) ), `-Reason`,以及 `X-Request-Id` 作为 `userToken` (产生) 案件发生时的种子身份证明 帐单记录为 `SubscriptionBaseTransition`。 。 。 . 无 `audit` 每个物体携带 `auditLogs: []`。 。 。 .
-   带有目录的 XML 上传 `effectiveDate` 已经上传的租户是400人 `CatalogApiException` 2080"租户无效目录:";更早和更晚的日期 装入.
-   订阅、捆绑、发票、发票项目、付款和帐户的字段与 Kill Bill 0.24.16 制作回复:订阅后加 `prices`, (中文(简体) ), `events`, (中文(简体) ), `billingPeriod`, (中文(简体) ), `productName` 以及其它问题 `SubscriptionJson` 字段,报告 `startDate` 即时创造, 键入未按键的账户,按其id订阅和捆绑,按 发票号码,报告 `chargedThroughDate` 无效, 直到 并读取 `PENDING` 直至以后开始(也在其之前取消)。 这个 账户发票清单只包含金额和项目 `includeInvoiceComponents=true`。 。 。 .
-   `POST /1.0/kb/invoices/{invoiceId}` 调整指定的 `invoiceItemId` 以正数表示 `amount`,或省去其剩余可调整金额。 它返回 201 并附加 a 负数 `ITEM_ADJ` 与原项目挂钩,减少发票金额。 随你便 期初余额以外的账户贷记:a `CBA_ADJ` ("调整(账户信用)") 使余额保持在0并增加 `creditAdj` (《杀害法案》0.24.16,平等设想) `item-adjust-paid`) (中文(简体) ). 无效的项目、金额、账户或货币在不更改的情况下发生故障 发票; 其准确的错误代码是模拟或近似.
-   发票购买成功和失败 `INVOICE_PAYMENT_SUCCESS` 财务报告和审定财务报表 `INVOICE_PAYMENT_FAILED` 并行 `PAYMENT_SUCCESS` 财务报告和审定财务报表 `PAYMENT_FAILED`,与 `objectType: "INVOICE"`, (中文(简体) ), `objectId` 等于发票身份证和账户身份证。 仅待付款 `PAYMENT_PENDING`。事件既使用过程内钩又使用注册的租户召回. `POST /1.0/kb/accounts/{accountId}/invoicePayments` 支付全额未付发票余额 `targetDate` (今天默认),当没有到期时返回201,或返回204。 自定义 `paymentAmount` 财务报告和审定财务报表 `pluginProperty` 返回时 `UNSUPPORTED_INVOICE_PAYMENT`。成功的管理程序也发出 发票成功事件.

未知账户、订阅和发票身份证保留现有的404个错误信封; 租户隔离适用于这些业务.

## 常见问题

### @crvouga/mockingbird-service-kill-bill 是什么？

国有Kill Bill 模拟器 账户、订阅、发票、付款、信用、退货、目录和时钟控制\.

### 如何安装 @crvouga/mockingbird-service-kill-bill？

在项目目录运行 npm install @crvouga/mockingbird-service-kill-bill，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 mockingbird-kill-bill，可以用 npx mockingbird-kill-bill 直接运行。

### @crvouga/mockingbird-service-kill-bill 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @crvouga/mockingbird-service-kill-bill 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @crvouga/mockingbird-service-kill-bill 可以商用吗？

@crvouga/mockingbird-service-kill-bill 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @crvouga/mockingbird-service-kill-bill 的下载量有多少？

根据 npm 官方下载统计，@crvouga/mockingbird-service-kill-bill 在 2026/10/11 – 2026/11/09 这 30 天内被下载 16,405 次，日均约 547 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @crvouga/mockingbird-service-kill-bill 还在维护吗？

最新版本 3\.10\.16 发布于 2026/11/07（4 天前）；至今共发布 47 个版本，其中过去 12 个月发布了 47 个；首次发布于 2026/09/23。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

