事情起因
嘛,作为我们百万计划中的第一步,就是先来搞一下这个支付接口网关,本人才高中所以也没啥办法申请到营业执照,那只有使用第三方支付接口啦,彩虹易支付作为最被广泛使用的第三方支付接口源码,没料到SDK却会在PHP8.0中报错(可能是我下载到很旧的版本,不清楚不知道)
反正,无论是在我测试发起支付,支付回调的时候,都会报错500,我只好把整份SDK的源码读一遍,然后把一些过时的地方改一下了。
远古版本的foreach?
貌似发现了一个很远古版本的foreach
,使用while
,list
和each
来实现的,改一下这个试试看w
原本的代码(不止这一处哦):
function createLinkstring($para) {
$arg = "";
while (list ($key, $val) = each ($para)) {
$arg.=$key."=".$val."&";
}
//去掉最后一个&字符
$arg = substr($arg,0,count($arg)-2);
//如果存在转义字符,那么去掉转义
if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
return $arg;
}
更改后的代码:
function createLinkstring($para) {
$arg = "";
foreach($para as $key => $val) {
$arg.=$key."=".$val."&";
}
//去掉最后一个&字符
$arg = substr($arg,0,strlen($arg)-1);
//如果存在转义字符,那么去掉转义
if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
return $arg;
}
注意: 这里其实也把原本的count
改为strlen
了,但是改了之后记得要把-2
改为-1
,不然回调的时候验证会失败哦!
神奇的get_magic_quotes_gpc()?
然后还是报错,我估计就是这个get_magic_quotes_gpc
过时了,去php官网一看果然是这样,所以再改一下w
原本的代码:
function createLinkstring($para) {
$arg = "";
foreach($para as $key => $val) {
$arg.=$key."=".$val."&";
}
//去掉最后一个&字符
$arg = substr($arg,0,strlen($arg)-1);
//如果存在转义字符,那么去掉转义
if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
return $arg;
}
更改后的代码:
function createLinkstring($para) {
$arg = "";
foreach($para as $key => $val) {
$arg.=$key."=".$val."&";
}
//去掉最后一个&字符
$arg = substr($arg,0,strlen($arg)-1);
//如果存在转义字符,那么去掉转义
$arg = stripslashes($arg);
return $arg;
}
总结
改完之后大概就可以使用了,其实也是瞎改,但是最起码能用,不会报500了。
版权属于:江筱雨
本文链接:https://www.yuisblog.com/archives/62/
本站未注明转载的文章均为原创,并采用
CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!