Accounts、Credits 与 Payment

Downcity 官方身份、额度、支付和用量服务。

@downcity/services 提供四个职责独立的领域:

  • AccountsService 拥有登录与用户身份。
  • CreditsService 拥有 Primary / Ephemeral Cards 和账务记录。
  • PaymentService 拥有支付订单、Checkout 与 webhook。
  • UsageService 聚合用户的 Credits 消费与 AI 技术用量。
const credits = new CreditsService();
const ai = new AIService({ credits });
const payment = new PaymentService({
  providers: [stripePaymentProvider()],
  resolve_topup: ({ topup_amount_minor }) => ({
    credits: topup_amount_minor * 10_000,
  }),
  on_paid: async (record) => {
    await credits.topup({
      card: { kind: "primary", user_id: record.user_id },
      credits: record.credits,
      source: "payment",
      ref: record.payment_id,
      idempotency_key: `payment:${record.payment_id}`,
    });
  },
});

federation.use(new AccountsService());
federation.use(credits);
federation.use(ai);
federation.use(payment);
federation.use(new UsageService({
  ai_usage_reader: ai,
  credits_usage_reader: credits,
}));

Credits Cards 开始了解额度模型,支付接入见各 Provider 页面。