youzanyun/open-sdk

有赞云服务端SDK


README

Latest Version on Packagist Software License Total Downloads Build Status

YouzanYun SDK

安装

  1. 使用 composer

推荐使用该方式安装, 更优雅

$ composer require youzanyun/open-sdk
  1. 不使用 composer 管理

如果你的项目不使用composer管理, 可以直接下载 Release包 并解压, 然后在项目中添加如下代码:

require_once '/YOUR_SDK_PATH/youzanyun-open-sdk/open-sdk/vendor/autoload.php';

请注意, 需要下载的是最新的 youzanyun-open-sdk.zip 压缩包, 而不是 Source code 压缩包, YOUR_SDK_PATH 需更改为项目实际路径.

使用

详情参考 examples

1. 获取及刷新access_token

工具型应用 获取access_token

require_once './vendor/autoload.php';

$clientId = "YOUR_CLIENT_ID";
$clientSecret = "YOUR_CLIENT_SECRET";
$resp = (new \Youzan\Open\Token($clientId, $clientSecret))->getToolAppToken('YOUR_CODE');
var_dump($resp);

自用型应用 获取access_token

require_once './vendor/autoload.php';

$clientId = "YOUR_CLIENT_ID";
$clientSecret = "YOUR_CLIENT_SECRET";

// 1. 不获取refresh_token
$resp = (new \Youzan\Open\Token($clientId, $clientSecret))->getSelfAppToken('YOUR_KDT_ID');
var_dump($resp);

// 2. 获取refresh_token
$config['refresh'] = true;  //是否获取refresh_token(可通过refresh_token刷新token)
$resp = (new \Youzan\Open\Token($clientId, $clientSecret))->getSelfAppToken('YOUR_KDT_ID', $config);
var_dump($resp);

工具型应用及自用型应用 刷新access_token

require_once './vendor/autoload.php';

$clientId = "YOUR_CLIENT_ID";
$clientSecret = "YOUR_CLIENT_SECRET";
$resp = (new \Youzan\Open\Token($clientId, $clientSecret))->refreshToken('YOUR_REFRESH_TOKEN');
var_dump($resp);

2. 接口调用

Token方式

require_once './vendor/autoload.php';

$accessToken = 'YOUR_TOKEN';
$client = new \Youzan\Open\Client($accessToken);

$method = 'youzan.item.get';
$apiVersion = '3.0.0';

$params = [
    'alias' => 'fa8989ad342k',
];

$response = $client->post($method, $apiVersion, $params);
var_dump($response);

免鉴权方式 (仅支持免鉴权接口)

require_once './vendor/autoload.php';

$client = new \Youzan\Open\Client();

$method = 'youzan.item.get';
$apiVersion = '3.0.0';

$params = [
    'alias' => 'fa8989ad342k',
];

$response = $client->post($method, $apiVersion, $params);
var_dump($response);

3. 加密消息解密

参考 examples/crypto/decrypt.php

4. 加解密调用

require_once './vendor/autoload.php';
$secretClient = SecretClient::getInstance("clientId","clientSecret");

$kdtId = xxxx;
// 单项加密
$encryptRel = $secretClient->singleEncrypt($kdtId, "加密内容");
// 单项解密
$decryptRel = $secretClient->singleDecrypt($kdtId,"解密内容");
// 批量加密
$batchEncryptArray = array("xxx1","xxx2","xxx3");
$batchEncryptArrayRel = $secretClient->batchEncrypt($kdtId,$batchEncryptArray);
// 批量解密
$batchDecryptArrayRel = $secretClient->batchDecrypt($kdtId,array_values($batchEncryptArrayRel));
// 单项密文判断
$encryptIsEncrypt = $secretClient->singleIsEncrypt($encryptRel);
// 批量密文判断
$batchEncryptIsEncrypt = $secretClient->batchIsEncrypt($batchEncryptArray);
// 单项解密并脱敏 如果是密文则解密脱敏,明文直接脱敏
// 脱敏类型: MaskHandler::$const_address 地址,MaskHandler::$const_bank_card 银行卡,MaskHandler::$const_name 中文名,MaskHandler::$const_email 邮箱,MaskHandler::$const_company_name 企业名称,MaskHandler::$const_id_card 身份证,MaskHandler::$const_mobile 手机号
$markAddress = $secretClient->singleDecryptMask($kdtId,"华泰创业园5号楼2楼217室",MaskHandler::$const_address);
// 批量解密并脱敏 如果是密文则解密脱敏,明文直接脱敏
// 脱敏类型: MaskHandler::$const_address 地址,MaskHandler::$const_bank_card 银行卡,MaskHandler::$const_name 中文名,MaskHandler::$const_email 邮箱,MaskHandler::$const_company_name 企业名称,MaskHandler::$const_id_card 身份证,MaskHandler::$const_mobile 手机号
$batchDncryptMarkArray = array("18736955554","18736955555","18736955556");
$batchMarkMobileRel = $secretClient->batchDecryptMask($kdtId,$batchDncryptMarkArray,MaskHandler::$const_mobile);
// 密文检索摘要生成
$addressDigest = $secretClient->generateEncryptSearchDigest($kdtId,"华泰创业园5号楼2楼217室");

4.1 脱敏规则:

脱敏类型: MaskHandler::$const_address 地址,MaskHandler::$const_bank_card 银行卡,MaskHandler::$const_name 中文名,MaskHandler::$const_email 邮箱,MaskHandler::$const_company_name 企业名称,MaskHandler::$const_id_card 身份证,MaskHandler::$const_mobile 手机号

4.2 密文检索:

密文摘要的长度是原明文的6倍左右,开发者需要合理评估数据库字段长度,避免字段超长

开发者需要新增数据库字段存储密文摘要,在模糊查询是调用密文摘要接口生成查询信息对应密文摘要并去数据库中模糊查询;例如需要对数据库中mobile字段的密文进行检索,则需要新增mobile_encrypt_digest字段(数据库字段名自定义,此处仅举例),在手机号落库时调用密文检索摘要方法生成手机号(e.g. 18736956666)对应的密文检索摘要M1并落库到mobile_encrypt_digest中,模糊查询时调用密文检索摘要方法生成查询信息(e.g. 187)的密文检索摘要M2,并调用模糊查询sql进行模糊查询(e.g. selet * from mobile_info where mobile_encrypt_digest like '%M2%')

License

The MIT License. Please see License File for more information.