如何集成
实际操作中,商户通常先在自己的系统中创建业务订单,然后在需要支付时调用 AinePay 的收银台或者 inline 支付方式,将返回的稳定币支付信息展示给客户,商户系统接收推送和查询 AinePay 来更新订单支付信息,完成整个交易流程。
1. 获取支持的币种和链
在向客户展示支付方式之前,商户应调用 支持的币种 API 来获取 AinePay 当前可用的币种和链。
目前,AinePay 支持以太坊链的 USDT 和 USDC,之后将陆续添加广泛使用的稳定币及其支持的区块链。
| 币种 | 链 | 链名称 | 合约 |
|---|---|---|---|
| USDT | ETH | Ethereum(ERC20) | 0x630E906E953Da1808a7DB78cCA9FdFde2029aEB9 |
| USDC | ETH | Ethereum(ERC20) | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 |
2. 选择支付方式后创建支付订单
选择支持的支付方式后,商户应在自己的后端组装订单并通过相应的 API 将支付请求发送到 AinePay 支付系统。请求中应包含商户确定该订单的唯一 ID,AinePay 使用该 ID 来防止同一订单被重复支付。
AinePay 目前支持两种支付集成模式:
- 收银台模式:调用 创建收银台订单 获取 AinePay 托管收银台的支付
url并跳转到该页面完成支付,商户不用自己来定义支付流程和客户交互 UI,AinePay 已帮您完成了支付页面的设计。 - AinePay 内嵌模式:调用 创建内嵌订单来接收支付地址数据,并在您自己的产品界面中渲染支付体验。当您需要自定义支付流程,做完善的数据 校验时可以使用此方式。
两种模式都在 AinePay 中创建订单,主要区别在于客户是被重定向到 AinePay 托管页面,还是商户在自己的界面中显示支付详情。
3. 通过回调接收支付状态变更,并通过查询 API 确认最终状态
客户支付后,AinePay 向商户通知 URL 发送异步回调来报告订单状态变更。有关回调数据和签名验证详情,请参阅 支付通知。
当区块链确认数达到所需阈值时,订单状态变为 PAID,表示支付完成。回调应被视为状态转换的快速通知渠道,商户应始终使用 查询订单 API 确认订单状态。
| 状态 | 含义 |
|---|---|
INIT | 订单已创建,等待支付。 |
PENDING | 区块链已存在转账,但交易未最终确认,支付进行中。 |
PAID | 支付成功。 |
EXPIRED | 订单过期,支付失败且不能重新支付。 |
PAID 和 EXPIRED 是最终状态,不要将 PENDING 视为最终业务结果,仅当查询订单状态为 PAID 时才继续之后的履约流程。
4. 过期订单处理
AinePay 维护了完整的用户账户记录,如果订单变为 EXPIRED 或其他异常情况导致该笔订单失败,但用户之后仍然发送了资金,该笔资金会记录在用户的账户余额中。当商户为同一用户创建下一个订单时,会首先尝试使用该用户可用账户余额进行结算,如果可用余额足够,订单直接变为 PAID,用户无需再次支付。