Openapi Eai Api 常见问题

Openapi Eai Api 常见问题

目录
1 三种接口OpenAPI、API、EAI间如何选择? 2
2 OpenAPI 3
2.1 如何系统了解OpenAPI? 3
2.2 为什么要有test_开头的测试账号? 3
2.3 Api中心文档中提到的from_account、to_account从哪里获取? 4
2.4 OpenAPI 测试环境需要准备什么? 5
2.5 OpenAPI 生产环境必须准备做的事 7
2.6 为什么所有API调用都需要传入token参数? 8
2.7 token管理策略 8
2.8 新增(add)类型api是否必须传入tradeid或者biz_id参数? 9
2.9 调用API返回EAI配置相关错误,如何解决? 9
2.10 调用user/login异常? 10
2.11 哪些API需要先调用user/login进行U8登录? 10
2.12 接口返回:U8 服务调用失败:key=‘’;注册号不正确!? 11
2.13 新增类接口有属性不完全怎么办? 12
2.14 Openapi如何传入扩展自定义项? 13
2.15 Openapi和EAI报错“An error occurred on the server when processing the URL. Please contact the system administrator” 13
2.16 OpenApi查询类接口如何增加属性? 15
2.17 OpenApi新增类接口有些属性为何无法传入ERP? 16
2.18 OpenApi返回EAI登录相关的错误 19
2.19 OpenAPI报"在对应所需名称或序数的集合中,未找到项目",如何解决? 19
3 API 24
3.1 如何快速验证某个API接口是否可用? 24
3.2 如何快速开发新增接口? 27
3.3 调用修改或者审核接口,提示其他人正在修改,如何解决? 28
3.4 新增API报"在对应所需名称或序数的集合中,未找到项目",如何解决? 29
3.5 API调用是否占用加密站点? 30
3.6 无法登录U8? 30
3.7 如何获取单据表、视图名称? 31
3.8 库存、销售调用API接口慢的问题解决思路? 32
3.9 跳过U8登录限制的方法 32
3.10 登录子系统且不占用加密站点数的方法 33
4 EAI 34
4.1 如何检查 EAI 远程环境是否可用?如何解决环境问题? 34
4.2 如何配置EAI接口? 34
4.3 EAI接口调用是否占用U8加密站点? 34
4.4 EAI返回大数据时报包含关键字’ASP 0251 : 80004005’错误? 35
4.5 EAI是否支持SQL查询? 36
4.6 EAI如何导出或者传入扩展自定义项? 36
4.7 EAI导入报错“An error occurred on the server when processing the URL. Please contact the system administrator” 36
4.8 如何查看EAI数据字典? 36
4.9 导入凭证报“false”错误 37
4.10 返回EAI配置相关错误,如何解决? 37
4.11 EAI定时任务不起作用如何解决? 39

1 三种接口OpenAPI、API、EAI间如何选择?
OpenAPI
第三方系统部署在外网(互联网)与U8对接的场景。
限制:做不了上下游关联生单,比如采购入库单无法关联采购到货单;不支持事务。
优势:安全、接口定义面向消费者,使用相对最简单
数据标准:json
协议:https
安全性:接口调用需授权,企业对接口访问有完全控制权。
EAI
第三方系统部署在内网,与U8服务器可以直接连接。
限制:做不了上下游关联生单,比如采购入库单无法关联采购到货单;不支持事务。
优势:使用复杂度在openapi与api之间
数据标准:xml
协议:http
安全性:内网系统间对接安全性要求通常比较低
API
第三方系统部署在内网,与U8服务器可以直接连接。
限制:开发的应用需要部署在装有U8的电脑上。
优势:可做上下游关联生单,性能最好,支持事务。
数据标准:开放语言中的对象类型
协议:无,直接dll引入调用
安全性:内网系统间对接安全性要求通常比较低

2 OpenAPI
2.1 如何系统了解OpenAPI?
用友优普开放平台
2.2 为什么要有test_开头的测试账号?
用友优普开放平台

