# Rain卡交易怎么核账：区分spend、抵押、入账与收据

整理：链小知（AI 辅助）
资料核对日期：2026-10-14
引用地址：https://lianxiaozhi.com/tools/guides/rain-issuing-transaction-type-posted-receipt-check
难度：进阶
核验方式：官方文档整理，未执行真实账户操作

按官方固定SDK规格读已有交易记录，区分授权和posted金额、四类嵌套字段、分页与收据附件。

## 使用工具
- [Rain](https://lianxiaozhi.com/tools/rain-payments) · [官方入口](https://www.rain.xyz/)

## 前置条件
- 准备已有脱敏交易/列表、环境、company/user/card定位和可选收据文件；不要提供Api-Key、卡号、PIN或秘密签名材料。

## 1. 固定原交易ID、环境与权限范围

用已有脱敏Rain transaction id，核company/user/card和查询时点，不能用钱包hash代替全部卡交易ID。固定SDK默认dev；production在客户端显式选择，base_url或RAIN_BASE_URL可改变目标，已有记录缺环境就保持未知。

官方方法client.transactions.retrieve对应GET /transactions/{transactionId}，Api-Key由客户端header发送。此处只核原记录；401/403是认证/权限失败，不是交易未付，不通过开卡、charge或更新memo补查。

核对结果：原transaction id、环境及权限结果明确或未知。
依据：[Rain官方SDK：环境选择及Api-Key头](https://raw.githubusercontent.com/SignifyHQ/rain-sdk-python/acf6004008f412ba199dee0e23b30dad5240df2f/src/rain_sdk/_client.py)
依据：[Rain官方SDK：交易读取与列表方法](https://raw.githubusercontent.com/SignifyHQ/rain-sdk-python/acf6004008f412ba199dee0e23b30dad5240df2f/src/rain_sdk/resources/transactions/transactions.py)
依据：[Rain官方SDK固定版本：环境、错误和缺失字段](https://raw.githubusercontent.com/SignifyHQ/rain-sdk-python/acf6004008f412ba199dee0e23b30dad5240df2f/README.md)

## 2. 列表按卡/公司及授权、入账时间分别定位

没有原ID但有原列表时，可核cardId、userId、companyId、type、transactionHash以及authorizedAfter/Before与postedAfter/Before。SDK参数是snake_case，线上alias是camelCase；type是spend/collateral/payment/fee的列表。

cursor是从哪个资源ID之后继续，limit是数量；不要把cursor当页码，或把未出现在第一页的旧授权判不存在。授权与入账时间不同，单用posted时间可能漏尚pending的消费。缺完整分页资料保留范围不足。

核对结果：原筛选、两种时点、类型列表和cursor范围对应。
依据：[Rain官方SDK：交易列表筛选与cursor](https://raw.githubusercontent.com/SignifyHQ/rain-sdk-python/acf6004008f412ba199dee0e23b30dad5240df2f/src/rain_sdk/types/transaction_list_params.py)
依据：[Rain官方SDK：交易读取与列表方法](https://raw.githubusercontent.com/SignifyHQ/rain-sdk-python/acf6004008f412ba199dee0e23b30dad5240df2f/src/rain_sdk/resources/transactions/transactions.py)

## 3. 按type进入嵌套对象，不套统一status

IssuingTransaction以type分四种：spend用spend对象，collateral用collateral，payment用payment，fee用fee。spend.status只有pending/reversed/declined/completed；payment.status只有pending/completed，而固定模型collateral/fee没有同一status字段。

spend的cardId/userId、merchantName/merchantCategoryCode是卡消费定位；collateral的chainId/transactionHash/walletAddress是抵押记录。消费completed或一笔抵押hash不等钱包所有资产已到账、loan escrow已返还；reversed不是另有已核退款交易的证明。

核对结果：四分支和其状态/身份字段分别解释，缺字段不造统一状态。
依据：[Rain官方SDK：四类交易、消费状态与金额单位](https://raw.githubusercontent.com/SignifyHQ/rain-sdk-python/acf6004008f412ba199dee0e23b30dad5240df2f/src/rain_sdk/types/issuing_transaction.py)

## 4. 核cents、授权额与入账额及本地币种

固定模型spend.amount和可选authorizedAmount都注释为cents；localAmount/localCurrency另列当地币种/金额。保留currency再按该模型单位读数，不能把amount当token最小单位或默认所有金额USD。collateral.amount虽是float也注释cents；这只证模型标注，不代表钱包token余额换算。

authorizedAt与可选postedAt分别记录；缺postedAt不自行补完成时间。Python解析值None可能是字段null，也可能根本没返回，README用model_fields_set区分；只对已有原JSON/解析记录检查，不把None或缺字段填成0。

核对结果：金额单位、币种、授权/入账时点及null/缺失分别保留。
依据：[Rain官方SDK：四类交易、消费状态与金额单位](https://raw.githubusercontent.com/SignifyHQ/rain-sdk-python/acf6004008f412ba199dee0e23b30dad5240df2f/src/rain_sdk/types/issuing_transaction.py)
依据：[Rain官方SDK固定版本：环境、错误和缺失字段](https://raw.githubusercontent.com/SignifyHQ/rain-sdk-python/acf6004008f412ba199dee0e23b30dad5240df2f/README.md)

## 5. 收据文件与真实付款结果分开

spend.receipt是模型的收据布尔标志。GET /transactions/{transactionId}/receipt方法返回BinaryAPIResponse，Accept为application/octet-stream，通常PDF或类似文件；已有文件先核原transaction id、响应类型和内容，不将字节当JSON解析。

同一路径还支持PUT上传附件，因此收据存在不自动证明卡清算、链上转账或退款已完成。整理原交易状态、金额/时点与已有收据，缺付款/退款结果保持未核；不重新支付或上传文件来测试。

核对结果：收据文件关联原交易，与消费/资产/退款结果各有独立记录或未知。
依据：[Rain官方SDK：交易收据二进制文件方法](https://raw.githubusercontent.com/SignifyHQ/rain-sdk-python/acf6004008f412ba199dee0e23b30dad5240df2f/src/rain_sdk/resources/transactions/receipt.py)
依据：[Rain官方SDK：四类交易、消费状态与金额单位](https://raw.githubusercontent.com/SignifyHQ/rain-sdk-python/acf6004008f412ba199dee0e23b30dad5240df2f/src/rain_sdk/types/issuing_transaction.py)

## 常见错误
- 四种交易没有通用status；卡消费和抵押记录不能合成钱包余额。
- 模型单位、原环境和缺失字段要保留；收据附件不是清算或退款证明。

## 完成检查
- 形成同一Rain原交易的类型、状态、金额/时点与收据对照；官方源码方法已核，实际账户/API和资金结果未实测。

## 相关知识

## 官方依据
- [Rain官方SDK：环境选择及Api-Key头](https://raw.githubusercontent.com/SignifyHQ/rain-sdk-python/acf6004008f412ba199dee0e23b30dad5240df2f/src/rain_sdk/_client.py)
- [Rain官方SDK：交易读取与列表方法](https://raw.githubusercontent.com/SignifyHQ/rain-sdk-python/acf6004008f412ba199dee0e23b30dad5240df2f/src/rain_sdk/resources/transactions/transactions.py)
- [Rain官方SDK固定版本：环境、错误和缺失字段](https://raw.githubusercontent.com/SignifyHQ/rain-sdk-python/acf6004008f412ba199dee0e23b30dad5240df2f/README.md)
- [Rain官方SDK：交易列表筛选与cursor](https://raw.githubusercontent.com/SignifyHQ/rain-sdk-python/acf6004008f412ba199dee0e23b30dad5240df2f/src/rain_sdk/types/transaction_list_params.py)
- [Rain官方SDK：四类交易、消费状态与金额单位](https://raw.githubusercontent.com/SignifyHQ/rain-sdk-python/acf6004008f412ba199dee0e23b30dad5240df2f/src/rain_sdk/types/issuing_transaction.py)
- [Rain官方SDK：交易收据二进制文件方法](https://raw.githubusercontent.com/SignifyHQ/rain-sdk-python/acf6004008f412ba199dee0e23b30dad5240df2f/src/rain_sdk/resources/transactions/receipt.py)
