消息加/解密
简介
加密
消息加密后格式
<xml>
<Encrypt><![CDATA[onpMeY0hanKaXz0sKu5994Fn5LA/ckapXA6z1i5SPyegjPlHlXz7iBILhlQje9f2Y0xfXL/0lZZe0sSXUW+1ik83jO0U1+nT66AqXSAMO77cHRMI5bBDilXXzYKVjw7DLxKnAnKkvNg5F1DofrZKEkMdN02dN14kLiV30WPM+meAJcx91QbEtUonI6ABqiNqOzwJegpOolG5Tup8iT4mFw==]]></Encrypt>
<MsgSignature><![CDATA[46a085b52d26f352f9c887b349d9d2c16cac3050]]></MsgSignature>
<TimeStamp>1409304348</TimeStamp>
<Nonce><![CDATA[1214730348]]></Nonce>
</xml>
参数说明
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
Encrypt | 是 | string | 加密字符串 |
MsgSignature | 是 | string | 消息体签名 |
TimeStamp | 是 | number | 时间戳 |
Nonce | 是 | number | 随机数nonce |
解密(php示例)
1.
2.
$xml_tree = new DOMDocument();
$xml_tree->loadXML($encryptMsg);
//获取XML中的数据
$array_e = $xml_tree->getElementsByTagName('Encrypt');
$array_m = $xml_tree->getElementsByTagName('MsgSignature');
$array_t = $xml_tree->getElementsByTagName('TimeStamp');
$array_n = $xml_tree->getElementsByTagName('Nonce');
//加密字符串
$encrypt = trim($array_e->item(0)->nodeValue);
//消息体签名
$msg_sign = trim($array_m->item(0)->nodeValue);
//时间戳
$timeStamp = trim($array_t->item(0)->nodeValue);
//随机数
$nonce = trim($array_n->item(0)->nodeValue);
$format = "<xml><Encrypt><![CDATA[%s]]></Encrypt></xml>";
$from_xml = sprintf($format, $encrypt);
$msg = '';
$errCode = $pc->decryptMsg($msg_sign, $timeStamp, $nonce, $from_xml, $msg);
说明
1.
file_get_contents('php://input')
,其他语言请自行查阅2.
Encrypt标签解密数据格式
<Encrypt></Encrypt>
标签解密后没有 <doc></doc>
根节点。因为一些强类型语言在解析xml时若没有根节点 会解析出错,所以新推送类型推送时均有<doc></doc>
根节点。<doc></doc>
根节点数据<type>order</type>
<action>create</action>
...
<app_id>app123456</app_id>
<doc></doc>
根节点数据<doc>
<type>order_change</type>
<action>create</action>
...
<app_id>app123456</app_id>
</doc>
消息加解密SDK下载(包含PHP、Java、Python等)
修改于 2022-03-08 10:14:18