> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oristapay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 如何接入

## 联调前准备

* **RD需要提供**:
  * 商户身份认证使用的clientId、clientSecret
  * RD公钥证书
  * 测试环境IP
  * SDK
* **客户需要提供**:
  * 测试环境IP（调用API使用的IP）
  * 回调地址
  * 商户公钥证书

## 快速接入指引(SDK)

### 调用时序图

#### 1.开通子钱包

```mermaid theme={null}
sequenceDiagram
    participant 客户
    participant 平台

    rect rgb(242,247,250)
        loop 提交表单文件
            客户->>+平台: 【文件上传】(FileUpload)
            平台->>平台: 校验文件
            平台-->>-客户: 返回文件Key
        end
    end

    rect rgb(235,245,255)
        note over 客户,平台: 企业资料提报与审核
        客户->>+平台: 【提交企业资料】(CreateProfileApplication)
        平台->>平台: 实时校验表单完整性
        平台-->>-客户: 返回校验结果（成功）
        平台->>平台: 审核企业资料
        平台->>+客户: 【结果通知】(callbackRequest)
        客户-->>-平台: 确认接收
    end

    rect rgb(227,242,253)
        note over 客户,平台: 子钱包创建与查询
        客户->>+平台: 【查询企业详情】(QueryCompanyProfile)
        平台-->>-客户: 返回企业详情
        客户->>+平台: 【创建子钱包】(CreateSubWallet)
        平台->>平台: 处理创建请求
        平台-->>-客户: 返回提交成功
        平台->>+客户: 【结果通知】(callbackRequest)
        客户-->>-平台: 确认接收
        客户->>+平台: 【查询钱包列表】(WalletList)
        平台-->>-客户: 返回钱包列表
    end
```

#### 2.钱包新增充值白名单

```mermaid theme={null}
sequenceDiagram
participant 客户
participant 平台
participant 区块链

    rect rgb(242,247,250)
        note over 客户,区块链: 【签名验证流程】
        客户->>+平台: 【获取签名】(GetSignData)
        平台-->>-客户: 返回待签名信息
        客户->>+平台: 【添加地址白名单】(AddAddressWhitelist)
        平台->>平台: 验证签名
        平台-->>-客户: 返回添加成功
    end

    rect rgb(235,245,255)
        note over 客户,区块链: 【小额转账流程】
        客户->>+平台: 【添加地址白名单】(AddAddressWhitelist)
        平台->>平台: 生成充值信息
        平台-->>-客户: 返回待充值状态、充值地址与金额
        客户->>+区块链: 转账(指定金额)
        区块链->>+平台: 转账结果
        平台->>平台: 审核转账，并入金
    end

    rect rgb(227,242,253)
        平台->>+客户: 白名单添加成功【结果通知】(callbackRequest)
        客户-->>-平台: 确认接收
    end
```

#### 3.钱包充值流程

```mermaid theme={null}
sequenceDiagram
    participant 客户
    participant 平台
    participant 区块链
    
    rect rgb(242,247,250)
        note over 客户,区块链: 地址查询与订单申报
        客户->>+平台: 【收款地址查询】(ReceiveAddressQuery)
        平台-->>-客户: 返回收款地址
        客户->>+平台: 【申报收款订单】(DeclareReceiveOrder)
        平台-->>-客户: 返回申报结果
    end

    rect rgb(235,245,255)
        note over 客户,区块链: 转账与结果同步
        客户->>+区块链: 转账(指定金额)
        区块链->>+平台: 转账结果
    end

    rect rgb(227,242,253)
        note over 客户,区块链: 入金处理与通知
        平台->>平台: 检查地址白名单
        平台->>平台: 审核交易合规性
        平台->>平台: 执行入金操作
        平台->>+客户: 入金成功【结果通知】(CallbackRequest)
        客户-->>-平台: 确认接收
    end
```

#### 4.钱包收款流程

```mermaid theme={null}
sequenceDiagram
    participant 客户
    participant 平台
    participant 区块链
    
    rect rgb(242,247,250)
        note over 客户,区块链: 订单申报与审核
        客户->>+平台: 【订单申报】(RequestPaymentOrderDeclare)
        平台->>平台: 处理申报请求
        平台-->>-客户: 返回提交成功
        平台->>平台: 审核订单
        平台->>+客户: 【结果通知】(CallbackRequest)
        客户-->>-平台: 确认接收
    end

    rect rgb(235,245,255)
        note over 客户,区块链: 转账与回执
        客户->>+区块链: 转账(指定金额至入金地址)
        区块链-->>-客户: 转账回执
        区块链->>+平台: 推送转账结果
    end

    rect rgb(227,242,253)
        note over 客户,区块链: 入金校验与通知
        平台->>平台: 检查订单材料完整性
        平台->>平台: 验证交易合规性
        平台->>平台: 执行入金操作
        平台->>+客户: 入金成功【结果通知】(CallbackRequest)
        客户-->>-平台: 确认接收
    end
```

