最近在做移动网页支付宝,下载了官方的demo,配置好后集成到项目中去,运行结果一直报错 ILLEGAL_SIGN,看提交的参数,发现sign一直为空,于是开始排查错误。
一步一步排查,发现以下createLinkstring()方法得到的结果中notify_url这个参数一直被改成ify_url,刚开始以为是其中“去掉转义”函数导致的,将其注释掉后仍是一样。其实
经过while()方法后就出现问题,于是自己改写while方法,用foreach(),结果还是一样。百思不得其解。晚上回来,改用将全部的参数和参数值自己拼写成字符串返回,但是打印
出来的结果还是不变。终于意识到可能是¬转义了,去百度,果真找到。坑死了。。。。。至于怎么避免转义,还不清楚,太晚了,明天再弄。
/** * 把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 * @param $para 需要拼接的数组 * return 拼接完成以后的字符串 */ 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; }
时间: 2024-09-28 15:34:31