推送消息加解密

注:返回值code=1 为报错、msg的为报错信息(请尽量用英文表示报错信息), 后续的商家应用会上线回调日志查询功能,可以看到返回的值。

1.MD5

说明

通过防伪签名参数sign,它是 MD5(client_id+msg+client_secrect) 这样得到的。client_id和client_secrect是我们申请插件的信息,msg是经过UrlEncode(UTF-8)编码的消息对象的json字符串,具体参数请看本页中各业务消息结构文档。

示例


$client_id = "";//应用的 client_id
$client_secret = "";//应用的 client_secret

$data = $_POST;

/**
 * 判断消息是否合法,若合法则返回成功标识
*
*如果失败  返回code=1  msg为你的报错信息
*
 */
$msg = $data['msg'];
$sign_string = $client_id.$msg.$client_secret;
$sign = md5($sign_string);

if($sign != $data['sign']){
    $result = array("code"=>1,"msg"=>"error") ;
    return json_encode($result);
}else{
    $result = array("code"=>0,"msg"=>"success") ;
    return json_encode($result);
}

/**
 * msg内容经过 urlencode 编码,需进行解码
 */
$msg = json_decode(urldecode($msg),true);

/**
 * 根据 msg_type 来识别消息事件类型,具体的 msg_type 值以文档为准,此处仅是示例
 */
if($data['msg_type'] == "SCRM_CARD"){
    //处理会员卡商家侧消息
}

2.pkcs#7

说明

通过开源的pkcs#7加密标准,其中参数分别是:TOKEN,ENCODING_AES_KEY是插件服务器配置。CLIENT_ID是插件id。解密方式参看示例代码,值得注意的是在调试时,ENCODING_AES_KEY,TOKEN 我们可以在控制台修改成任一值,不过ENCODING_AES_KEY的长度一定要是43位字符串组成。

示例


require_once("JiSuCrypt.php");

const TOKEN = 'zhichi';  //插件token
const ENCODING_AES_KEY = 'VlYzNVFxdzdKVzNXMmVWT291QkIyODV4bEp2NUJvNTg'; // 插件ENCODINGAESKEY
const CLIENT_ID = 'test_c_id';//插件id


$data = $_POST;

$msg = $data['msg'];
$encryptMsg = json_decode($msg,true);

$crypt = new JiSuCrypt(TOKEN, ENCODING_AES_KEY, CLIENT_ID);

$errCode = $crypt->DecryptMsg($encryptMsg['signature'], $encryptMsg['timestamp'], $encryptMsg['nonce'], $encryptMsg['encrypt'],$decryptMsg);


/**
 * msg内容是解密后的json字符串,需要进行json解码
 */

$msg = json_decode($decryptMsg,true);

/**
 * 判断消息是否合法,若合法则返回成功标识
 * 如果失败  返回code=1  msg为你的报错信息
 */
if (is_array($msg)) {
    $result = array("code"=>0,"msg"=>"success") ;
    return json_encode($result);
}else{
    $result = array("code"=>1,"msg"=>"error") ;
    return json_encode($result);
}


/**
 * 根据 msg_type 来识别消息事件类型,具体的 msg_type 值以文档为准,此处仅是示例
 */

if($data['msg_type'] == "SCRM_CARD"){
    //处理会员卡商家侧消息
}

SDK下载地址 https://github.com/gaowenfei2013/JiSuCrypt

results matching ""

    No results matching ""