2.3 Api中心文档中提到的from_account、to_account从哪里获取?
首先明确下,OpenAPI仅仅是负责连接开发者和连接U8客户(平台中叫做企业)的中间平台,通过OpenAPI可以实现穿透内网,让外网应用有能力与内网U8系统进行对接。
因此OpenAPI起到的是桥梁作用,桥梁的两边分别是开发者和企业,既是文档中的from_account(开发者账号)和to_account(企业账号),所以这两个账号需要开发者和企业(U8客户)分别在我们的平台注册账号,而不是由平台提供。
如果U8客户自己有开发队伍,给自己做开发,此时from_account和to_account都是企业(U8客户)账号。只是企业账号需要申请为开发者,才能同时具备两种身份。
from_account、to_account对应到平台的登录账号,如下截图:

企业申请为开发者身份:

申请前打开此页面会有一个“申请为开发者”的按钮。
2.4 OpenAPI 测试环境需要准备什么?

 注册开发者账号,比如hongye。from_account=hongye
 创建应用。app_key=xxxxx
 申请测试账号,比如test_hongye。to_account=test_hongye
测试账号相当于在测试环境虚拟一个企业账号,进行测试环境与U8数据的对接。
 下载客户端
http://open.youyouup.com 页面最下方
注意:客户端实际上是给企业使用的,不是给开发者使用的,所以需要企业账号登录客户端来配置企业内网U8相关的服务器地址信息,这里的企业账号就是刚申请的测试账号。
 用测试账号test_hongye登录客户端
 进行客户端参数配置,包括U8应用服务器、数据库服务器相关信息配置。

 进行U8EAI接口设置
http://open.yonyouup.com/documentCenter/clientParameterConfiguration
见4章节
 依据平台API中心文档进行开发
http://open.yonyouup.com/apiCenter/index
2.5 OpenAPI 生产环境必须准备做的事

开发者: from_account
U8企业: 在平台注册账号(对应于api中的to_account参数)
开发者: 应用上线(需平台审批)
开发者: 向U8企业申请应用授权

U8企业: 下载客户端,并部署在局域网的服务器(需此服务器可上网,但不需要开放外网IP)
客户端的作用可以理解为QQ,核心作用是穿透内网实现云平台与U8系统之间的数据对接。
所以:客户端实际上是给企业使用的,不是给开发者使用的,需要部署在企业内网。
U8企业: 登录客户端
U8企业: 在客户端或者云平台网站批准或拒绝开发者应用申请的授权

U8企业: 在客户端或者云平台网站进行参数配置,即数据源映射配置

2.6 为什么所有API调用都需要传入token参数?
安全性考虑,防止第三方截获url。
token有2小时生命期的限制,保证开发者请求的url即使被第三方截获也只能最多使用两个小时。
2.7 token管理策略
注意:token本身有2小时生命期、且两小时内只能被调用2000次!
因此,强烈不建议每次调用业务API时,比如customer/get,都重新获取token,而是应该通过调用具体API,比如customer/get,返回的 errcode 值是否为30012(token已过期)判断是否需要重取
token获取api:sytem/token
http://open.yonyouup.com/apiCenter/token_get
2.8 新增(add)类型api是否必须传入tradeid或者biz_id参数?
必输传入。
再调用新增类型API时,这两个参数二选一出入即可,只是适合不同的使用场景。
两个参数本质都是交易号,可以想象为在线交易付款,多次提交请求并不会导致银行卡钱被多扣钱。
因此,在U8里是为了防止多次相同请求产生多个业务单据。
生单分两种场景:
 有上游,要建立关联线索,biz_id。比如电商订单-》U8销售订单,如果是一对一生单,可将电商订单号作为biz_id参数传入,再将U8返回的新id存储到应用本地,这样线索就建立起来了。
 无上游,tradeid
http://open.yonyouup.com/apiCenter/tradeid_get
2.9 调用API返回EAI配置相关错误,如何解决?
请参考【3.7 返回EAI配置相关错误,如何解决?】
2.10 调用user/login异常?

