充值余额
支付宝充值即将开放;微信支付将在域名启用 HTTPS 后开放。开放之前暂时无法在线充值,如有疑问请联系 finance@superheat.cloud。
Superheat CN 是预付制,以人民币(CNY)计价。余额买的是 GPU 时长和存储,它属于组织而不属于某个人。付款通过支付宝或微信支付扫码完成。
充值步骤
- 在 console.superheat.cloud 的控制台里打开账单。
- 选择充值额度。
- 在支付方式里选择支付宝或微信支付。这里只列出当前已开通的方式。
- 挑一个套餐,或者输入自定义金额。
- 需要发票时,打开开具发票并填好发票信息,见发票。
- 选择去支付。对话框会显示二维码、金额和倒计时。
- 打开支付宝或微信的「扫一扫」扫码付款。支付方确认后,余额立即到账。
| 选项 | 金额 |
|---|---|
| 套餐 | ¥50、¥100、¥500 |
| 自定义 | ¥20 到 ¥10,000 之间的任意金额 |
自定义金额可以直接用中文输入法输入,全角数字也能识别。二维码 15 分钟内有效。在手机上,支付宝订单会显示打开支付宝付款按钮,直接跳到支付宝 App;微信支付则请先截图,再在微信「扫一扫」里从相册选取。
充值开放之前,充值额度对话框只会显示「此控制台暂未开通支付。」。
余额不会过期。没有订阅,也没有后付费:你手上有多少余额,就能花多少。
付款时对话框显示什么
| 你看到的 | 它的意思 |
|---|---|
| 二维码,下方是「等待支付…」和「…后失效」倒计时 | 二维码有效,扫码付款即可 |
| 正在向…确认支付结果… | 倒计时已到,控制台正在向支付宝或微信支付确认你是否在最后几秒完成了付款 |
| 额度已到账 | 余额已到账,可以花了 |
| 二维码已失效 | 这个二维码没有收到付款,在支付宝或微信那边也已关闭,扫了也付不了。如果你在它失效之前已经付过,余额会自己更新——失效后的 24 小时内,平台会再向支付方确认——请勿重复支付。要重新付款,选择重新生成二维码 |
| 订单已关闭 | 订单在付款前已关闭,没有产生任何扣费 |
已经付过款,就等余额更新,不要再扫第二个二维码。付完款可以直接关闭窗口:没人盯着时,Superheat CN 也会继续向支付方核实,付过的钱照样入账。
余额怎样入账
余额只根据支付方的确认入账:支付方发来的签名通知,或控制台自己向支付方查询的结果——绝不根据浏览器发来的任何东西。无论收到几次确认,每个二维码只入账一次。
入账的金额以支付方报告的为准,而且必须和订单金额一致。不一致时不会入账,这笔钱留在支付方,由 Superheat CN 财务团队人工退款。
如果一笔付款在 Superheat CN 为它入账之前,就已经在支付宝或微信支付那边被退回,入账的是支付方留下的那部分:部分退款时,入账金额是订单金额减去已退的部分;全额退款时不入账任何金额,订单关闭。支付方没有说明退了多少时(微信支付的查询结果只写“转入退款”),订单同样关闭,并标记给财务团队人工核对处理。
同一时间,每个用户最多持有五个未付款的二维码;再发起会以 TOO_MANY_OPEN_ORDERS 被拒绝,付掉其中一个或等它们失效即可。关掉对话框后,在同一个组织里用同样的支付方式和金额再次发起,只要原来的二维码还剩两分钟以上,你拿回的就是原来那个二维码,而不是新的。开具发票的订单不会复用,每次都是新订单。
发票
付款前打开开具发票,这笔充值付款成功后就会为它开具发票。
| 字段 | 说明 |
|---|---|
| 类型 | 企业或个人 |
| 发票抬头 | 必填 |
| 纳税人识别号 | 企业必填,15、18 或 20 位大写字母或数字。个人发票不显示这一项 |
| 接收邮箱 | 必填,用于接收发票 |
| 地址、电话与开户行(选填) | 注册地址、电话、开户银行、银行账号 |
发票信息按组织保存,下次自动填好;只有管理员能查看和修改。每笔充值都会保留付款当时的信息副本,之后修改发票信息不会影响已经创建的订单。
发票由 Superheat CN 财务团队开具。对发票有任何疑问,请写信到 finance@superheat.cloud。
谁可以充值余额
在一个组织里,充值余额是管理员操作。
| 操作 | 管理员 | 成员 |
|---|---|---|
| 查看余额 | 是 | 是 |
| 查看交易记录和支出图表 | 是 | 是 |
| 部署实例并花掉余额 | 是 | 是 |
| 充值余额并管理发票信息 | 是 | 否 |
成员打开账单页面时,看得到余额、支出图表和完整的交易历史,但充值额度按钮会被一条说明取代:「只有组织管理员可以充值额度或管理支付信息。」需要充值的成员只能去找管理员。
在你自己的个人组织里你永远是管理员,所以这一条只有等你加入别人的组织之后才会起作用。参见 角色与权限。
余额按组织各自独立
每个组织都有自己的余额和自己的账本。在控制台里切换组织,就切换了你正在看的是哪份余额,以及你下一次部署会从哪份余额里扣。余额不能在组织之间搬来搬去。
余额用光时
部署实例和启动一个已停止的实例,都要求余额至少够组织届时要跑的一切跑一小时:这个实例的 GPU 加磁盘,加上其他所有运行中、启动中或正在创建的实例的 GPU 加磁盘,以及所有已停止实例的磁盘。不够时两者都会以 INSUFFICIENT_BALANCE 错误失败,直到你充值。已经在跑的实例则由 ¥0 和 −¥35 两道自动阈值来处理,见 自动停止与自动销毁。
通过 API
GET /v1/billing/config 返回本站的币种、当前可用的支付方式,以及套餐和金额上下限,金额单位是分:
curl "$SUPERHEAT_API/v1/billing/config" \
-H "Authorization: Bearer $SUPERHEAT_TOKEN" \
-H "X-Org-Id: $ORG_ID"
{
"currency": "CNY",
"providers": ["alipay"],
"packs_minor": [5000, 10000, 50000],
"min_minor": 2000,
"max_minor": 1000000
}
充值开放之前,providers 是一个空列表。
一次充值就是一个扫码付款的订单:
curl -X POST "$SUPERHEAT_API/v1/billing/orders" \
-H "Authorization: Bearer $SUPERHEAT_TOKEN" \
-H "X-Org-Id: $ORG_ID" \
-H "Content-Type: application/json" \
-d '{"provider": "alipay", "amount_minor": 5000, "want_invoice": false}'
| 字段 | 取值 |
|---|---|
provider | alipay 或 wechat,必须出现在 GET /v1/billing/config 的 providers 里 |
amount_minor | 以分计的整数:一个套餐金额,或 min_minor 到 max_minor 之间的值。5000 = ¥50 |
want_invoice | true 表示为这笔充值开具发票,需要先保存发票信息。默认 false |
响应就是这个订单:
| 字段 | 含义 |
|---|---|
id | 订单 id,以 sh_ 开头 |
status | pending、paid、expired 或 closed |
qr_payload | 要渲染成二维码的内容 |
pay_url | 仅支付宝订单在待支付时提供:手机可以直接打开的付款链接 |
expires_at | 二维码失效的时间 |
amount_minor、currency | 金额(分)和币种 CNY |
然后轮询这个订单,直到 status 变成 paid、expired 或 closed:
curl "$SUPERHEAT_API/v1/billing/orders/$ORDER_ID" \
-H "Authorization: Bearer $SUPERHEAT_TOKEN" \
-H "X-Org-Id: $ORG_ID"
paid 表示余额已经到账。过了 expires_at 之后,服务端会先向支付方问最后一次,再决定是 paid 还是 expired,所以刚过期的订单可能还会短暂显示 pending。订单不属于当前组织时返回 404 ORDER_NOT_FOUND。
want_invoice: true 需要组织已经保存了发票信息,否则返回 422 INVOICE_PROFILE_REQUIRED。用 PUT /v1/billing/invoice-profile 保存,用 GET 读取(没有保存过时返回 null):
curl -X PUT "$SUPERHEAT_API/v1/billing/invoice-profile" \
-H "Authorization: Bearer $SUPERHEAT_TOKEN" \
-H "X-Org-Id: $ORG_ID" \
-H "Content-Type: application/json" \
-d '{"kind": "company", "title": "示例科技有限公司", "tax_id": "91310000XXXXXXXXXX", "email": "invoice@example.com"}'
kind 为 company 或 personal;address、phone、bank_name、bank_account 可选。其他错误见 错误代码。
创建订单和读写发票信息都是管理员操作,需要一个已登录的管理员会话。shk_ 组织 API 密钥以成员身份行事,会以 403 ADMIN_REQUIRED 被拒绝。读取 GET /v1/billing/config 和查询订单状态则不要求管理员。参见 API 密钥。