麒麟 V10 安装 Node-RED、IEC 104 协议插件及界面汉化

麒麟 V10 安装 Node-RED、IEC 104 协议插件及界面汉化

1. 文档说明

本文用于在麒麟 V10 服务器上安装并配置以下组件:

  • Node.js 运行环境
  • Node-RED
  • Node-RED systemd 后台服务
  • Node-RED 登录认证
  • IEC 60870-5-104 客户端插件
  • IEC 104 插件中文界面

版本说明

原部署环境使用 Node.js 20.10.0。如果是恢复现有项目,建议保持原 Node.js、Node-RED 和插件版本一致,避免出现兼容性问题。

对于新部署环境,Node-RED 官方目前推荐使用 Node.js 24.x;Node-RED 5.x 最低要求 Node.js 22,Node-RED 4.x 最低要求 Node.js 18。但第三方 IEC 104 插件不一定兼容最新版本,因此升级前必须先进行测试。


2. 环境检查

2.1 查看系统架构

uname -m

根据输出选择对应的 Node.js 安装包:

命令输出系统架构Node.js 安装包标识
aarch64ARM64linux-arm64
x86_64x86 64 位linux-x64

不要在未确认架构的情况下直接下载 ARM64 安装包,否则可能出现“无法执行二进制文件”等错误。

2.2 查看系统版本

cat /etc/os-release

2.3 检查常用工具

tar --version
unzip -v
systemctl --version

如果缺少 unzip,可根据服务器软件源配置执行:

sudo yum install -y unzip

3. 安装 Node.js

以下以原部署版本 Node.js 20.10.0 ARM64 为例。

3.1 准备安装包

在可以访问互联网的电脑上,从 Node.js 官方网站下载:

node-v20.10.0-linux-arm64.tar.xz

官方下载地址:

https://nodejs.org/download/release/v20.10.0/

如果服务器是 x86_64 架构,应下载:

node-v20.10.0-linux-x64.tar.xz

下载完成后,将安装包拷贝到麒麟 V10 服务器。

3.2 校验安装包

建议同时下载官方提供的 SHASUMS256.txt,然后执行:

sha256sum node-v20.10.0-linux-arm64.tar.xz

将计算结果与 SHASUMS256.txt 中对应文件的哈希值进行比较,确认安装包未损坏、未被篡改。

3.3 解压并安装

ARM64 架构执行:

tar -xJf node-v20.10.0-linux-arm64.tar.xz
sudo mv node-v20.10.0-linux-arm64 /usr/local/node-v20.10.0
sudo ln -sfn /usr/local/node-v20.10.0 /usr/local/node

如果使用的是 x86 64 位安装包,应执行:

tar -xJf node-v20.10.0-linux-x64.tar.xz
sudo mv node-v20.10.0-linux-x64 /usr/local/node-v20.10.0
sudo ln -sfn /usr/local/node-v20.10.0 /usr/local/node

3.4 配置环境变量

创建环境变量配置文件:

sudo vi /etc/profile.d/nodejs.sh

写入以下内容:

export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH

保存后执行:

source /etc/profile.d/nodejs.sh

注意:环境变量必须写成 $NODE_HOME,不要写成 $NODE_{H}OME

3.5 验证 Node.js

node -v
npm -v
which node
which npm

预期结果类似:

v20.10.0
10.x.x
/usr/local/node/bin/node
/usr/local/node/bin/npm

4. 安装 Node-RED

4.1 使用 npm 全局安装

sudo env PATH=/usr/local/node/bin:/usr/bin:/bin \
  /usr/local/node/bin/npm install -g node-red

新版本 npm 通常不再需要 --unsafe-perm 参数。只有在旧版本依赖明确要求时才考虑使用。

4.2 验证安装

node-red --version
which node-red
npm list -g --depth=0

正常情况下,Node-RED 命令路径为:

/usr/local/node/bin/node-red

4.3 首次测试启动

node-red

如果启动正常,终端会显示 Node-RED、Node.js、配置目录和监听端口等信息。

默认访问地址:

http://服务器IP:1880

测试完成后按 Ctrl+C 停止运行。


5. 配置 Node-RED 后台服务