浏览器中键入:http://U8应用服务器ip/U8SCMApplication/U8LoginServices.asmx?op=SimpleLogin
回车,如果返回异常信息,说明IIS环境问题,请检查DefaultAppPool对应的Framework版本是否为2.0,且为经典(非集成)模式。
2.11 哪些API需要先调用user/login进行U8登录?
审批流相关API:audit(审核)、abandon(弃审)、history(审批进程)、buttonstate(工作流按钮状态)
审核(verify)API(无工作流):如果需要传入审核人,则需要先调用user/login接口,然后审核接口传入审核人参数;反之不需要。
关闭(close)API:如果需要传入关闭人,则需要先调用user/login接口,然后关闭传入关闭人参数;反之不需要。
2.12 接口返回:U8 服务调用失败:key=‘’;注册号不正确!?

1、检查EAI接口设置(上图中的192.168.80.128服务器上的配置),仍有问题全部重新配置下;
2、【OpenAPI客户端】的系统编码与客户端指向的服务器(上图中的192.168.80.128)的【EAI接口设置】的系统编码要匹配
2.13 新增类接口有属性不完全怎么办?
网站【API中心】中新增类接口文档并非发布了所有属性,比如扩展自定义项等,遇到这类问题可以参考【如何查看EAI数据字典】。
因为OpenAPI新增类接口后台采用的是EAI接口,所以EAI数据字典里能查到的,都可以组织到json里。
比如,部门的传真属性:

cdepfax组织到Json里即可。类似如下:
{
“department”:{
“rank”:1,
“name”:“总裁会”,
“code”:“01”,
“cdepfax”:“010-12345678”,
“endflag”:1
}
}
2.14 Openapi如何传入扩展自定义项?
EAI接口设置先启用扩展自定义项。然后json里组织上扩展自定义项属性名即可。
2.15 Openapi和EAI报错“An error occurred on the server when processing the URL. Please contact the system administrator”
此问题的核心原因是打了微软的7月份安全补丁,特别是 .Net Framework 的安全更新补丁影响了IIS ASP与程序集COM之间的交互。
基于此问题,可以依次按照如下操作尝试:
1、 IIS默认站点的虚拟目录U8EAI,应用程序池.NET CLR升级到4.0版本,如果此步骤仍然报错,请继续第2、3步骤。配置界面:

2、 如果步骤1配置,并重启应用程序池后仍然失败,可尝试卸载微软7月份补丁,此步骤基本可以解决问题,如果必须打补丁,请尝试步骤3。
3、 请到群共享或者百度云盘下载fakeasp.zip
解压到任意路径,建议放到U8SOFT\EAI\fakeasp下,如下图:

 IIS里新建站点,任意起名(比如EAIFakeSite),指定端口号,比如8077
 新建应用程序,名称U8EAI,应用程序路径为 U8SOFT\EAI\fakeasp,并设置应用程序池(.NET CLR v4.0 + 集成模式)。
注意这里必须是集成模式,不能经典模式,如下图:

 打开浏览器,地址栏输入http://localhost:8077/U8EAI/import.asp,回车。如果出现如下截图,表示环境已经配置成功!

如果想使用原来的默认端口80,把默认站点的虚拟路径U8EAI,删除,重复步骤3的创建应用程序步骤即可。
2.16 OpenApi查询类接口如何增加属性?

开放平台客户端安装路径 yonyouup\openapi-client\config\META-INF下:
datasource SQL数据源定义,这里可以任意定制返回的字段
rules 这里定义的是实际openapi返回的字段,在datasource定义的字段范围内。
也就是说sql定义的字段范围中,某些字段可以不返回给调用者,比如id等。
datasource和rules的同事自定义可以实现查询类接口的个性化返回。
需注意:个性化的xml文件请做好备份,升级客户端个性化xml会被覆盖。
2.17 OpenApi新增类接口有些属性为何无法传入ERP?
此问题有两种可能:传入属性错误或者不支持传入。
验证的方法如下:
OpenAPI底层走的是U8 EAI接口,所以每次OpenAPI调用都会产生一次EAI日志(假设叫A.xml)
手工在U8里新增一个跟接口传入数据一样的业务对象(比如凭证、销售订单等),然后用EAI导出(假设叫B.xml)、再导入B.xml,在U8界面里看下数据是否正确。如果仍然不正确,说明底层接口不支持此属性传入,可以U8绿色服务桌面提交支持问题,等待各业务组开发回复。如果正确,比对A.xml及B.xml数据差异即可找出问题。
EAI导出导入步骤:

