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请联系我们