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 = "BAQl3uq+FxAGi1/vAZpWyBhdTqBUcenUm8jdPl59XHOeyFkSU3obseTJOTms7lfl0rFALHVTrOmV39N97Z2ZOVI=";        
    // 字段加密密钥
    String reqParamEncryptKey = "9A9A4QyNz/pc8kZZXzhXOQ==";        
    // 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);          
    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("stringParam", "Hello World");
    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");
    // 【调用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接入示例(下载

  • 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,
    // 代理设置,设为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接入示例(下载

  • 所支持Python版本为Python 3+
  • 需要依赖库urllib3、gmssl、rsa

设置应用配置信息

import opensdk
 
conf = opensdk.OpenSdkConfig()
# 应用ID,为KY字母开头的字符串,区分大小写
conf.keyid = 'KYONLYFORTEST012345678'
# 请求报文签名算法
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= 'AK7JUorRStFAwM1+BXiHefwmCOZXjVU42b6Oa5JFf5Y7'

请求环境控制

# 是否测试环境,True连接测试环境、False连接生产环境
conf.is_dev_env = True

请求调用示例

以下代码为通过POST发送表单格式请求

# post表单请求
body_params = {'param1': '', 'param2': ''}
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接入示例(下载

测试设置应用配置信息

// 应用ID
Configure.KeyId = "KYONLYFORTEST012345678";
// 应用私钥
Configure.PriKey = "AK7JUorRStFAwM1+BXiHefwmCOZXjVU42b6Oa5JFf5Y7";
// 签名类型,不需要修改
Configure.KeySignTypeEnum = KeySignTypeEnum.SM3WithSM2;
// 对称加密密钥
Configure.ReqParamEncryptKey = "9A9A4QyNz/pc8kZZXzhXOQ==";
// 是否开启响应报文验签
Configure.RespSignSwitch = true;
// 响应报文验签算法,不需要修改
Configure.RespSignAlgorithm = RespSignAlgorithmEnum.SM3WithSM2;
// 响应报文验签公钥
Configure.RespPubKey = "BAQl3uq+FxAGi1/vAZpWyBhdTqBUcenUm8jdPl59XHOeyFkSU3obseTJOTms7lfl0rFALHVTrOmV39N97Z2ZOVI=";

请求环境控制

// 是否测试环境,true连接测试环境,false连接生产环境
Configure.DevEnv = true;

请求调用示例

以通过以下代码发送post表单格式请求

// 【准备请求参数】
// 开发者根据请求资源,准备不同的参数集合。
// headParams-头部信息请求参数、urlParams-URL请求参数、bodyParams-BODY请求参数
Dictionary bodyParams = new Dictionary();
//bodyParams.Add("flag", "139");
//bodyParams.Add("listString[0]", "中文信息");
//bodyParams.Add("mapDiyClass[key].c", "ABC和中文");
                                     
// 【调用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请联系我们