用友oa 价格(用友系列oa软件)

bitget

Bitget交易所

Bitget交易所是全球前4大交易所之一、打新活动多、领空投到手软,新用户注册即可领取BGB空投

点击注册 立即下载

第一章 基础数据接口

一.1 集成范围

涉及ERP的基本档案包括:组织、部门、人员、用户、客户、供应商、物料分类、计量单位、物料、仓库、税码税率、合同类型、合同分类;

ERP中涉及的操作:新增、修改、删除、启用、停用;

基本档案涉及的控制状态:已经停用的基本档案新增合同时不能继续使用;

一.2 集成方案

一.2.1 请求方式

POST

一.2.2 请求地址

/uapws/rest/databus/queryByCondition

一.2.3 请求参数

参数名

必选

类型

说明


Array

参数为数组,支持多个数据类型查询

dataType

String

数据类型 由用友提供

ts

String

查询时间范围 格式为

yyyy-mm-dd hh24:mi:ss

查询范围为此时间之后更新/插入的数据


一.2.4 请求示例

[

{

"dataType": "user",

"ts": "2022-11-08 10:00:00"

},

{

"dataType": "dept",

"ts": "2022-11-08 10:00:00"

}

]


一.2.5 返回示例

成功

{

"code": 200,

"message": "query success",

"success": true,

"data": {

"dept": {

"v_dept": []

},

"user": {

"v_user_ext_1": [

{

"pk_psnjob": "1001",

"pk_dept": "1001",

"pk_psndoc": "1001",

"indutydate": "2022-10-01",

"ismainjob": "Y",

"pk_org": "0001",

"ts": "2022-11-08 11:59:15"

},

{

"pk_psnjob": "1002",

"pk_dept": "1002",

"pk_psndoc": "1002",

"indutydate": "2022-08-01",

"ismainjob": "Y",

"pk_org": "0002",

"ts": "2022-11-08 13:58:56"

}

],

"v_user": [

{

"code": "001",

"pk_psndoc": "1001",

"name": "张XX",

"pk_org": "0001",

"ts": "2022-11-08 11:59:15"

},

{

"code": "001356",

"pk_psndoc": "1002",

"name": "孙XX",

"pk_org": "0002",

"ts": "2022-11-08 13:58:56"

}

]

}

}

}


失败

{

"code": 50003,

"message": "dataType:12 is not support!",

"success": false

}


一.2.6 返回参数说明


参数名

必选

类型

说明

code

String

操作状态码

message

String

返回信息

success

Boolean

是否成功

data

object

查询结果数据









一.2.7 返回data格式解释

示例:

基础档案名称:⼈员

档案类型:user

⼦表:v_user_ext_1 : v_档案类型_ext_1

主表:v_user: v_档案类型

一.2.8 数据类型

一.2.9 基本档案字段

参见:附件1:合同对接内容梳理

第二章 合同接口

二.1 OpenAPI认证

二.1.1 获取token和调用接口

第一步请求获取相应的token,请求的URL路径如下:

http://127.0.0.1/nccloud/opm/accesstoken?biz_center=1&grant_type=client_credentials&signature=3ca73b3bb506a34059e2bce1ce3bfe128e4e9fb6cefb7325396094f7816a01d9&client_secret=Su1s4kk0pQhhgAupsDajkqSFWeWxUEAy78yYh84wTHt1UPyC2ZV3CD7%2BP12XB897owyaVFQRJd2g%0D%0AfZcPwkvlxUgq3yrp1PBYxZ1TJ89oLf4Wicn%2BsDVAi57pTlsHHZZqQqLow5zdQjNP3Wm04ewszLhu%0D%0AasoViTdspzujiPAmwxY%3D%0D%0A&client_id=wqch

其中各个参数的含义如下:

biz_center:访问的nccloud系统的账套code

grant_type:授权模式,此处为client_credentials

client_id:对应于在第三方应用注册当中的app_id

client_secret:对应于第三方应用注册当中的app_secret

signature:请求加签,其算法为SHA256Util.getSHA256(client_id + client_secret + pubKey)

其中pubKey为第三方应用注册当中的公钥字段

第二步为最终请求的OpenAPI,其中URL地址如下所示:http://ip:port/nccloud/api/uapbd/currtype/currtype/queryCurrtypeByCode

其中在请求头当中包含了相关的参数,如下所示:

access_token:即上一步当中获取到的token。

ucg_flag:Y

signature:对请求体进行加签,算法如下:SHA256Util.getSHA256(client_id+requestBody+pubkey)

其中pubKey为第三方应用注册当中的公钥字段。

二.1.2 Java使用示例

二.1.2.1 Java代码

package nccloud.api.testcase.base;


import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.UnsupportedEncodingException;

import java.net.HttpURLConnection;

import java.net.URL;

import java.net.URLEncoder;

import java.nio.charset.Charset;

import java.util.HashMap;

import java.util.Map;

import java.util.Properties;


import org.apache.commons.lang3.StringUtils;


import com.google.gson.Gson;


import nccloud.api.test.utils.CompressUtil;

import nccloud.api.test.utils.Decryption;

import nccloud.api.test.utils.Encryption;

