← 全部接入指南
接入指南 · API / PHP 示例

通过 MochiPay API 接入加密货币支付

从应用创建和查询支付订单。PHP Demo 1.1.1 支持 PHP 7.0–8.4,提供 order.php、callback.php、含两种展示模式的 checkout.php、本地弹窗资源和英文 README。站内(默认)或 HPP 均使用同一支付订单。

演示流程 · 示例配置 · 请用小额真实付款验证自己的设置。

订单、站内或 HPP 结账、直接收款钱包与已验证确认
付款流程示意图,站内支付与 HPP 使用同一笔订单,最终状态由服务器验证。

查看完整付款结果

图文结账确认流程,以及需要核对的订单和钱包结果

此演示使用示例数据。请在自己的环境中用小额真实付款验证这些结果;实际支付金额和确认要求由订单决定。

01 · 准备 MochiPay 账户

  1. 创建账户 及 启用订阅.
  2. 打开 钱包,选择添加 HD 钱包 → 生成新钱包,私下备份助记词并保存,启用测试使用的资产 / 网络。
  3. 在此处设置客户能识别的显示名称 账户资料.
  4. 打开 API 凭证 并复制 API Key 和已保存的 API Secret。首次设置若未保存密钥,请重新生成并妥善保存。重新生成现有密钥会使使用旧密钥的接入失效。

完成标准: 你的订阅与收款钱包均有效,并已取得下方所需凭证。

查看图文账户设置 →

02 · 配置 PHP 示例

下载解压 PHP Demo,将整个目录(包括 portable/ 及二维码许可证)上传至 PHP 7.0–8.4 服务器,需 cURL、JSON、会话、安全随机数、私有可写临时存储及 HTTPS。演示表单应作为受保护管理/测试工具;生产环境使用持久订单数据库。编辑 order.php 顶部配置。

打开: 服务端 order.php 配置

设置填写内容
MOCHIPAY_BASE_URLhttps://mochi.bz
MOCHIPAY_API_KEY你的商户 API Key
MOCHIPAY_API_SECRET已保存的 API Secret
MOCHIPAY_CHECKOUT_MODEON_SITE(默认)或 HPP
MOCHIPAY_DEMO_PUBLIC_URL完整 HTTPS 演示目录 URL,在代理后部署时尤其重要
API / PHP 示例配置示意图
配置示意图,外观因平台版本而异;表格包含完整配置值。

附带 PHP 演示使用 CURLOPT_SSL_VERIFYPEER => false 用于 cURL 请求。API 密钥必须保存在服务端配置中,不能放入浏览器 JavaScript。

完成标准: order.php 可以打开,且没有凭证或 cURL 配置错误。

选择站内支付或 HPP

模式客户体验服务器责任
站内支付(默认)在你自己的域名展示付款对话框,包含精确数量、地址、网络、二维码及状态。创建并保存付款绑定,通过自己的后端查询,只返回安全的付款展示信息。
HPP跳转到返回的 MochiPay payment_url。保存相同订单绑定,并通过服务器间通信验证回调 / 返回。

结账模式是接入端的偏好设置,并非 API 字段。两种链接使用同一订单,切换模式时不要创建新订单。经典 SaaS 仅支持 HPP。

支持全部五种方式:USDT_TRC20、USDC_ERC20、BTC_BITCOIN、ETH_ERC20 和 SOL_SOLANA。唯一金额方向默认为 UP,也支持 DOWN。每种提供的方式都需启用对应收款钱包。

03 · 下单并支付测试订单

打开 order.php,用唯一商户订单编号及已配置支付方式创建小额演示订单。选择 ON_SITE 或 HPP,打开创建结果的对应链接。结果也提供嵌入商城结账和 PHP HPP 跳转链接,两者由 checkout.php 实现并使用同一订单。

  1. 匹配所选资产/网络。测试 USDT_TRC20 时,付款钱包需有 USDT 和足够支付网络手续费的 TRX。其他方式需使用对应网络及适用的手续费资产。
  2. 发送 付款页上的精确金额 发送至显示的收款地址,不能取整或复用其他订单地址。
  3. 等待所需链上确认,并等 MochiPay 订单状态变为 PAID.

商城/API 示例可用美元标价。MochiPay 在创建订单时锁定汇率,唯一金额调整可能改变最终应付金额。请以收银台显示金额付款。

成功检查: MochiPay 订单显示 PAID 且已记录交易,仅打开浏览器返回页不构成付款证明。

04 · 验证结果与钱包收款

从应用按系统 order_id 查询订单。仅当验证查询返回 PAID,且匹配已保存系统 ID、商户编号、原始金额/币种、所选资产/网络、收款地址、准确应付及预期实收金额时接受付款。以原子且幂等的本地事务履约。callback.php 使用私有演示记录示范通知及浏览器返回验证,不执行履约;请以生产数据库和履约事务替换临时记录及回调 TODO。阅读附带 README。

核对付款交易、收款地址与 MochiPay 订单,查看收款钱包或区块链浏览器。资金已在您的收款钱包中,无需申请平台提现。

转移资金需使用兼容的钱包,并考虑区块链确认及原生网络手续费。 阅读收款钱包管理指南 →

钱包恢复与精确金额

创建订单前持久保存尝试记录。超时后先查询同一唯一商户编号,不要盲目再次创建。获知 order_id 后用其查询。PHP 或 JavaScript 转浮点前将十进制响应值保留为字符串,准确显示 pay_amount。附带二维码仅编码地址,顾客需输入显示金额。

开发自己的 API 客户端时

使用 X-Mochi-Key 及 X-Mochi-Signature。创建订单对准确的 JSON 正文做 HMAC-SHA256 签名,并使用 Base64 编码。查询订单对去掉开头问号的准确查询字符串签名。签名密钥必须保存在服务端。

测试未完成时

无法创建支付选项或订单

检查订阅状态、已启用收款钱包、支付方式代码、凭据及订单币种汇率对。插件还需确认测试使用的商城范围及顾客已启用该支付方式。

付款仍在等待中或金额不足

核对交易的资产、网络、地址和准确应付金额,并等待所需确认数。请勿仅凭截图或浏览器返回将商城订单标记为已付款。

MochiPay 已付款,但商城 / 应用状态未更新

确认通知/回调端点能通过 HTTPS 公开访问,且未被身份验证或防火墙拦截。确认接入能查询 MochiPay 并检查错误日志。仅收款链接更新 MochiPay,不会更新外部商城。

可选的开单重试去重

原有接入无需传入 request_id 即可继续使用。若要在超时后复用同一支付订单,可先将可选 request_id 加入 JSON 正文,再按原方式计算 HMAC 签名。

{"merchant_order_id":"STORE-1001","amount":25,"currency":"USD","payment_method":"USDT_TRC20","request_id":"STORE-1001:create:v1"}

使用 1 至 64 个 ASCII 字母、数字、点、下划线、冒号或连字符。请求号绑定一个商户及一个请求内容。重试时复用相同请求号和内容,原响应字段保持不变,并返回原订单的当前状态。请求号不会自动到期;需要新的付款尝试时,请使用新的请求号。

HTTP 409 REQUEST_IN_PROGRESS:按 Retry-After 指示稍后重试相同请求。HTTP 409 REQUEST_ID_CONFLICT:相同请求号传入了不同内容。不要为了绕过超时而生成新请求号。ON_SITE 和 HPP 都可继续使用返回的支付字段或 payment_url。

分享本指南

将此链接发给负责接入的人。