# Hinkal Private Send 显示scheduled却未收到：查逐收款人状态和费用

整理：链小知（AI 辅助）
资料核对日期：2026-10-12
引用地址：https://lianxiaozhi.com/tools/guides/hinkal-private-send-scheduled-recipient-fee-check
难度：进阶
核验方式：官方文档整理，未执行真实账户操作

将API orderId或SDK scheduleId与存款和逐收款人withdrawal配对，分清排队、提交与确认，核对原amountIn/amountOut和费用而非只看订单顶层状态。

## 使用工具
- [Hinkal SDK / API](https://lianxiaozhi.com/tools/hinkal) · [官方入口](https://hinkal.io/)

## 前置条件
- 本人已有脱敏private-send请求/准备响应、deposit交易与订单/排程状态记录，包含链、token、收款人、数量和采集时间。
- API orderId与SDK scheduleId单独保留；没有原收款人映射时不得猜数组顺序对应谁，不分享完整私人历史或会话凭据。
- 本页只检查原记录，不运行demo、创建session、签名请求、广播存款、发送资金或执行恢复。

## 1. 区分准备对象与已广播存款

API POST /private-send准备响应列orderId、serializedTx、approvalAddress、amountIn/amountOut/fee/nonce；交易字节存在不代表已经签名或发送。文档前文signed格式与响应表unsigned措辞不同，按原回执判实际阶段。

Solana approvalAddress明确总null，不能按ERC20批准缺失判断失败。SDK depositAndWithdraw返回depositTxHash和scheduleId；APIorderId、SDKscheduleId、deposit hash各有角色，不能互相当状态接口参数。

核对结果：原操作有准备/提交阶段、产品和三个ID角色，缺广播回执没有被补成成功。
依据：[Hinkal API Private Send 两阶段流程](https://hinkal-team.gitbook.io/hinkal/hinkal-api/description/private-send.md)
依据：[Hinkal TypeScript SDK 查看会话与状态](https://hinkal-team.gitbook.io/hinkal/hinkal-sdk/sdk-description.md)
依据：[Hinkal Get Private Send Order OpenAPI](https://hinkal-team.gitbook.io/hinkal/hinkal-api/api-reference/get-private-send-order.md)

## 2. 核对已有状态查询的鉴权和身份

API GET /private-send/{orderId}要active session，sessionId/nonce在query且有请求签名。这里URL替换具体orderId，但签名绑定用literal GET /private-send/:orderId；仅检查既有记录的方法摘要，不能复用其他endpoint签名或创建新签名。

SDK checkSendTransactionStatus以scheduleId读取transactions并给执行chainId；REST返回scheduledTransactions。401权限/nonce问题、404 Order not found、400/500分别保留，不用错误响应证明资产消失，也不把SDK对象按REST外壳解析。

核对结果：状态记录属于同一order/schedule且方法/权限可解释，私密认证值不进入核对表。
依据：[Hinkal API Authentication](https://hinkal-team.gitbook.io/hinkal/hinkal-api/description/authentication.md)
依据：[Hinkal Get Private Send Order OpenAPI](https://hinkal-team.gitbook.io/hinkal/hinkal-api/api-reference/get-private-send-order.md)
依据：[Hinkal TypeScript SDK 查看会话与状态](https://hinkal-team.gitbook.io/hinkal/hinkal-sdk/sdk-description.md)

## 3. 把顶层scheduled与每个付款状态分开

API顶层processing表示等待存款或安排withdrawal，scheduled表示已排入队列，文档称终态的是安排过程，不是所有收款人都完成。scheduledTransactions可null，缺列表时不能生成成功条目。

逐recipient状态为pending/processing/waiting_for_relayer/sent_on_chain/completed/failed，方法schema和SDK还列deposit_failed。sent_on_chain是已提交，completed按文档为链上确认；失败或尚未提交的收款人不能被顶层scheduled掩盖。

核对结果：逐付款状态与顶层状态并列，所有成功结论都绑定具体付款记录而非仅订单标签。
依据：[Hinkal API Private Send 两阶段流程](https://hinkal-team.gitbook.io/hinkal/hinkal-api/description/private-send.md)
依据：[Hinkal Get Private Send Order OpenAPI](https://hinkal-team.gitbook.io/hinkal/hinkal-api/api-reference/get-private-send-order.md)
依据：[Hinkal TypeScript SDK 查看会话与状态](https://hinkal-team.gitbook.io/hinkal/hinkal-sdk/sdk-description.md)

## 4. 核对时间、hash与原收款人

SDK状态说明scheduledTime为ISO8601，APIschema只标string；按实际版本保留原时间和时区，缺格式不按秒/毫秒猜。txCompletionTime是Unixseconds截止，不是“等待多少秒”或可保证到账时刻。

逐项txHash可null，提交前不填deposit hash替代withdrawal hash。只有原收款人映射和既有交易记录能把状态绑定到公共recipient/token；多收款人不能仅按列表第一项断言全额到账，completed平台标记与独立最终性/到账记录分开。

核对结果：每个付款有时间与自身hash/链/收款证据或明确缺口，截止时刻没有写成SLA。
依据：[Hinkal TypeScript SDK 查看会话与状态](https://hinkal-team.gitbook.io/hinkal/hinkal-sdk/sdk-description.md)
依据：[Hinkal Get Private Send Order OpenAPI](https://hinkal-team.gitbook.io/hinkal/hinkal-api/api-reference/get-private-send-order.md)
依据：[Hinkal API Private Send 两阶段流程](https://hinkal-team.gitbook.io/hinkal/hinkal-api/description/private-send.md)

## 5. 用当次资产和费用记录核数量

PrivateSend正文以单token收款最小单位金额说明amountOut为recipient总额、amountIn为总额加fee。只有确认这些值属于同币同单位时才以精确整数字符串相减；feeToken或费用结构另有币种时，不跨币直接算差额。

GET /get-fee预查可选，因为相关操作会自动计算；其feeAmount schema为string却未明统一单位，不能套wei或把预查值当实际消费。链gas、协议fee、token/amount、Solana ATA/nullifier相关输入影响成本，当前响应和实际收款分列，不宣称固定总费或永久免费。

核对结果：金额与费用属于同一操作范围，原值、币种、精度与实际支出证据可复核，缺单位停止运算。
依据：[Hinkal API Private Send 两阶段流程](https://hinkal-team.gitbook.io/hinkal/hinkal-api/description/private-send.md)
依据：[Hinkal Get Fee OpenAPI](https://hinkal-team.gitbook.io/hinkal/hinkal-api/api-reference/get-fee.md)
依据：[Hinkal TypeScript SDK 查看会话与状态](https://hinkal-team.gitbook.io/hinkal/hinkal-sdk/sdk-description.md)

## 6. 按未完成付款保留排错结果

对每个recipient写排队/已提交待确认/平台已确认且有收款证据/失败或未取得记录。只有deposit_failed时不能假装已发目标付款；等待超时、平台处理结束或有一个completed都不授权重发给全部收款人。

提供产品版本、订单/排程ID摘要、链/币、原hash、时间与非敏感错误给原应用支持；涉及blocked或筛查保留原限制，不转换成绕过步骤。没有资金/账户/API验收的部分写明，文档流程完成不等真实支付完成。

核对结果：结论逐付款可追溯、失败/未知不计已付，没有新请求、签名、广播或恢复行为。
依据：[Hinkal API Private Send 两阶段流程](https://hinkal-team.gitbook.io/hinkal/hinkal-api/description/private-send.md)
依据：[Hinkal Get Private Send Order OpenAPI](https://hinkal-team.gitbook.io/hinkal/hinkal-api/api-reference/get-private-send-order.md)
依据：[Hinkal TypeScript SDK 查看会话与状态](https://hinkal-team.gitbook.io/hinkal/hinkal-sdk/sdk-description.md)

## 常见错误
- scheduled顶层终态只代表已安排，不能忽略逐recipient pending/failed/null。
- orderId、scheduleId、depositTxHash和withdrawal txHash互换会导致错误查询或假到账。
- txCompletionTime是Unixsecondsdeadline，scheduledTime按自身文档格式，缺值不能猜时间单位。
- 预查feeAmount不等实际费用，不能跨feeToken直接相减；401/404与缺hash不是资产丢失证明。

## 完成检查
- 按产品ID/链币和每个付款列出状态、时间、原hash、收款/费用证据与未知项。
- 教程核验为documentation；未申请或签名会话、执行private-send/quote/资金恢复，也未承诺匿名、可用或实际到账。

## 相关知识
- [区块确认与最终性是什么？交易成功和充值到账为何不同步](https://lianxiaozhi.com/learn/confirmations-and-finality)
- [Gas 怎么计算？交易失败为什么仍可能扣费](https://lianxiaozhi.com/learn/gas-and-failed-transactions)
- [钱包签消息与签交易有什么区别？不付 Gas 的签名也要读内容](https://lianxiaozhi.com/learn/wallet-message-vs-transaction)
- [原始、解码和整理后的链上数据有什么区别？](https://lianxiaozhi.com/learn/raw-decoded-curated-data)

## 官方依据
- [Hinkal TypeScript SDK 查看会话与状态](https://hinkal-team.gitbook.io/hinkal/hinkal-sdk/sdk-description.md)
- [Hinkal API Authentication](https://hinkal-team.gitbook.io/hinkal/hinkal-api/description/authentication.md)
- [Hinkal Get Fee OpenAPI](https://hinkal-team.gitbook.io/hinkal/hinkal-api/api-reference/get-fee.md)
- [Hinkal Get Private Send Order OpenAPI](https://hinkal-team.gitbook.io/hinkal/hinkal-api/api-reference/get-private-send-order.md)
- [Hinkal API Private Send 两阶段流程](https://hinkal-team.gitbook.io/hinkal/hinkal-api/description/private-send.md)