生产环境建议使用独立用户运行 Node-RED,不建议直接使用 root 用户。

5.1 创建运行用户

sudo useradd \
  --system \
  --create-home \
  --home-dir /var/lib/node-red \
  --shell /sbin/nologin \
  nodered

创建用户目录并设置权限:

sudo mkdir -p /var/lib/node-red
sudo chown -R nodered:nodered /var/lib/node-red

5.2 创建 systemd 服务

sudo vi /etc/systemd/system/nodered.service

写入以下内容:

[Unit]
Description=Node-RED Runtime
Documentation=https://nodered.org/docs/
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=nodered
Group=nodered
WorkingDirectory=/var/lib/node-red

Environment="PATH=/usr/local/node/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/bin"

ExecStart=/usr/local/node/bin/node /usr/local/node/lib/node_modules/node-red/red.js --userDir /var/lib/node-red

Restart=on-failure
RestartSec=10
KillSignal=SIGINT
TimeoutStopSec=30
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

UserGroupWorkingDirectory--userDir 必须保持一致。不要出现服务使用普通用户运行、配置目录却指向 /root/.node-red 的情况。

5.3 启动并设置开机自启

sudo systemctl daemon-reload
sudo systemctl enable --now nodered.service

查看服务状态:

sudo systemctl status nodered.service

查看实时日志:

sudo journalctl -u nodered.service -f

查看最近 100 条日志:

sudo journalctl -u nodered.service -n 100 --no-pager

5.4 检查监听端口

sudo ss -lntp | grep 1880

也可以在服务器本机测试:

curl -I http://127.0.0.1:1880

6. 配置防火墙

6.1 检查 firewalld 状态

sudo systemctl status firewalld

如果未启动:

sudo systemctl enable --now firewalld

6.2 放行 Node-RED 端口

sudo firewall-cmd \
  --zone=public \
  --add-port=1880/tcp \
  --permanent

重新加载防火墙:

sudo firewall-cmd --reload

验证配置:

sudo firewall-cmd --list-ports | grep 1880

正常情况下应显示:

1880/tcp

建议仅允许可信内网访问 1880 端口,不要直接暴露到互联网。

Node-RED 作为 IEC 104 客户端时,通常是主动连接 RTU 或 IEC 104 服务端的 2404/TCP 端口,因此一般不需要在 Node-RED 服务器上开放入站 2404 端口。


7. 配置 Node-RED 登录用户名和密码

Node-RED 编辑器默认没有登录认证。任何能够访问服务器 IP 和 1880 端口的人员都可能进入编辑器并修改、部署流程,因此生产环境必须启用认证。

7.1 生成密码哈希

执行:

sudo -u nodered env PATH=/usr/local/node/bin:/usr/bin:/bin \
  /usr/local/node/bin/node-red admin hash-pw

根据提示输入密码,命令会输出一串 bcrypt 哈希值,例如:

$2b$08$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

复制该哈希值备用。

不要直接将明文密码写入 settings.js

7.2 修改配置文件

首次启动后,配置文件通常位于:

/var/lib/node-red/settings.js

先备份:

sudo cp /var/lib/node-red/settings.js \
  /var/lib/node-red/settings.js.bak

编辑配置:

sudo vi /var/lib/node-red/settings.js

module.exports = { ... } 内找到 adminAuth 配置,将其修改为:

adminAuth: {
    type: "credentials",
    users: [
        {
            username: "admin",
            password: "替换为刚才生成的密码哈希",
            permissions: "*"
        }
    ]
},

其中:

  • username:登录用户名。
  • password:通过 node-red admin hash-pw 生成的密码哈希。
  • permissions: "*":拥有全部编辑和部署权限。
  • permissions: "read":仅允许查看。

7.3 设置凭据加密密钥

建议同时在 settings.js 中配置:

credentialSecret: "替换为一段长度足够且不易猜测的随机字符串",

该配置用于加密流程中的账号、密码等凭据信息。

credentialSecret 设置后必须妥善备份。后续如果随意修改或丢失,原有流程中的加密凭据可能无法恢复。

7.4 检查配置文件语法

/usr/local/node/bin/node --check /var/lib/node-red/settings.js

如果没有输出,通常表示语法检查通过。

