用途:把用户自建网站接入 Portaly 数字商品结账。用户负责商品展示 UI,Portaly 负责结账、支付、邮件与购买成功页。流程为跳转型托管结账:网站用 API 拉取商品并展示,买家付款时创建结账会话并跳转到返回的 checkoutUrl,Portaly 处理支付、发送确认邮件并提供交付页,购买完成、支付失败或退款时向回调地址发送签名 webhook。
环境:API 主机 https://portaly.ai(可用 PORTALY_API_HOST 覆盖)。API key 前缀 pcs_live_ 为正式模式,pcs_test_ 为测试模式;测试模式不产生真实扣款,订单进入独立沙箱账本,可在 Portaly Payment 后台把订单表切到 Test 查看,也可用测试 key 调 GET /api/digital-products/orders 查询。测试卡号由结账页打印,不要自行编造;测试购买不会发送确认邮件、orderSuccessPageUrl 不解析订单、无发票、不计入创作者收入与结算、无评价邀请。
用法:需先有 Portaly Payment 账号与 API key(注册 https://portaly.cc/payment,创建 key 在 https://portaly.cc/admin/creator-subscription)。密钥由用户自行写入 .env(PORTALY_API_KEY、PORTALY_CALLBACK_SECRET),不要通过聊天粘贴,并确认 .gitignore 含 .env。主要接口:GET /api/digital-products 列商品;GET /api/digital-products/{productId} 取详情;POST /api/digital-products/checkout-sessions 创建会话(items、totalAmount、callbackUrl、merchantOrderNumber 等);POST /api/digital-products/{productId}/status 可上下架(需全权限 key)。价格一律用 effectivePrice,不要用 sale ?? price。全免费商品 totalAmount 必须为 0,含付费商品必须大于 0,否则返回 400 TOTAL_AMOUNT_INVALID。库存不预留,需处理 400 OUT_OF_STOCK。webhook 实现前应加载 references/callback-signature-v1.md 并校验签名与事件。
限制:商品展示与购物车 UI 由用户自行实现;支付方式完全由 Portaly 托管页决定;测试模式不覆盖扣款后的下游流程;通过此 API 创建的订单不产生联盟佣金。详细 API 契约见 references/api-contract.md。