首页 > 文档中心 > 开发指南 >
SDK下载
SDK下载
SDK接入示例(下载)
- 版本要求为JDK1.8,BC库版本为1.60+,依赖fastjson。
设置应用配置信息
用户需要应用信息到KeyConfigure中,详见Example类中的keyConfigureInit()方法
public void keyConfigureInit() {
Map keyConfigures = Configure.getKeyConfigures();
// 应用ID,为KY字母开头的字符串,区分大小写
String keyId = "KYONLYFORTEST012345678";
// 应用签名私钥,需严格保密,建议使用配置文件或其他方式进行存储
String priKey = "AK7JUorRStFAwM1+BXiHefwmCOZXjVU42b6Oa5JFf5Y7";
// 平台验签公钥
String respPubKey = "BJWKBSgM7aM4oRUmU6FS4BS2AYceV8MYR3MBsiXyTINS8jCk7fHgkRcxuogu5YVzI6lMNCFiAMBQHLY4EXWz/Aw=";
// 字段加密密钥 (当开启全报文加密时,该字段无用)
String reqParamEncryptKey = "9A9A4QyNz/pc8kZZXzhXOQ==";
// 平台加密公钥
String platEncryptPubKey = "BIYy+koIx6c5307uyYxXGWLYNfWbkc4NrSlmtMkRwgmqGXBr4/o+btLPJER21XDhpWvsPQdgFzoZMBGYYSb8CDM=";
// 应用解密私钥
String keyDecryptPriKey = "Jb2W2uZNNaSWoZuucWF81+kQkR0qMC1UBTsz9mZ8u4Q=";
// keySignTypeEnum 请求签名算法
// respSignSwitch 响应报文验签开关,true将进行验签,false不进行验签
// respSignAlgorithmEnum 响应报文验签算法
KeyConfigure keyConfigure = new KeyConfigure();
keyConfigure.setKeyId(keyId);
keyConfigure.setPriKey(priKey);
keyConfigure.setRespPubKey(respPubKey);
keyConfigure.setReqParamEncryptKey(reqParamEncryptKey);
keyConfigure.setKeySignType(KeySignTypeEnum.SM3WITHSM2);
keyConfigure.setRespSignSwitch(true);
keyConfigure.setRespSignAlgorithm(RespSignAlgorithmEnum.SM3WITHSM2);
//是否使用文件网关,若传输的文件大于8MB,需使用文件网关进行传输
keyConfigure.setFileGatewaySwitch(false);
//是否开启全报文加密
keyConfigure.setBodyEncryptSwitch(false);
keyConfigure.setEncryptAlgorithmEnum(EncryptAlgorithmEnum.SM4);
keyConfigure.setKeyDecryptPriKey(keyDecryptPriKey);
keyConfigure.setPlatEncryptPubKey(platEncryptPubKey);
//替换为实际路径 SSL域名证书
// keyConfigure.setSslCertFilePath("CLASSPATH:\\CFCA_ACS_TEST_SM2_OCA31.cer");
//替换为实际路径 CFCA签名证书
// keyConfigure.setCertFilePath("CLASSPATH:\\sittest.sm2");
//替换为实际密码,需严格保密,建议使用配置文件或其他方式进行存储 // keyConfigure.setCertPassword("111111");
// 灰度发布配置
// GrayConfigure grayConfigure = new GrayConfigure();
// grayConfigure.setKey("wkroute");
// grayConfigure.setValue("graytest");
// keyConfigure.setGrayConfigure(grayConfigure);
// CFCA证书配置(设置CFCA私钥证书全路径文件名、私钥保护密码以及签名算法)
// keyConfigure.setCfcaProperties("C:/Users/cibfintech/Desktop/test.pfx", "WjXcgOQr", KeySignTypeEnum.SHA256WITHRSA);
// 用户token认证源为“企业客户授权认证”时配置
// keyConfigure.setEnterpriseBearer("1117", "PD4gW2jjoeDzeEdwLbPMFGTN", "123456789");
keyConfigures.put(keyId, keyConfigure);
Configure.setKeyConfigures(keyConfigures);
}
请求环境控制
# 是否测试环境,true连接测试环境、false连接生产环境
keyConfigure.isDevEnv(true);
请求调用示例
以下代码示例为发送POST、表单格式请求
/**
* 通用请求接口(非文件)
*
* @param keyId 应用ID
* @return 响应报文
*/
public String execSdk(String keyId) {
// 【准备请求参数】
// 开发者根据API文档,准备不同的参数集合。headParams-头部信息请求参数、urlParams-URL请求参数、bodyParams-BODY请求参数
Map bodyParams = new HashMap(8);
// bodyParams.put("intParam", "111");
// bodyParams.put("byteParam", "1");
// bodyParams.put("shortParam", "1111");
// bodyParams.put("longParam", "111111111");
// bodyParams.put("floatParam", "111.111");
// bodyParams.put("doubleParam", "111.111111");
// bodyParams.put("boolParam", "false");
// bodyParams.put("charParam", "A");
// 对象参数
// bodyParams.put("mockBean.intParam", "111");
// bodyParams.put("mockBean.stringParam", "ascb");
// 对象数组
// bodyParams.put("mockBeanList[0].intParam", "111");
// bodyParams.put("mockBeanList[0].doubleParam", "111.111");
// bodyParams.put("mockBeanList[0].stringParam", "group1/M00/97/68/CmAFGVpd3CGAREPDAAAECO1Nr3I123.txt");
// bodyParams.put("mockBeanList[1].intParam", "222");
// bodyParams.put("mockBeanList[1].doubleParam", "222.222");
// bodyParams.put("mockBeanList[1].stringParam", "group2/M00/97/68/CmAFGVpd3CGAREPDAAAECO1Nr3I123.txt");
// 字符串数组
// bodyParams.put("stringList[0]", "stringList0");
// bodyParams.put("stringList[1]", "stringList1");
// Map数组
// bodyParams.put("mockBeanMap[0].intParam", "111");
// bodyParams.put("mockBeanMap[0].doubleParam", "111.111");
// bodyParams.put("mockBeanMap[0].stringParam", "AAAAA");
// bodyParams.put("mockBeanMap[1].intParam", "222");
// bodyParams.put("mockBeanMap[1].doubleParam", "222.222");
// bodyParams.put("mockBeanMap[1].stringParam", "BBBBB");
// 【调用SDK方法】
// 传入请求资源URI、请求方法,以及各位置的参数
String response = OpenSdk.gatewayWithKeyId("/api/testApi", ReqMethodEnum.POST, null, null, bodyParams, keyId);
return response;
}
响应报文示例
请求正常响应示例
{"requestId": 2591210438297405445, "saleDate": "20200817", "totalCount": 0}
请求异常响应示例
{"code": "OPEN25307", "msg": "后端服务网络异常,若为交易类接口,重试前先查询交易结果", "traceId": "OPEN-T1-AAA-C09"}
SDK接入示例(下载)
- 所支持Python版本为Python 3+
- 需要依赖库urllib3、gmssl、rsa
设置应用配置信息
import opensdk
conf = opensdk.OpenSdkConfig()
# 应用ID,为KY字母开头的字符串,区分大小写
conf.keyid = 'KYONLYFORTEST012345678'
# 应用签名私钥,需严格保密,建议使用配置文件或其他方式进行存储
conf.key= 'AK7JUorRStFAwM1+BXiHefwmCOZXjVU42b6Oa5JFf5Y7'
# 请求报文签名算法
conf.key_sign_type = 'SM3WithSM2'
# 平台验签公钥
conf.resp_pub_key ='BAQl3uq+FxAGi1/vAZpWyBhdTqBUcenUm8jdPl59XHOeyFkSU3obseTJOTms7lfl0rFALHVTrOmV39N97Z2ZOVI='
# 响应报文验签开关
conf.resp_sign_switch = True
# 请求字段加密密钥
conf.req_param_encrypt_key = '9A9A4QyNz/pc8kZZXzhXOQ=='
# 应用解密私钥
conf.key_decrypt_pri_key = "fne3RlPeEGioaX9atK2ZnILcaPhhm0eXCCrLDDGQA4w="
# 平台加密公钥
conf.plat_encrypt_pub_key = "BG9rVaJJJFk65Zfgj6IGhl8DhF+1JW3pEqPk3HqU8jRSnTumGEKvhFJxmZ1J+10ivmZo/7b1Y/W+FeaqDaMV4c0="
请求环境控制
# 是否测试环境,True连接测试环境、False连接生产环境
conf.is_dev_env = True
请求调用示例
以下代码为通过POST发送表单格式请求
conf.is_dev_env = True
# post表单请求
body_params = {'param1': '', 'param2': ''}
# 更多类型请求参数填写示例
# 普通类型参数
# body_params["intParam"] = "111";
# body_params["byteParam"] = "1";
# body_params["shortParam"] = "1111";
# body_params["longParam"] = "111111111";
# body_params["floatParam"] = "111.111";
# body_params["doubleParam"] = "111.111111";
# body_params["boolParam"] = "false";
# body_params["charParam"] = "A";
# 对象参数
# body_params["mockBean.intParam"] = "111";
# body_params["mockBean.stringParam"] = "ascb";
# 对象数组
# body_params["mockBeanList[0].intParam"] = "111";
# body_params["mockBeanList[0].doubleParam"] = "111.111";
# body_params["mockBeanList[0].stringParam"] = "group1/M00/97/68/CmAFGVpd3CGAREPDAAAECO1Nr3I123.txt";
# body_params["mockBeanList[1].intParam"] = "222";
# body_params["mockBeanList[1].doubleParam"] = "222.222";
# body_params["mockBeanList[1].stringParam"] = "group2/M00/97/68/CmAFGVpd3CGAREPDAAAECO1Nr3I123.txt";
# 字符串数组
# body_params["stringList[0]"] = "stringList0";
# body_params["stringList[1]"] = "stringList1";
# Map数组
# body_params["mockBeanMap[0].intParam"] = "111";
# body_params["mockBeanMap[0].doubleParam"] = "111.111";
# body_params["mockBeanMap[0].stringParam"] = "AAAAA";
# body_params["mockBeanMap[1].intParam"] = "222";
# body_params["mockBeanMap[1].doubleParam"] = "222.222";
# body_params["mockBeanMap[1].stringParam"] = "BBBBB";
print(opensdk.opensdk(conf, '/api/testApi', 'POST', None, None, body_params, None))
更多示例请参考example.py文件
响应报文示例
请求正常响应示例
{"requestId": 2591210438297405445, "saleDate": "20200817", "totalCount": 0}
请求异常响应示例
{"code": "OPEN25307", "msg": "后端服务网络异常,若为交易类接口,重试前先查询交易结果", "traceId": "OPEN-T1-AAA-C09"}
SDK接入示例(下载)
测试设置应用配置信息
Dictionary keyConfigures = Configure.KeyConfigures;
KeyConfigure keyConfigure = new KeyConfigure {
# 应用ID
KeyId = "KYONLYFORTEST012345678",
# 应用签名私钥
PriKey = "AK7JUorRStFAwM1+BXiHefwmCOZXjVU42b6Oa5JFf5Y7",
# 平台验签公钥
RespPubKey = "BMZdYoBs7R6auda5EBHZo7fifhf96i9QAMCGMfZ4J1VRCV9Hukb5SL5nEpQqdJlf/HC/7xngtOu55PkN44uohP0=",
# 字段加密密钥, 可为空
ReqParamEncryptKey = "7TJUMLAH3D47tyhSLb0Asw==",
KeySignTypeEnum = KeySignTypeEnum.SM3WithSM2,
# 响应报文验签开关
RespSignSwitch = true,
RespSignAlgorithm = RespSignAlgorithmEnum.SM3WithSM2,
# 应用解密私钥,全报文加密调用时使用
KeyDecryptPriKey = "fne3RlPeEGioaX9atK2ZnILcaPhhm0eXCCrLDDGQA4w=",
# 平台加密公钥,全报文加密调用时使用
PlatEncryptPubKey = "BG9rVaJJJFk65Zfgj6IGhl8DhF+1JW3pEqPk3HqU8jRSnTumGEKvhFJxmZ1J+10ivmZo/7b1Y/W+FeaqDaMV4c0="
};
keyConfigures["KYONLYFORTEST012345678"] = keyConfigure;
Configure.KeyConfigures = keyConfigures;
请求环境控制
// 是否测试环境,true连接测试环境,false连接生产环境
Configure.DevEnv = true;
请求调用示例
以通过以下代码发送post表单格式请求
// 【准备请求参数】
// 开发者根据请求资源,准备不同的参数集合。
// headParams-头部信息请求参数、urlParams-URL请求参数、bodyParams-BODY请求参数
Dictionary bodyParams = new Dictionary();
// 更多类型请求参数示例
// 普通类型参数
// bodyParams.Add("intParam", "111");
// bodyParams.Add("byteParam", "1");
// bodyParams.Add("shortParam", "1111");
// bodyParams.Add("longParam", "111111111");
// bodyParams.Add("floatParam", "111.111");
// bodyParams.Add("doubleParam", "111.111111");
// bodyParams.Add("boolParam", "false");
// bodyParams.Add("charParam", "A");
// 对象参数
// bodyParams.Add("mockBean.intParam", "111");
// bodyParams.Add("mockBean.stringParam", "ascb");
// 对象数组
// bodyParams.Add("mockBeanList[0].intParam", "111");
// bodyParams.Add("mockBeanList[0].doubleParam", "111.111");
// bodyParams.Add("mockBeanList[0].stringParam", "group1/M00/97/68/CmAFGVpd3CGAREPDAAAECO1Nr3I123.txt");
// bodyParams.Add("mockBeanList[1].intParam", "222");
// bodyParams.Add("mockBeanList[1].doubleParam", "222.222");
// bodyParams.Add("mockBeanList[1].stringParam", "group2/M00/97/68/CmAFGVpd3CGAREPDAAAECO1Nr3I123.txt");
// 字符串数组
// bodyParams.Add("stringList[0]", "stringList0");
// bodyParams.Add("stringList[1]", "stringList1");
// Map数组
// bodyParams.Add("mockBeanMap[0].intParam", "111");
// bodyParams.Add("mockBeanMap[0].doubleParam", "111.111");
// bodyParams.Add("mockBeanMap[0].stringParam", "AAAAA");
// bodyParams.Add("mockBeanMap[1].intParam", "222");
// bodyParams.Add("mockBeanMap[1].doubleParam", "222.222");
// bodyParams.Add("mockBeanMap[1].stringParam", "BBBBB");
// 【调用SDK方法】
String response = OpenSDK.GatewayWithKeyId("/api/open/queryPubKey", ReqMethodEnum.POST, null, null, bodyParams, "KY5qGtfDTmaiCUFzJfGL88YE");
Console.WriteLine("返回信息:" + response);
更多示例请参考Example.cs文件
响应报文示例
请求正常响应示例
{"requestId": 2591210438297405445, "saleDate": "20200817", "totalCount": 0}
请求异常响应示例
{"code": "OPEN25307", "msg": "后端服务网络异常,若为交易类接口,重试前先查询交易结果", "traceId": "OPEN-T1-AAA-C09"}
SDK接入示例(下载)
- PHP版本为PHP7.2+,依赖国密库为lpilp/guomi 1.0.6
- 需开启openssl、gmp、curl扩展
- 该国密库与Java版本互相加解密会出现乱码问题,需自行修改源码,修改该方式如下: 找到vendor/lpilp/guomi/src/smecc/SM4/Sm4.php,将其中的enDataCbc与deDataCbc函数替换为SDK patch目录下的Sm4.php对应函数。
测试设置应用配置信息
在open_config.php中可以进行应用参数的配置
$open_config = array();
$open_config['KYONLYFORTEST012345678'] = array(
// 应用ID,为KY字母开头的字符串,区分大小写
'keyid' => 'KYONLYFORTEST012345678',
// 应用签名私钥,需严格保密,建议使用配置文件或其他方式进行存储
'privateKey' => 'AK7JUorRStFAwM1+BXiHefwmCOZXjVU42b6Oa5JFf5Y7',
// 平台验签公钥
'respPubKey' => 'BAQl3uq+FxAGi1/vAZpWyBhdTqBUcenUm8jdPl59XHOeyFkSU3obseTJOTms7lfl0rFALHVTrOmV39N97Z2ZOVI=',
// 字段加密密钥
'reqParamEncryptKey' => '9A9A4QyNz/pc8kZZXzhXOQ==',
// 响应报文验签开关,默认为false
'respSignSwitch' => false,
// 应用解密私钥
'keyDecryptPriKey' => '',
// 平台加密公钥
'platEncryptPubKey' => '',
// 代理设置,设为null为不使用代理
'proxy_ip' => null,
'proxy_port' => null
);
请求环境控制
在参数配置中通过以下配置控制请求的环境
// 是否测试环境开关,true连接测试环境,false连接生产环境
'isDevEnv' => true,
请求调用示例
通过以下代码发送post表单格式请求
require_once('open_config.php');
// 开放银行平台SDK API类
// 【注意】如果该类文件在其它路径的话,请自行替换
require_once('lib/open_core.class.php');
require_once 'lib/callback_util.php';
require_once 'lib/symmetric_encrypt.php';
// 若时区不正确,可以使用下行方式更改,也可以在php.ini中设置
// ini_set('date.timezone','Asia/Shanghai');
// 实例化
$open = new OpenSDK($open_config);
$keyid = 'KYONLYFORTEST012345678';
// 发送POST请求
execParam($open, $keyid);
function execParam($sdk, $keyid)
{
$body_param_array = array('param1' => '', 'param2' => '');
// 更多类型参数配置示例
// 普通类型参数
// $body_param_array["intParam"] = "111";
// $body_param_array["byteParam"] = "1";
// $body_param_array["shortParam"] = "1111";
// $body_param_array["longParam"] = "111111111";
// $body_param_array["floatParam"] = "111.111";
// $body_param_array["doubleParam"] = "111.111111";
// $body_param_array["boolParam"] = "false";
// $body_param_array["charParam"] = "A";
// 对象参数
// $body_param_array["mockBean.intParam"] = "111";
// $body_param_array["mockBean.stringParam"] = "ascb";
// 对象数组
// $body_param_array["mockBeanList[0].intParam"] = "111";
// $body_param_array["mockBeanList[0].doubleParam"] = "111.111";
// $body_param_array["mockBeanList[0].stringParam"] = "group1/M00/97/68/CmAFGVpd3CGAREPDAAAECO1Nr3I123.txt";
// $body_param_array["mockBeanList[1].intParam"] = "222";
// $body_param_array["mockBeanList[1].doubleParam"] = "222.222";
// $body_param_array["mockBeanList[1].stringParam"] = "group2/M00/97/68/CmAFGVpd3CGAREPDAAAECO1Nr3I123.txt";
// 字符串数组
// $body_param_array["stringList[0]"] = "stringList0";
// $body_param_array["stringList[1]"] = "stringList1";
// Map数组
// $body_param_array["mockBeanMap[0].intParam"] = "111";
// $body_param_array["mockBeanMap[0].doubleParam"] = "111.111";
// $body_param_array["mockBeanMap[0].stringParam"] = "AAAAA";
// $body_param_array["mockBeanMap[1].intParam"] = "222";
// $body_param_array["mockBeanMap[1].doubleParam"] = "222.222";
// $body_param_array["mockBeanMap[1].stringParam"] = "BBBBB";
$result = $sdk->exec('/api/testApi', 'POST', null, null, $body_param_array, null, $keyid);
var_dump($result);
}
更多示例请查看example.php文件
响应报文示例
请求正常响应示例
{"requestId": 2591210438297405445, "saleDate": "20200817", "totalCount": 0}
请求异常响应示例
{"code": "OPEN25307", "msg": "后端服务网络异常,若为交易类接口,重试前先查询交易结果", "traceId": "OPEN-T1-AAA-C09"}
其他SDK请联系我们