===========================================================
钉钉开发,同一个手机号(用户) 挂在多个企业下,userid是相同的,但是unionid不同;亲测。
===========================================================
微信jssdk 签名错误 invalid signature
在帮助文档有这么一句话:签名用的url必须是调用JS接口页面的完整URL。
===========================================================
原先:
if ($redpacket['haspwd'] && $pwd != $redpacket['pwd']) {
$openCount = Redis::incrMemberRedpacketOpencount($this->userid, $id);
$leftCount = 10 - $openCount;
if ($leftCount > 0) {
$this->returnError(300, '口令错误,还剩' . $leftCount . "次机会");
} else {
$this->returnError(300, '口令错误');
}
}
修正后
if ($redpacket['haspwd']) {
if (Redis::getMemberRedpacketOpencount($this->userid, $id) >= 10) {
$this->returnError(300, '打开次数已超过限制');
}
if ($pwd != $redpacket['pwd']) {
$openCount = Redis::incrMemberRedpacketOpencount($this->userid, $id);
$leftCount = 10 - $openCount;
if ($leftCount > 0) {
$this->returnError(300, '口令错误,还剩' . $leftCount . "次机会");
} else {
$this->returnError(300, '口令错误');
}
}
}
原先会造成 10次后 输入正确密码也能进入下面逻辑
php 在 两数相减的结果可能会有多位小数,
可以采用下面处理:
$money = floatval(number_format(($amount - $paybalance), 2, '.', ''));
二位数想减一定是二位数吗?
php 中: 2.01-2 = 0.0099999999999998
2.21-2.2=0.0099999999999998
肉眼看来相减是0.01 并且小数点第二位是1 相减得出的是0.00999999
2.2-2.1=0.1
2.02-2=0.02
$price=69.1;
$count=100;
$total=$price*$count-6910;
echo $total;
$int = 0.58;
var_dump(intval($int * 100));
输出的是0.57
在浮点数里面 0.58是被视为.57999999999999999999999……9999无限接近0.58
相除 的结果若是TP 带的dump方法是看不出精确度的。
另外在java spring boot 中:
BigDecimal类型, 出现6.9到了app端变成6.8000000009
nginx: 配置php-fpm:
/dev/shm/php-cgi.sock
fastcgi_pass unix:/dev/shm/php-cgi.sock;
===========================
$tranAmount= 1985.76
$wallet['common_avail_money'] = 571.43
$wallet['mer_avail_money'] = 1414.33;
#修改前代码
if (($wallet['common_avail_money'] + $wallet['mer_avail_money']) < $tranAmount) {
echo "余额不足";
}
#修改后
$compRet = bccomp($wallet['common_avail_money'] + $wallet['mer_avail_money'], $tranAmount, 2); if ($compRet == -1) { echo "余额不足"; }
==========================