import nccloud.api.test.utils.ResultMessageUtil;

import nccloud.api.test.utils.SHA256Util;


/**

* 1.从resources/config.properties中读取测试api相关的数据 2.运行程序,测试查看测试结果

*


*/

public class Test {


private static String client_secret = null;

private static String pubKey = null;

private static String client_id = null;

private static String username = null;

private static String pwd = null;

private static String busi_center = null;

// 获取token方式

private static String grant_type = null;

// 服务器ip:port

private static String baseUrl = null;

private static String secret_level = null;

private static String requestBody = null;

// openapi请求路径

private static String apiUrl = null;


public static String token = null;

public static String repeat_check = null;

public static String busi_id = null;


public static void main(String[] args) {

try {

// 初始化数据

init();

// 请求token

token = getToken();

System.out.println("getTokenData:" + token);

if (token != null) {

// 测试openapi

testApi(token);

}

} catch (Exception e) {

e.printStackTrace();

}

}


/**

* 通过refresh_token重新获取token

*

* @param refresh_token

* @return

* @throws UnsupportedEncodingException

* @throws Exception

*/

private static String getTokenByRefreshToken(String refresh_token) throws UnsupportedEncodingException, Exception {

Map<String, String> paramMap = new HashMap<String, String>();

// 密码模式认证

paramMap.put("grant_type", "refresh_token");

// 第三方应用id

paramMap.put("client_id", client_id);

// 第三方应用secret 公钥加密

paramMap.put("client_secret", URLEncoder.encode(Encryption.pubEncrypt(pubKey, client_secret), "utf-8"));

// 签名

String sign = SHA256Util.getSHA256(client_id + client_secret + refresh_token + pubKey);

paramMap.put("signature", sign);


String url = baseUrl + "/nccloud/opm/accesstoken";

String mediaType = "application/x-www-form-urlencoded";

String token = doPost(url, paramMap, mediaType, null, "");

return token;

}


private static String getToken() throws Exception {

String token = null;

if ("password".equals(grant_type)) {

// 密码模式

token = getTokenByPWD();

} else if ("client_credentials".equals(grant_type)) {

// 客户端模式

token = getTokenByClient();

} else if ("authorization_code".equals(grant_type)) {

// TODO 页面跳转

// 授权码模式

}

return token;

}


/**

* 客户端模式获取token

*

* @return

* @throws Exception

*/

private static String getTokenByClient() throws Exception {

Map<String, String> paramMap = new HashMap<String, String>();

// 密码模式认证

paramMap.put("grant_type", "client_credentials");

// 第三方应用id

paramMap.put("client_id", client_id);

// 第三方应用secret 公钥加密

paramMap.put("client_secret", URLEncoder.encode(Encryption.pubEncrypt(pubKey, client_secret), "utf-8"));

// 账套编码

paramMap.put("biz_center", busi_center);

// // TODO 传递数据源和ncc登录用户

// paramMap.put("dsname", "TM_0614");

// paramMap.put("usercode", "1");


// 签名

String sign = SHA256Util.getSHA256(client_id + client_secret + pubKey);

paramMap.put("signature", sign);


String url = baseUrl + "/nccloud/opm/accesstoken";

String mediaType = "application/x-www-form-urlencoded";

String token = doPost(url, paramMap, mediaType, null, "");

return token;

}


/**

* 密码模式获取token

*

* @return

* @throws Exception

*/

@SuppressWarnings("unused")

private static String getTokenByPWD() throws Exception {

Map<String, String> paramMap = new HashMap<String, String>();

// 密码模式认证

paramMap.put("grant_type", "password");

// 第三方应用id

paramMap.put("client_id", client_id);

// 第三方应用secret 公钥加密

paramMap.put("client_secret", URLEncoder.encode(Encryption.pubEncrypt(pubKey, client_secret), "utf-8"));

// ncc用户名

paramMap.put("username", username);

// 密码 公钥加密

paramMap.put("password", URLEncoder.encode(Encryption.pubEncrypt(pubKey, pwd), "utf-8"));

// 账套编码

paramMap.put("biz_center", busi_center);

// 签名

String sign = SHA256Util.getSHA256(client_id + client_secret + username + pwd + pubKey);

paramMap.put("signature", sign);


String url = baseUrl + "/nccloud/opm/accesstoken";

String mediaType = "application/x-www-form-urlencoded";

String token = doPost(url, paramMap, mediaType, null, "");

return token;

}



致远OA与用友ERP合同管理集成项目接口文档

bitget

Bitget交易所

Bitget交易所是全球前4大交易所之一、打新活动多、领空投到手软,新用户注册即可领取BGB空投

点击注册 立即下载

Bitget交易所

Bitget交易所V

第一章基础数据接口一集成范围涉及的基本档案包括组织部门人员用户客户供应商物料分类计量单位物料仓库税码税率合同类型合同分类中涉及的操作新增修改删除启用停用基本档案涉及的控制状态已经停用的基本档案新增合同时不能继续使用一集成方案一请求方式一请求地址一请求参数参数名必选类型说明是参数为数组支持多个数据类型...

文章数
0 评论数
浏览数

最近发表

热门文章

标签列表

目录[+]