#### 5.子钱包资金归集流程

```mermaid theme={null}
sequenceDiagram
    participant 客户
    participant 平台
    
    rect rgb(235,245,255)
        note over 客户,平台: 【钱包转账流程】
        客户->>+平台: 【钱包转账】(WalletTransfer)
        平台-->>-客户: 返回成功
    end

    rect rgb(227,242,253)
        平台->>+客户: 转账成功【结果通知】(CallbackRequest)
        客户-->>-平台: 确认接收
    end
```

#### 6.钱包payout流程

```mermaid theme={null}
sequenceDiagram
    participant 客户
    participant 平台
    
    rect rgb(242,247,250)
        note over 客户,平台: 【资产划拨流程】
        客户->>+平台: 【划拨】(InternalTransfer)
        平台-->>-客户: 返回成功
        平台->>+客户: 订单完成【结果通知】(CallbackRequest)
        客户-->>-平台: 确认接收
    end

    rect rgb(235,245,255)
        note over 客户,平台: 【收款账号添加流程】
        客户->>+平台: 【添加收款账号】(AddBankAccount)
        平台->>平台: 审核账号
        平台-->>-客户: 返回审核结果
        平台->>+客户: 添加完成【结果通知】(CallbackRequest)
        客户-->>-平台: 确认接收
    end

    rect rgb(227,242,253)
        note over 客户,平台: 【询价下单+异常处理流程】
        客户->>+平台: 【询价】(PayoutQuote)
        平台-->>-客户: 返回报价
        客户->>+平台: 【下单】(PayoutBook)
        平台-->>-客户: 返回下单结果
        平台->>平台: 处理订单
        平台->>+客户: 处理完成【结果通知】(CallbackRequest)
        客户-->>-平台: 确认接收
        客户->>+平台: 【重新结算】(payoutReSettle)
        平台->>平台: 处理重新结算
        平台-->>-客户: 返回处理结果
        平台->>+客户: 重新结算【结果通知】(CallbackRequest)
        客户-->>-平台: 确认接收
    end
```

### Java SDK 接入

**导入依赖**

```xml theme={null}
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>group.rd.digitalasset</groupId>
    <artifactId>digitalasset-toolkit-example</artifactId>
    <version>0.1.0</version>
    <packaging>jar</packaging>
    <name>Digitalasset ::Toolkit ::Example</name>
    <url>https://developer.rd.group</url>
    <properties>
        <project.build.encoding>UTF-8</project.build.encoding>
    </properties>
    <dependencies>
        <dependency>
          <groupId>group.rd.digitalasset</groupId>
          <artifactId>digitalasset-toolkit</artifactId>
          <version>0.1.25</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.4.12</version>
        </dependency>
    </dependencies>
</project>
```

**配置环境变量**

请在环境变量设置RD\_MODE为UAT|PRO

目前支持UAT/PRO两个环境.

**配置业务方私钥和RD公钥文件位置**

参考以下示例代码,业务方需在指定pgpPath目录下存储以下内容:

1.业务方当前使用的私钥:/clientFingerprint/private.key

2.业务方当前使用的RD公钥:/serverFingerprint/public.key

**接入示例**

```java theme={null}
package group.rd.digitalasset.example;

import group.rd.digitalasset.toolkit.Profile;
import group.rd.digitalasset.toolkit.RDToolkit;
import group.rd.digitalasset.toolkit.api.v1.*;
import org.junit.jupiter.api.Test;

import java.io.FileInputStream;
import java.io.IOException;

public class Demo {
    private final static Logger log = LoggerFactory.getLogger(Demo.class);

    public static void main(String[] args) {
        String appId = "rdClient";
        String clientId = "01JGB38S8Y5MZTSGDF9Q12123C";
        String clientSecret = "XvuJ2ruKpzy8jiL2PRHvholxrvUYdH54";
        String clientFingerprint = "468defed2a1c5e571c181fdb878990b54c24ccdb0da";
        String serverFingerprint = "ee5ec5bf94af5f8sdsdad61355e1e397ce0536";
        String privateKeyPwd = "test_password";

        String path = this.getClass().getClassLoader().getResource("").getPath() + "pgp";
        path = path.replaceFirst("/", "");
        System.out.println("  path:" + path);
        //设置全局统一的证书根路径
        Profile profile = Profile.of(appId, clientFingerprint, serverFingerprint);
        RDToolkit rdToolkit = RDToolkit.of(path, profile)
                .addAuthority(clientId, clientSecret)
                .addSecret(clientFingerprint, privateKeyPwd);

        WalletListResp walletListResp = rdToolkit.walletList();
    }
}
```
