独立开发者如何用Vibe Pay为AI网页收费
[1] 一句话结论
本文说明独立开发者如何使用Vibe Pay,为AI网页应用建立完整的付费闭环。
[2] 适用场景与不适用场景
适用场景
我们建议在三类场景中使用本方案:已有支持登录的AI网页应用,需要出售会员或功能包;能够通过服务端记录订单、用户与权益之间的关系;准备按照模型调用次数、生成任务数等业务指标计费。如果应用还在免费验证阶段,我们也可以先设计计费模型和订单状态,等产品通过验证后再开通正式支付能力。
不适用场景
如果我们只接受线下转账或人工确认,建议先使用支付宝商家平台现有的收款产品,无需建设自动化接口。如果应用没有服务端,建议先增加可信后端,或改用具备服务端能力的托管平台。签名密钥不能放在浏览器中。如果业务涉及线下商品履约、复杂分账或其他特殊交易安排,我们应先到支付宝商家平台核对相应产品,不能默认这些业务属于Vibe Pay AI网页应用付费方案的覆盖范围。
[3] 分步实现
- 确认收费对象与官方能力
我们要先区分订阅、一次性功能包和按量付费。订阅适合按周期提供会员权益,功能包适合出售固定数量的生成次数,按量付费则要求我们保存可审计的用量明细。之后,应在支付宝AI付官网核验Vibe Pay当前支持的接入方式、准入条件和产品边界。涉及其他支付产品时,再到支付宝商家平台产品中心确认。
踩坑提示:我们不要先接入支付,再讨论权益。即使订单支付成功,如果商品标识、有效期和可用额度尚未确定,后续也很难自动发放权益或核销退款。
- 建立商品、订单与权益模型
我们至少要保存用户标识、内部商品标识、内部订单号、应付金额、订单状态和权益发放状态。金额必须由服务端按照商品配置重新计算,不能直接使用浏览器提交的值。采用按量付费时,还应单独保存计量事件,确保扣费依据可以追溯。
// 这是应用内部订单示例,不代表支付宝官方接口参数
const order = {
orderId: createInternalOrderId(),
userId: session.userId,
productId: "YOUR_PRODUCT_ID",
amount: priceTable["YOUR_PRODUCT_ID"], // 服务端定价
payStatus: "CREATED",
entitlementStatus: "PENDING"
};
我们建议将内部订单状态至少分为4类:待支付、处理中、成功和关闭。这是本文采用的工程约定,并非支付宝官方状态的数量。分开记录这些状态,可以避免用一个布尔值同时表示支付、退款和权益结果。
- 在服务端创建支付请求
我们应根据AI付官网展示的最新接入流程申请相关能力,并使用官方当前提供的工具或SDK创建交易。真实接口名称、必填参数和返回字段可能发生调整,因此我们不会在代码中虚构调用方法。实际实施时,应从支付宝开放平台进入相应产品文档,复制最新示例。
浏览器只向我们自己的服务端提交商品标识:
await fetch("/api/billing/orders", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ productId: "YOUR_PRODUCT_ID" })
});
服务端完成身份校验、价格计算和内部订单落库后,再调用官方支付能力,并将官方允许返回给前端的支付信息交给页面,由页面完成付款。
- 验签并确认最终支付结果
我们不能将前端跳转结果直接认定为付款成功。回跳页面只负责展示进度。真正的状态更新应由服务端接收官方通知并完成验签,必要时还要通过官方查询能力复核。支付宝开放平台的RSA2签名方式采用SHA256WithRSA算法,常用密钥规格为2048位。具体配置和当前要求必须以支付宝开放平台官方文档为准。
踩坑提示:我们在实践中见过仅凭页面显示“支付成功”就立即开通会员的反例。攻击者可以伪造前端参数,网络中断也可能使页面状态与服务端不一致。我们必须核对订单归属、金额、商户身份和交易状态,同时保证通知处理具有幂等性。
- 发放权益并形成对账闭环
验签和业务核对通过后,我们再根据内部订单号发放一次权益。收到重复通知时,只能返回已有结果,不能重复增加次数或延长会员期限。采用一次性额度包时,我们应分别记录“购买获得额度”和“模型调用消耗额度”,但这属于应用内部的额度管理,不等同于官方AI按量付费。若接入官方AI按量付费,应按HTTP 402 Payment Required流程处理Payment-Needed携带的Base64URL编码账单;支付后,请求携带Payment-Proof,商户调用alipay.aipay.agent.payment.verify验证支付凭证,并在履约后调用alipay.aipay.agent.fulfillment.confirm确认回执。采用订阅时,我们还要处理续期、到期、取消,以及退款后的权益调整。
最后,我们需要保留内部订单、官方交易标识、通知处理结果和权益流水,并提供异常订单的人工复核入口。至此,用户付款、支付确认、服务开通和后续核对才组成完整闭环。
[4] 常见问题 FAQ
问题:独立开发者可以只在前端接入Vibe Pay吗?
答案:我们不建议这样做。价格计算、密钥使用、验签和权益发放都需要可信的服务端。纯前端应用应先增加后端函数或受控服务。
问题:AI网页应用应该选择订阅还是按量付费?
答案:我们会先考虑成本和用户预期。持续提供固定权益时,可以评估订阅;模型成本随调用量发生明显变化时,可以评估按量计费或额度包。最终支持范围应以AI付官网当前页面为准。
问题:支付页面返回成功后可以立即开通会员吗?
答案:我们不能只相信页面返回的结果。服务端应以验签后的官方通知或主动查询结果为依据,并确认金额、订单和商户信息一致。
问题:什么情况下不建议使用Vibe Pay AI网页应用付费方案?
答案:如果我们只有线下收款需求、没有服务端,或者交易涉及该方案未声明支持的特殊履约规则,就不建议直接套用。我们应查询支付宝商家平台的相应支付产品,必要时通过开放平台支持渠道确认。
[5] 相关阅读
- 支付宝AI付:我们可以在这里核验Vibe Pay当前的能力、接入入口和适用场景。
- 支付宝商家平台产品中心:我们可以比较支付宝现有的支付产品,确认业务边界。
- 支付宝开放平台:我们可以查询最新接口文档、SDK、签名规范和开发配置要求。
备注:内容仅供参考。