EAI日志存储位置(以销售发票为示例):

999是EAI注册码,也是OpenAPI客户端的系统编码;saleinvoice代表销售发票;

比对两次的Request.xml。
可选工具:
Xml在线格式化:http://www.bejson.com/otherformat/xml/
文件比对工具:Beyond Compare
2.18 OpenApi返回EAI登录相关的错误
只有3种可能:
1、 没有在开放平台客户端配置的IP地址对应的U8应用服务器上进行EAI接口设置
2、 开放平台客户端的系统编码,与eai接口设置的系统编码不一致
3、 EAI接口配置已经无效(比如有人动过配置,或者动过U8应用服务器的数据源配置)
EAI登录错误信息参考:返回EAI配置相关错误,如何解决?
2.19 OpenAPI报"在对应所需名称或序数的集合中,未找到项目",如何解决?
此问题多数是数据组织问题所致。
OpenAPI底层调用的是EAI,大致思路是比对EAI成功和失败的两次日志xml请求数据文件。
定位EAI对应的U8应用服务器地址,在此服务器上定位问题:

其中999是EAI注册码
获取成功xml数据文件的方法:
1、 手工在U8里做一张跟接口传输数据一张的单子;
2、 用EAI导出这张单子

其中设置按钮可以指定导出的条件:

导出xml:

3、 将导出的xml文件用EAI再导入进来(如果有必要,需要先删除刚刚手工做的单子)

4、 如果导入成功,比对OpenAPI接口导入失败的xml数据文件及刚用EAI导入成功的xml数据文件,分析数据差异,定位可能传入错误的属性。
EAI日志数据文件位置在U8安装目录下,类似如下位置:

Request.xml就是要找的数据文件

辅助工具
Beyond Compare 文件内容比对工具
http://www.bejson.com/otherformat/xml/ 在线xml格式化工具
3 API
3.1 如何快速验证某个API接口是否可用?
方法一:
对于供、销、存、应收、应付模块,先通过挂一个保存前事件插件,把正确的xml导出来,然后代码直接传入这两个xml看是否能成功,成功即可用。
如果自己组织的xml报错,可以比对成功与失败两次的xml数据,可定位是否为数据问题。

方法二:
用群内 api 工具验证下接口是否正确,若没问题,定是数据组织的问题。
验证方法:手工新增一张单据,通过API工具尝试新增,如果成功,说明接口本身没问题,基本上能确定是数组组织的问题。

双击下方列表数据行,显示单据界面:

这个界面的按钮走的都是API,如果这里能成功,但你自己的代码调用失败,说明就是你代码数据组织有问题。
3.2 如何快速开发新增接口?
先通过挂一个保存前事件插件,可以把xml导出来,对于供、销、存、应收、应付数据结构为xml,把查询出来的数据加工为新增的模板,可以大大节省研究若干字段含义的时间。
加工数据注意点:
 去掉表头表体主键
 单据编号如果是自动编号,模板中的编号可以写一个已经存在的编号,比如0000000001
 去掉制单时间、审核人、审核日期、审核时间、单据条码、时间戳等属性
 表体增加editprop属性,并赋值 “A”
 表头单据显示模板ID需要赋值,否则虽然接口调用成功,但界面打开会报错,默认显示模板ID从Vouchers.VT_ID取值
 制单人不是操作员编码,而是名称,可以随意输入
 对于供、销、存、应收、应付新增接口请用第一种方法,直接传入xml方式赋值,不要用BO方式赋值

3.3 调用修改或者审核接口,提示其他人正在修改,如何解决?
通常是因为时间戳未传入,或者传入错误所致。
多数单据时间戳可以从表头视图直接获取,比如销售出库单:KCSaleOutH.ufts
取值示例:” 480.4406”,注意其中的空格不能去掉!
单据对应的表头、表体数据表及视图可以通过如下SQL获取:
select
ccardname as 单据,
BTTblName as 表头_表,
BTQName as 表头_视图,
BWTblName as 表体_表,
BWQName as 表体_视图,
VchTblPrimarykeyNames as 主键,
*
from vouchers
where ccardname like ‘%销售订单%’

