mcpField
A
autumn-add-payments

autumn-add-payments

github.com/useautumn开发154 次安装4 周前更新
代码仓库

关于 autumn-add-payments

Autumn Payments 是实现 Autumn 支付流程的技能指南,涉及 Stripe 结账。内容涵盖结账与购买确认、产品状态场景、预付数量,以及 React 和后端集成要点。

主要功能

  1. 01结账与购买确认流程
  2. 02处理升级、降级和取消场景
  3. 03支持预付产品数量设置
  4. 04提供 React 与后端实现指引
  5. 05说明常见集成注意事项

适用场景

  1. 01构建订阅结账流程
  2. 02根据客户产品场景显示操作
  3. 03销售按席位或预付费产品

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/useautumn/skills --skill autumn-add-payments

安装后在 Claude Code 中输入/autumn-add-payments确认已加载。

详细介绍

Autumn Payments

代码示例和最新 API 请始终参阅 docs.useautumn.com。

Autumn 会自动处理 Stripe 结账、升级、降级和取消。


快速参考

支付流程
  1. checkout - 返回 Stripe URL(新客户)或预览数据(回头客)
  2. attach - 在卡片已保存时确认购买
结账结果
字段说明
urlStripe 结账 URL(已保存卡片时为 null)
product包含场景信息的目标产品
current_product客户当前的产品
lines发票明细项
total以主要货币单位表示的金额
currency货币代码

产品场景

场景含义操作
new尚未订阅订阅
active当前方案当前方案
scheduled已安排已安排
upgrade更高级别升级
downgrade更低级别降级
renew已取消续订

React 实现

import { useCustomer, usePricingTable } from "autumn-js/react";

const { checkout, attach } = useCustomer();
const { products } = usePricingTable();

// Checkout flow
const data = await checkout({ productId: "pro" });
if (data.url) {
  window.location.href = data.url;  // New customer
} else {
  // Show confirmation dialog, then:
  await attach({ productId: "pro" });
}

// Cancel
const { cancel } = useCustomer();
await cancel({ productId: "pro" });
// Or downgrade to free:
await attach({ productId: "free" });

后端实现

import { Autumn } from "autumn-js";

const autumn = new Autumn({ secretKey: process.env.AUTUMN_SECRET_KEY });

// Checkout
const { data } = await autumn.checkout({ customer_id, product_id: "pro" });
if (data.url) return redirect(data.url);

// Attach (after user confirms)
await autumn.attach({ customer_id, product_id: "pro" });

// Get products with scenarios
const { data: productsData } = await autumn.products.list({ customer_id });

预付费定价

对于按席位计费或预付费产品,请传入数量:

await autumn.checkout({
  customer_id,
  product_id: "credits_pack",
  options: [{ feature_id: "credits", quantity: 500 }],
});

按钮文本模式

function getButtonText(product: Product): string {
  const { scenario, properties } = product;
  if (properties?.has_trial) return "Start Trial";
  if (scenario === "active") return "Current Plan";
  
  const text = { upgrade: "Upgrade", downgrade: "Downgrade", new: "Subscribe" };
  return text[scenario] ?? "Enable";
}

常见注意事项

  1. URL 字段 - 使用的是 data.url,而不是 data.checkout_url
  2. 不要编写自定义逻辑 - 使用 products.list 获取场景信息
  3. 自动按比例计费 - Autumn 会自动处理升级/降级的按比例计费
  4. 通过免费方案取消 - 建议关联免费方案,而不是直接取消
  5. 成功 URL - 传入 success_url,以便在 Stripe 结账后重定向

资源

评论

支持 Markdown