前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信退款结果回调解密,低版本以及7.1以上版本的使用方法

微信退款结果回调解密,低版本以及7.1以上版本的使用方法

作者头像
宣言言言
发布2019-12-19 13:55:13
1K0
发布2019-12-19 13:55:13
举报
文章被收录于专栏:宣言(Siam)博客宣言(Siam)博客

微信的退款结果回调,数据是加密的。我们需要解密之后才能得到订单信息和结果信息,进行处理。

再次吐槽微信,官方demo都藏得贼吉尔深,一般人没有点狗屎运都找不到。

PHP5~PHP7.0常见解密方式

说不多说上代码(其实在以前我这一种已经写过文章了)。

传送门 –> http://www.yancoo.cn/index/article/show/id/33.html

代码语言:javascript
复制
    /**
     * 退款解密
     * @param array $data
     * @return bool|string
     */
    public function decryption($data = array())
    {
        $encryption = base64_decode($data['req_info']);
        $key = md5($data['key']);
        $str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encryption, MCRYPT_MODE_ECB);
        $block = mcrypt_get_block_size('rijndael_128', 'ecb');
        $pad = ord($str[($len = strlen($str)) - 1]);
        $len = strlen($str);
        $pad = ord($str[$len - 1]);
        return substr($str, 0, strlen($str) - $pad);
    }

使用方式也很简单

代码语言:javascript
复制
$data = [
    'req_info' => $xml['req_info'], // 退款回调xml中的req_info
    'key'      => $key,             // 商户的key
];
var_dump($work->decryption($data));

PHP7.1+的解密方式

在PHP7.1开始,mcrypt_decrypt系列函数已经被弃用,并且在PHP7.2的版本从核心扩展库中移除(当然还是可以自己编译进去的)。

在PHP7.1使用以上方式解密会得到如下报错(如果你开启了PHP报错提示的话)。

代码语言:javascript
复制
Function mcrypt_decrypt() is deprecated in ...

如果你是PHP7.1,那么也有不推荐的解决方案:提高报错等级、强制抑制错误提示。也就可以继续使用以上方案去解密。

如果是PHP7.2,该系列函数已经被移除核心库了,并且在以后也得不到支持。推荐使用openssl系列解密。

代码语言:javascript
复制
    /**
     * 退款解密(7.1+版本推荐使用)
     * @param array $data
     * @return bool|string
     */
    public function decryption($data = array())
    {
        $encryption = base64_decode($data['req_info']);
        $key = md5($data['key']);
        $return = openssl_decrypt($encryption , 'AES-256-ECB', $key, OPENSSL_RAW_DATA);
        return $return;
    }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.08.30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PHP5~PHP7.0常见解密方式
  • PHP7.1+的解密方式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档