3.4 新增API报"在对应所需名称或序数的集合中,未找到项目",如何解决?
API验证:用群内 api 工具验证下接口是否正确,若没问题,定是数据组织的问题。

红色: 是不同U8版本的 API 工具安装包
工具包含:文档+源码+API验证UI
绿色: U8数据字典
蓝色: U8登录相关。
调试login:开发调试环境登录U8用;第三方应用 登录 U8 需要和注意的。

3.5 API调用是否占用加密站点?
取决于调用API传入的自己构造的login对象,是否登录了子模块,login方法的sub_id参数传入"DP"或者"AS "不占用。
3.6 无法登录U8?
测试环境:需部署群共享中的调试login(下图红色部分),方可在第三方的EXE中登录U8,U8对第三方EXE做了限制。
生产环境:强烈不建议部署调试login,因为U8几乎所有地方都需要login,一但出问题就是大问题。
生产环境解决登录限制问题,看下图的紫色部分。

3.7 如何获取单据表、视图名称?
以销售订单为例:
select
ccardname as 单据,
BTTblName as 表头_表,
BTQName as 表头_视图,
BWTblName as 表体_表,
BWQName as 表体_视图,
VchTblPrimarykeyNames as 主键,
*
from vouchers
where ccardname like ‘%销售订单%’

select carditemname,FieldName,cardsection,*
from voucheritems
where CardNum =‘88’

3.8 库存、销售调用API接口慢的问题解决思路?
功过.net调用,一张普通单据耗时15秒左右,解决办法:
库存,表头 z:row 增加一个属性 bWireless=“1”
销售,表头 z:row 增加一属性 fornet=“1”
u8soft\ufcomsql 这个文件夹要赋予webservice的写权限。
如果仍然慢,请打最新库存和销售补丁(ST和SA)再试。
3.9 跳过U8登录限制的方法
有的时候需要登录子系统调用接口才可生效,比如发货单弃审。
.net的登录组件可以使用调试login版本,因为.net特性决定dll可以随意复制。
具体思路:
1、 C:\u8soft\framework文件夹(部署调试login前提下)复制到自己的应用程序目录下;
2、 .net项目引用此文件夹下的.net 版本login;
3、 构造.net登录对象
UFSoft.U8.Framework.Login.UI.clsLogin netLogin = new UFSoft.U8.Framework.Login.UI.clsLogin();
if (!netLogin.login(sSubId, sUserID, sPassword, sServer, sDate, sAccID, “”))
{
throw new Exception(“登陆失败,原因:” + netLogin.ErrDescript);
}

4、 构造vb对象(如果需要)
U8Login.clsLogin login = new U8Login.clsLogin();
login.ConstructLogin(netLogin.userToken);

ProductContext contex = netLogin.SubLogin(“DP”);
login.set_TaskId(contex.calledContext.TaskID);

3.10 登录子系统且不占用加密站点数的方法
有的时候api需要login对象登录子才可生效,比如发货单弃审、委外到货单生单。
子系统:U8模块标识,UFSystem…ua_subsys_base

cSub_Id即子系统标识。

登录组件调用登录方法时,如果传入子系统as或者dp是不占用加密站点数的,除此之外占用相应模块的站点数。
解决办法:
在U8Login.clsLogin组件登录成功后:
login.InternalConstructLogin(login.userToken);

login.login(“sa”);
即可切换到sa子系统。
3.11 销售模块保存前校验可用量开关
在表头 z:row 节点增加 saveafterok 属性, 1=不检查
<z:row saveafterok=“1”
4 EAI
4.1 如何检查 EAI 远程环境是否可用?如何解决环境问题?
浏览器地址栏里输入:http://u8服务器ip/u8eai/import.asp,回车
如果返回类似下图的 xml,表示环境正常:

