Appearance
商家接入说明:把 Taria Pay 接到你的网站
这页写给“已经有网站、购物车或订单系统”的商家。首选路径是:
@tariapay/sdk 放在你的服务端 -> 创建 payment intent -> 前端跳转到 Taria Pay 支付订单 checkout -> 用 webhook 回写订单状态。
适合谁
- 你已经有网站、购物车或结账页
- 你希望保留自己的订单号、订单状态和客户上下文
- 你想把 Taria Pay 作为网站里的一个正式支付方式
如果你暂时不想改网站代码,先看:
接入前准备
在开始前,先确认你已经有:
- 一个 Taria Pay 商家账户
- Dashboard 里的唯一“商户标识”
- Developers 页里创建好的 API key
- 一个可以对外发请求的商家服务端
- 你自己网站里的成功页和取消页地址
重要原则:
- API key 只能放在你的服务端,不能放浏览器
- 商家不需要提交任何商户归属地址字段
merchantRefAddress由 Taria Pay 根据你的商户标识自动派生- 当前资金路径是“买家付款 -> 平台 treasury 收款”,
merchantRefAddress只用于订单归属和链上事件标记
标准接入架构
text
你的前端页面
-> 调用你的服务端
你的服务端
-> @tariapay/sdk
-> POST https://api.tariapay.com/v1/payment-intents
-> 返回 checkoutUrl
用户浏览器
-> 跳转到 Taria Pay 支付订单 checkout
Taria Pay
-> 完成支付
-> 通过 webhook 或查询接口回写状态
你的订单系统
-> 更新订单结果一句话理解:
你的系统负责“创建订单和保存业务上下文”,Taria Pay 负责“承接支付页面和完成链上付款”。
6 步完成接入
Step 1:创建商家账户并确认商户标识
先在 Dashboard 完成注册和登录。进入设置页后,你会看到自己的“商户标识”。
这个标识会被 Taria Pay 用来绑定你的 API key、订单和内部派生的 merchantRefAddress。你不需要自己生成或提交链上归属地址。
Step 2:在 Developers 页面创建 API key
进入 Dashboard 的 Developers 页面:
- 创建一个
testAPI key 先联调 - 上线前再创建
liveAPI key - 把 key 保存到你自己的服务端环境变量
如果你想走正式 SDK 接入,直接看 Developers 页里的 JavaScript SDK。
Developers 页面里最常用的几个区块分别负责:
JavaScript SDK:复制服务端创建支付、前端跳转 checkout、webhook 验签示例API Keys:创建和吊销test/livekeyWebhooks:创建回调地址并保存whsec_...signing secretDelivery Logs:查看回调成功、失败、重试次数和最后错误信息
Step 3:在服务端安装 SDK
bash
npm install @tariapay/sdk最小环境变量:
bash
TARIAPAY_SECRET_KEY=tpk_...
TARIAPAY_API_BASE_URL=http://localhost:8080
APP_URL=http://localhost:3000本地联调时可以把 TARIAPAY_API_BASE_URL 指向自己的后端;正式环境默认走 https://api.tariapay.com/v1/*。
Step 4:由你的服务端创建 payment intent
你的服务端需要决定:
- 商户订单号
orderId - 金额
amount - 币种
currency - 成功和取消跳转地址
- 需要透传的业务信息
metadata
最小服务端示例:
ts
import { TariaPay } from "@tariapay/sdk";
const tariapay = new TariaPay({
secretKey: process.env.TARIAPAY_SECRET_KEY!,
baseUrl: process.env.TARIAPAY_API_BASE_URL,
});
const paymentIntent = await tariapay.paymentIntents.create({
orderId: `order_${crypto.randomUUID()}`,
amount: "49.99",
currency: "USDC",
successUrl: `${process.env.APP_URL}/checkout/success`,
cancelUrl: `${process.env.APP_URL}/checkout/cancel`,
customer: {
email: "[email protected]",
},
metadata: {
cartId: "cart_789",
},
});
return paymentIntent.checkoutUrl;如果你的当前部署启用了多链 checkout,买家进入 checkoutUrl 后会自动看到当前环境里可执行的支付链选择。商家服务端不需要在创建 payment intent 时额外传 chainId。
Step 5:前端只拿 checkoutUrl 并跳转
浏览器端不需要知道 API key,也不应该直接调用 Taria Pay API。
最小前端示例:
ts
const response = await fetch("/api/tariapay/create-payment", {
method: "POST",
});
const payload = await response.json();
window.location.assign(payload.checkoutUrl);Step 6:接收支付结果并更新你的订单
推荐主链路:
- 配置 webhook,让 Taria Pay 主动把支付状态变化推给你
推荐兜底链路:
GET /v1/payment-intents/:paymentIdGET /v1/payment-intents?orderId=...GET /public/payment-status?txHash=<tx-hash>
你的订单系统至少需要能处理:
- 支付成功
- 支付失败
- 处理中或确认中
- 用户取消返回
更具体地说,建议把这些状态和业务动作分开:
| 状态 | 推荐动作 |
|---|---|
requires_payment | 订单已创建,等待买家进入 checkout |
processing | 支付已发起但未最终确认,先不要发货 |
confirmed | 标记订单已支付,并触发发货、开票、开通权限等动作 |
failed | 记录失败原因,允许用户重新支付 |
refunded | 同步财务与客服状态,避免内部系统仍显示完成 |
expired | 让用户重新创建新的 payment intent |
重要提醒:
successUrl和cancelUrl只负责前端体验,不应替代最终支付结果- webhook handler 要先验签,再更新订单状态
- webhook 更新要幂等,避免重复发货或重复开通权益
上线前检查清单
- Dashboard 里已经创建可用的
testAPI key - 你的服务端已经安装并能正常调用
@tariapay/sdk - 浏览器端不会暴露 API key
- 前端收到
checkoutUrl后能正确跳转 successUrl和cancelUrl都指回你自己的网站- 你已经配置 webhook,或至少准备好查询兜底逻辑
- 你知道测试环境和正式环境分别用哪一个 key
- 你知道如何在 Developers -> Delivery Logs 里排查 webhook 失败与重试
常见误区
误区 1:把 API key 放到前端
不要这么做。API key 只能放在你的服务端。
误区 2:以为商家要提交商户地址
不需要。商家侧不需要提交任何商户归属地址字段。Taria Pay 会根据你的商户标识自动派生内部使用的 merchantRefAddress。
误区 3:只做前端跳转,不做结果回写
如果你的网站里有订单状态,就一定要配 webhook 或查询兜底,否则支付成功后你的内部订单很可能不会及时更新。
误区 4:把支付订单、Paylink、Subscription 混在一起理解
如果你已经有网站,绝大多数情况下先用支付订单就够了。Paylink 和 Subscription 更适合链接收款或固定套餐场景。
下一步阅读
- 想直接照步骤联调:看 JavaScript SDK
- 还没决定产品形态:看 接入方式总览
- 需要服务端接口细节:看 Merchant API 概览
- 需要状态回写方案:看 Webhook 与签名校验