首页 API市场 文档中心 注册 登录
首页 > 文档中心 > 开发指南 > 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请联系我们