如果返回错误,有两种可能:
a. IIS 没有安装 asp,注意:不是asp.net!
b. IIS应用池检查下:是否启用32位应用,是否经典模式,是否framework3.5版本
4.2 如何配置EAI接口?
请参见http://open.yonyouup.com/documentCenter/clientParameterConfiguration
4.3 EAI接口调用是否占用U8加密站点?
不占用
4.4 EAI返回大数据时报包含关键字’ASP 0251 : 80004005’错误?
核心原因:响应缓冲区超过IIS配置限制(返回的数据超出4M大小)
解决方法:加大Buffer的缓冲区,办法是:
IIS 6.0
 先在服务里关闭IIS Admin Service服务
 记事本打开文件windows\system32\inetsrv\MetaBase.xml,
 找到关键字 AspBufferingLimit 把他修改为需要的值,默认为4194304,即4096KB
 建议把它修改为41943040(40M)或适合的数值,取决于返回数据的大小及服务器内存是否足够大。
 然后重启iisadminservice服务。
IIS高版本
网站的ASP配置项的高级设置里

4.5 EAI是否支持SQL查询?
EAI支持自定义SQL查询。
类似如下:

<?xml version="1.0"?> 4.6 EAI如何导出或者传入扩展自定义项? Eai接口设置中有开关

4.7 EAI导入报错“An error occurred on the server when processing the URL. Please contact the system administrator”
卸载7月份微软windows补丁试下,如果卸载重启后仍然报错,可以尝试修改 IIS 中的 U8EAI 应用程序池的 .net framework 版本为 4.0。
4.8 如何查看EAI数据字典?
三个地方可以参考:
 C:\U8SOFT\EAI\XML\Template
【EAI模版.doc】中可以查看模板定义
此位置更新基本上不更新了,所以都是一些很老的文档,如果位查到想要的信息,继续向下看
 C:\U8SOFT\EAI\XML\RSXML
此文件夹是EAI元数据定义的xml文件,虽然可能也不是最新的,但95%以上需要的信息都有。
 Meta数据库:
select * from EAI_RsXml
这里是最新的元数据配置,EAI运行时解析的就是这里的属性。
4.9 导入凭证报“false”错误
可能是科目互斥所致,尝试gl开头control结尾的表数据清下。清数据前请先做好帐套备份和表备份。
4.10 返回EAI配置相关错误,如何解决?

错误描述 解决方案
业务帐套localhost@001登录失败,原因:选定的数据源不存在,请重新选择数据源! 需要重新配置第二个页【外部系统注册】签的注册码与U8帐套的映射关系。
EAI数据源(default)@110连接失败,原因:不存在的用户或已被注销或口令不正确! EAI接口设置第一个页签【EAI基本设置】登录用户认证失败导致,请录入正确的用户名与密码
EAI数据源(default)@999连接失败,原因:登录日期不在有效的会计期间! 所有EAI接口调用前,均需要进行U8授权,授权信息即第一个页签【EAI基本设置】所设置,但有一点,登录日期是以U8应用服务器的系统日期为准的,如果当前日期没有有效的会计期间,比如U8只能登录2015年,这时授权就会失败。
解决办法,就是调整应用服务器的系统时间。
EAI数据源(default)@999连接失败,原因:无法得到有效的会计年度
用户 ‘sa’ 登录失败。 SQL Server sa 密码已经更改,请重新配置U8数据源【应用服务器设置】。
EAI数据源(default)@999连接失败,原因:不能登录到加密服务器[10.1.42.67],请检查服务器配置或查看服务器日志 U8加密狗已经失效或无法连接等原因导致,总之检查U8加密狗是否处于正常状态。
EAI数据源(default)@110连接失败,原因:不存在的账套。 需要重新配置第二个页【外部系统注册】签的注册码与U8帐套的映射关系。

4.11 EAI定时任务不起作用如何解决?
两个关键点:
1、 EAI接口设置第一个页签登录的服务器及帐套需要与企业应用集成登录的服务器与帐套一致;
2、 导入规则选择文件夹,不要选择文件;
3、 导入成功过的文件名不会再次导入(防冗余),所以导入任务要设置新的文件名;
4、 建议不要单个文件内批量数据导入,把数据拆分为多个单个单据或这单个档案文件,再导入。
导入成功过的文件可以在如下位置查看:
C:\U8SOFT\EAI\Logs\Timer
4.12 EAI如何用Excel导出某张单据或者档案?

第6步,可以设置导出条件,比如单号、档案编码等。

文档记录
文档来源 李宏业 作者
如有侵权 联系本人删除

  • 23
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值