视频号小店json消息解密PHP版本
视频号小店json消息解密
由于微信官方文档提供代码只有xml消息解密版本,故写一下json的消息解密,本代码根据xml消息解密版本修改。本代码使用laravel框架编写,请根据代码进行修改使用
小店消息
/**
* 接收消息,处理消息方法
*/
public function msgHandler(){
// 接收消息
$json = file_get_contents("php://input");
// 获取到的json格式
// {"ToUserName":"gh_xxxxxxxxxxx","Encrypt":"ycfMeCtQ0/6YZRjXRWzvMuIcYFhvjeO3rw5k2zrl97e20RwZHiNXRNisNPnmcG0/262hhJz+ZMhcJ4tkdBmnnru7UqbncxWgELns0NeLKpwGo1GlKcx43/Jt+094V2WA/6P2DGUrxXnGMbnVp8CB5cR0CJV+iTwvpTldyd58Qr5oa7ngV9HaR+PT1K/69Ua/6MQdiHCs3SMF9jPsP23OPsqT2xB1p1JJb/0WxkawOfcMZzDykKJS7jOmXSIm0iYkEjg5V7VUNSTQXfe6/qKmtOzybFfutNtOgyZf3aBxGkvMDJxPCzPkSwkxQeMfPxLQrINb5IgeypdHlr+IUILeyzUGq2gXhq49QDcbdV3f/0/4NnhL63Z8WYRFv9x3G+2K"}
// json转对象处理
$jsonObj = json_decode($json);
// 获取到加密消息
$Encrypt = $jsonObj->Encrypt;
// 后台服务市场自研消息推送的appid
$appid = 'xxxxxxxxxx';
// 消息解密方法
$content = $this->decrypt($Encrypt, $appid);
// content是解密明文 加密串解密出来也是个json,报错的话是false,后续自己处理
}
/**
* 对密文进行解密
* @param string $encrypted 需要解密的密文
* @return string 解密得到的明文
*/
private function decrypt(string $encrypted, $appid)
{
try {
// 后台服务市场自研的消息推送的消息密钥 消息加密密钥由43位字符组成,范围为A-Z,a-z,0-9
$encodingAesKey =