7.5 重启服务

sudo systemctl restart nodered.service
sudo systemctl status nodered.service

重新访问:

http://服务器IP:1880

此时应显示登录页面。


8. 安装 IEC 104 协议插件

插件源码地址:

https://github.com/iecdriver/node-red-contrib-iec104

该插件属于第三方插件,并非 Node-RED 官方内置节点。安装前建议核对源码、依赖版本及安全性,并在测试环境完成 IEC 104 通信验证。

8.1 下载源码

在可以访问互联网的电脑上下载插件源码压缩包,然后拷贝到服务器。

压缩包名称可能类似:

node-red-contrib-iec104-main.zip

8.2 解压并统一目录名称

sudo mkdir -p /opt/node-red-plugins
sudo unzip node-red-contrib-iec104-main.zip \
  -d /opt/node-red-plugins

将解压目录统一重命名:

sudo mv \
  /opt/node-red-plugins/node-red-contrib-iec104-main \
  /opt/node-red-plugins/node-red-contrib-iec104

设置权限:

sudo chown -R nodered:nodered \
  /opt/node-red-plugins/node-red-contrib-iec104

确认 package.json 存在:

ls -l /opt/node-red-plugins/node-red-contrib-iec104/package.json

8.3 安装插件

如果 /var/lib/node-red/package.json 不存在,先初始化:

sudo -u nodered env PATH=/usr/local/node/bin:/usr/bin:/bin \
  /usr/local/node/bin/npm \
  --prefix /var/lib/node-red init -y

安装本地插件:

sudo -u nodered env PATH=/usr/local/node/bin:/usr/bin:/bin \
  /usr/local/node/bin/npm \
  --prefix /var/lib/node-red \
  install /opt/node-red-plugins/node-red-contrib-iec104 \
  --omit=dev \
  --save

原文中的 npm install -save 参数写法错误,正确参数为 --save

如果服务器完全无法访问互联网,需要提前准备插件及其全部 npm 依赖。仅复制插件源码并不能保证离线安装成功。

8.4 检查插件

sudo -u nodered env PATH=/usr/local/node/bin:/usr/bin:/bin \
  /usr/local/node/bin/npm \
  --prefix /var/lib/node-red \
  list --depth=0

重启 Node-RED:

sudo systemctl restart nodered.service

查看启动日志:

sudo journalctl -u nodered.service -n 100 --no-pager

进入 Node-RED 编辑器后,检查左侧节点栏中是否出现 IEC 104 客户端节点。


9. 汉化 IEC 104 插件

IEC 104 节点的配置界面、标签和帮助文本通常定义在:

src/iec104-client.html

建议先修改源码目录中的文件,再重新安装插件。

9.1 备份原文件

sudo cp \
  /opt/node-red-plugins/node-red-contrib-iec104/src/iec104-client.html \
  /opt/node-red-plugins/node-red-contrib-iec104/src/iec104-client.html.bak

9.2 编辑文件

sudo vi \
  /opt/node-red-plugins/node-red-contrib-iec104/src/iec104-client.html

将内容调整为:

<script type="text/javascript">
    RED.nodes.registerType("iec104-client", {
        category: "network",
        color: "#3498DB",

        defaults: {
            name: {
                value: ""
            },
            host: {
                value: "127.0.0.1",
                required: true
            },
            port: {
                value: 2404,
                required: true,
                validate: RED.validators.number()
            },
            commonAddress: {
                value: 1,
                required: true,
                validate: RED.validators.number()
            },
            allowSpontaneous: {
                value: true
            },
            enableGeneralInterrogation: {
                value: true
            },
            pollingInterval: {
                value: 60,
                validate: function (value) {
                    return value === "" || !isNaN(value);
                }
            }
        },

        inputs: 0,
        outputs: 1,
        icon: "bridge.svg",

        label: function () {
            return this.name || "IEC 104 " + this.host + ":" + this.port;
        }
    });
</script>

