<?php
class Base
{
const KEY = 'key123456'; // 商户密钥
// 生成签名
public function getSign($arr) {
// 去除空值
$arr = array_filter($arr);
if (isset($arr['sign'])) {
unset($arr['sign']);
}
// 按照键名字典排序
ksort($arr);
// 生成url格式字符串
$str = $this->arrToUrl($arr);
$str .= '&key=' . self::KEY;
return strtoupper(md5($str));
}
// 数组转url格式
public function arrToUrl($arr) {
return urldecode(http_build_query($arr));
}
// 获取带签名的数组
public function setSign($arr) {
$arr['sign'] = $this->getSign($arr);
return $arr;
}
// 验证签名
public function checkSign($arr) {
$sign = $arr['sign'] ?? '';
$mySign = $this->getSign($arr);
if ($sign == $mySign) {
return true;
} else {
return false;
}
}
}
微信支付签名算法与校验
最新推荐文章于 2024-06-23 12:46:50 发布