数据都是官方文档上面的,可以直接复制使用
// 与文档一样
$key = [
"Sn" => "fa05fe1e5bcc79b81ad5ad4b58acf787",
"Key" => "otUpngOjU+nVQaWJIC3D/yMLV17RKaP6t4Ot9tbnzLY="
];
// 与文档一样
// 在原数据内添加安全字段,后组成的data
$data = [
"_n" => "o89QaPVsRu1yppIZzvSZc4", // 安全字段 随机字符串
"_appid" => "wxba6223c06417af7b", // 安全字段 appid
"_timestamp" => 1635927954, // 安全字段 时间戳time()
"appid" => "wxba6223c06417af7b",
"openid" => "oEWzBfmdLqhFS2mTXCo2E4Y9gJAM",
"scene" => 0,
"client_ip" => "127.0.0.1"
];
// 生成12字节随机字符串iv
// $iv = random_bytes(12);
// 为了与文档同步,base64_encode(iv) = fmW/zNxXlytUZBgj,这里使用base64_decode反向处理
$iv = base64_decode("fmW/zNxXlytUZBgj");
$aad = "https://api.weixin.qq.com/wxa/getuserriskrank|{$data['appid']}|{$data['_timestamp']}|{$key['Sn']}";
// 执行加密
$ciphertext = openssl_encrypt(
json_encode($data),
'aes-256-gcm',
base64_decode($key['Key']),
OPENSSL_RAW_DATA,
$iv,
$tag,
$aad,
16
);
// 组织数据
$req_data = array(
"iv" => base64_encode($iv),
"data" => base64_encode($ciphertext),
"authtag" => base64_encode($tag)
);
返回的数据与官方案例的结果一致
大佬 有python版本的没有啊