<script type="text/html" data-template-name="iec104-client">
    <div class="form-row">
        <label for="node-input-host">
            <i class="fa fa-server"></i>
            服务器地址
        </label>
        <input
            type="text"
            id="node-input-host"
            placeholder="127.0.0.1"
        />
    </div>

    <div class="form-row">
        <label for="node-input-port">
            <i class="fa fa-plug"></i>
            端口
        </label>
        <input
            type="number"
            id="node-input-port"
            placeholder="2404"
            style="width: 120px;"
        />
    </div>

    <div class="form-row">
        <label for="node-input-commonAddress">
            <i class="fa fa-address-card-o"></i>
            公共地址(CA</label>
        <input
            type="number"
            id="node-input-commonAddress"
            placeholder="1"
            style="width: 120px;"
        />
    </div>

    <div class="form-row">
        <label for="node-input-name">
            <i class="fa fa-tag"></i>
            名称
        </label>
        <input
            type="text"
            id="node-input-name"
            placeholder="节点名称"
        />
    </div>

    <div class="form-row">
        <label for="node-input-allowSpontaneous">
            <i class="fa fa-bolt"></i>
            接收自发数据
        </label>
        <input
            type="checkbox"
            id="node-input-allowSpontaneous"
            style="display:inline-block; width:auto; vertical-align:top;"
        />
        <p class="form-tips">
            禁用后,自发上传的 ASDU 数据将被忽略,但仍会按协议进行确认。
        </p>
    </div>

    <div class="form-row">
        <label for="node-input-enableGeneralInterrogation">
            <i class="fa fa-refresh"></i>
            启用总召唤
        </label>
        <input
            type="checkbox"
            id="node-input-enableGeneralInterrogation"
            style="display:inline-block; width:auto; vertical-align:top;"
        />
        <p class="form-tips">
            启用后,连接建立时自动发送总召唤命令(COT=20)。
        </p>
    </div>

    <div class="form-row">
        <label for="node-input-pollingInterval">
            <i class="fa fa-clock-o"></i>
            总召唤周期
        </label>
        <input
            type="number"
            id="node-input-pollingInterval"
            min="0"
            placeholder="60"
            style="width: 120px;"
        />
        <p class="form-tips">
            单位为秒。设置为 0 时,仅在连接建立后执行一次总召唤。
        </p>
    </div>
</script>

<script type="text/html" data-help-name="iec104-client">
    <p>
        IEC 60870-5-104 主站(客户端)节点,用于连接 IEC 104
        从站、RTUPLC 或通信网关并接收数据。
    </p>

    <p>
        连接建立后,节点可自动发送总召唤命令,并处理自发上传数据和
        IEC 104 数据确认。
    </p>

    <h3>配置项说明</h3>

    <dl class="message-properties">
        <dt>
            服务器地址
            <span class="property-type">字符串</span>
        </dt>
        <dd>
            IEC 104 服务端、RTU 或通信网关的 IP 地址或主机名。
        </dd>

        <dt>
            端口
            <span class="property-type">数字</span>
        </dt>
        <dd>
            IEC 104 服务端 TCP 端口,默认值为 2404</dd>

        <dt>
            公共地址(CA<span class="property-type">数字</span>
        </dt>
        <dd>
            ASDU 公共地址,默认值为 1,应与现场设备配置保持一致。
        </dd>

        <dt>
            接收自发数据
            <span class="property-type">布尔值</span>
        </dt>
        <dd>
            启用后接收设备主动上送的数据;禁用后将忽略自发消息
            (通常为 COT=3)。
        </dd>

        <dt>
            启用总召唤
            <span class="property-type">布尔值</span>
        </dt>
        <dd>
            控制连接建立后是否发送总召唤请求。
        </dd>

        <dt>
            总召唤周期
            <span class="property-type">数字</span>
        </dt>
        <dd>
            周期性总召唤的时间间隔,单位为秒。设置为 0 时,仅在连接
            建立后执行一次。
        </dd>
    </dl>

    <h3>输出消息示例</h3>

    <pre>{
    "typeId": 30,
    "cot": 3,
    "ca": 1,
    "objects": [
        {
            "ioa": 1,
            "value": "true",
            "quality": "[QualityDescriptor: ...]"
        }
    ]
}</pre>
</script>

只修改界面显示文字,不要修改 iec104-client、字段名称或配置属性名,否则可能导致节点无法加载或原有流程配置失效。

9.3 重新安装插件

修改源码后重新安装:

sudo -u nodered env PATH=/usr/local/node/bin:/usr/bin:/bin \
  /usr/local/node/bin/npm \
  --prefix /var/lib/node-red \
  install /opt/node-red-plugins/node-red-contrib-iec104 \
  --omit=dev \
  --save

重启服务:

sudo systemctl restart nodered.service

浏览器执行强制刷新:

Ctrl + F5

如果汉化仍未生效,检查 Node-RED 实际加载的文件:

sudo find /var/lib/node-red/node_modules \
  -path "*/src/iec104-client.html" \
  -print

确认修改的是实际安装目录中的文件,而不是未被加载的源码副本。


10. IEC 104 通信配置与测试

10.1 检查网络连通性

ping -c 4 IEC104设备IP

10.2 检查 2404 端口

如果系统已安装 nc

nc -vz IEC104设备IP 2404

如果连接成功,通常会显示:

succeeded

如果连接失败,应检查:

  • IEC 104 服务端是否启动。
  • 服务器地址和端口是否正确。
  • 本机、网络设备或对端防火墙是否拦截。
  • 是否存在安全区、白名单或访问控制策略。
  • RTU 是否限制客户端 IP。
  • 对端是否只允许一个主站连接。

10.3 Node-RED 节点主要参数

参数说明
服务器地址IEC 104 从站、RTU 或网关的 IP 地址
端口通常为 2404
公共地址(CA)应与对端设备的 ASDU 公共地址一致
接收自发数据是否接收设备主动上送的数据
启用总召唤连接建立后是否自动发送总召唤
总召唤周期周期性总召唤间隔,0 表示仅连接后执行一次

11. 常用管理命令

启动服务

sudo systemctl start nodered.service

停止服务

sudo systemctl stop nodered.service

重启服务

sudo systemctl restart nodered.service

查看状态

sudo systemctl status nodered.service

查看实时日志

sudo journalctl -u nodered.service -f

查看最近日志

sudo journalctl -u nodered.service -n 100 --no-pager

检查 1880 端口

sudo ss -lntp | grep 1880

查看 Node.js 和 Node-RED 版本

node -v
npm -v
node-red --version

12. 常见问题排查

12.1 找不到 node 或 npm 命令

检查环境变量:

echo "$PATH"
ls -l /usr/local/node/bin/node
ls -l /usr/local/node/bin/npm

重新加载:

source /etc/profile.d/nodejs.sh

systemd 服务不会自动读取 /etc/profile,因此必须在服务文件中配置:

Environment="PATH=/usr/local/node/bin:/usr/bin:/bin"

12.2 Node-RED 服务启动失败

sudo systemctl status nodered.service
sudo journalctl -u nodered.service -n 200 --no-pager

重点检查:

  • ExecStart 路径是否正确。
  • Node.js 和 Node-RED 是否安装完整。
  • /var/lib/node-red 是否属于 nodered 用户。
  • settings.js 是否存在语法错误。
  • 插件是否缺少依赖。

12.3 浏览器无法打开 Node-RED

依次检查:

sudo systemctl status nodered.service
sudo ss -lntp | grep 1880
curl -I http://127.0.0.1:1880
sudo firewall-cmd --list-ports

如果本机可以访问、其他电脑无法访问,通常与防火墙、监听地址或网络策略有关。

12.4 安装后找不到 IEC 104 节点

检查插件:

sudo -u nodered env PATH=/usr/local/node/bin:/usr/bin:/bin \
  /usr/local/node/bin/npm \
  --prefix /var/lib/node-red \
  list --depth=0

检查日志:

sudo journalctl -u nodered.service -n 200 --no-pager

常见原因包括:

  • 插件目录名称不一致。
  • package.json 不在插件根目录。
  • npm 依赖未安装完整。
  • Node.js 版本与插件不兼容。
  • Node-RED 实际使用的用户目录不是 /var/lib/node-red
  • 插件 HTML 或 JavaScript 文件存在语法错误。

12.5 汉化内容未生效

处理方法:

  1. 确认修改的是实际加载的插件文件。
  2. 重启 Node-RED 服务。
  3. 浏览器按 Ctrl+F5 强制刷新。
  4. 清除浏览器缓存后重新访问。
  5. 查看 Node-RED 启动日志是否存在插件加载错误。

13. 备份与升级建议

升级 Node.js、Node-RED 或插件前,至少备份以下文件:

/var/lib/node-red/flows.json
/var/lib/node-red/flows_cred.json
/var/lib/node-red/settings.js
/var/lib/node-red/package.json
/var/lib/node-red/package-lock.json

执行备份:

sudo tar -czf \
  /var/backups/node-red-$(date +%Y%m%d-%H%M%S).tar.gz \
  -C /var/lib node-red

升级 Node.js 后,部分包含二进制组件的插件可能需要重新编译:

sudo -u nodered env PATH=/usr/local/node/bin:/usr/bin:/bin \
  /usr/local/node/bin/npm \
  --prefix /var/lib/node-red rebuild

不建议直接在生产服务器上跨大版本升级 Node.js 或 Node-RED。应先在测试环境验证 IEC 104 连接、总召唤、自发数据、遥测遥信解析及原有流程运行情况。


14. 安装验收清单

  • 系统架构与 Node.js 安装包匹配。
  • node -vnpm -v 输出正常。
  • Node-RED 安装成功。
  • Node-RED 使用独立用户运行。
  • systemd 服务已设置开机自启。
  • nodered.service 状态为 active (running)
  • 1880 端口监听正常。
  • 防火墙已按要求放行 1880 端口。
  • Node-RED 编辑器已启用用户名和密码认证。
  • credentialSecret 已设置并备份。
  • IEC 104 插件加载正常。
  • IEC 104 配置界面已完成汉化。
  • Node-RED 服务器能够访问对端 2404 端口。
  • 总召唤功能测试正常。
  • 自发数据接收测试正常。
  • CA、COT、IOA、类型标识及品质描述解析正常。
  • Node-RED 流程及凭据文件已完成备份。

15. 参考资料

  • Node-RED 本地安装说明:
    https://nodered.org/docs/getting-started/local

  • Node-RED 支持的 Node.js 版本:
    https://nodered.org/docs/faq/node-versions

  • Node-RED 编辑器安全配置:
    https://nodered.org/docs/user-guide/runtime/securing-node-red

  • IEC 104 插件源码:
    https://github.com/iecdriver/node-red-contrib-iec104

源码链接: https://pan.quark.cn/s/a4b39357ea24 银行信贷业务作为银行业务的关键构成部分,涵盖了银行向客户提供的各类融资服务,例如贷款、担保以及信用证等。此类业务致力于协助企业与个人解决资金需求问题,进而推动经济活动的开展。银行通过信贷业务获取利息收入,同时需承担相应风险,以保障资金的稳定与流转。 **信贷定义** 信贷意味着银行运用自身资本及信誉为客户提供资金支持,而客户则需以支付利息、费用并偿还本金为前提条件。这种业务模式不仅包含直接贷款,还包括为客户的债务承担提供担保。依照会计准则,信贷业务可分为表内业务与表外业务,前者对银行的资产负债表产生直接影响,后者则不直接关联。 **信贷业务划分标准** 1. **依据会计核算归属**:表内信贷(如贷款、贴现)和表外信贷(如承兑、保证)。 2. **根据期限划分**:短期(不超过1年)、中期(1至5年)与长期(超过5年)。 3. **按照担保方式分类**:信用信贷(无担保)和担保信贷(保证、抵押、质押)。 4. **按照币种区分**:本币信贷与外币信贷。 5. **按照性质和用途区分**:固定资产贷款、流动资金贷款、循环额度贷款、消费贷款等。 6. **按照贷款组织形式区分**:普通贷款、联合贷款和银团贷款。 7. **按照资金来源区分**:信贷资金贷款、委托贷款和境外筹资转贷款。 8. **按照授信对象区分**:公司类信贷与个人类信贷。 **信贷业务产品** 1. **流动资金贷款**:用于企业日常运营周转或临时性资金需求。 2. **固定资产贷款**:用于投资固定资产项目。 3. **房地产开发贷款**:用于土地开发及房屋建设所需资金。 4. **循环额度贷款**:满足企业...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值