### 简要描述: 来了个新厂商。 挖一下把。 开放+封闭源代码 封闭源代码,普通用户使用加密后的代码,付费用户使用开放的源代码,使商城更安全 对于我这种屌丝只能用免费版 就是zend后的代码。 不过还是有几个文件没zend。 就只看这几个文件了。 ### 详细说明: 第五处 kuaiqian/receive_mall.php中 ``` $dealTime=trim($_REQUEST['dealTime']); //获取实际支付金额 ///单位为分 ///比方 2 ,代表0.02元 $payAmount=trim($_REQUEST['payAmount']); //获取交易手续费 ///单位为分 ///比方 2 ,代表0.02元 $fee=trim($_REQUEST['fee']); //获取扩展字段1 $ext1=trim($_REQUEST['ext1']); //获取扩展字段2 $ext2=trim($_REQUEST['ext2']); //获取处理结果 ///10代表 成功; 11代表 失败 ///00代表 下订单成功(仅对电话银行支付订单返回);01代表 下订单失败(仅对电话银行支付订单返回) $payResult=trim($_REQUEST['payResult']); //获取错误代码 ///详细见文档错误代码列表 $errCode=trim($_REQUEST['errCode']); //获取加密签名串 $signMsg=trim($_REQUEST['signMsg']); //生成加密串。必须保持如下顺序。 $merchantSignMsgVal=appendParam($merchantSignMsgVal,"merchantAcctId",$merchantAcctId); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"version",$version); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"language",$language); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"signType",$signType);...
### 简要描述: 来了个新厂商。 挖一下把。 开放+封闭源代码 封闭源代码,普通用户使用加密后的代码,付费用户使用开放的源代码,使商城更安全 对于我这种屌丝只能用免费版 就是zend后的代码。 不过还是有几个文件没zend。 就只看这几个文件了。 ### 详细说明: 第五处 kuaiqian/receive_mall.php中 ``` $dealTime=trim($_REQUEST['dealTime']); //获取实际支付金额 ///单位为分 ///比方 2 ,代表0.02元 $payAmount=trim($_REQUEST['payAmount']); //获取交易手续费 ///单位为分 ///比方 2 ,代表0.02元 $fee=trim($_REQUEST['fee']); //获取扩展字段1 $ext1=trim($_REQUEST['ext1']); //获取扩展字段2 $ext2=trim($_REQUEST['ext2']); //获取处理结果 ///10代表 成功; 11代表 失败 ///00代表 下订单成功(仅对电话银行支付订单返回);01代表 下订单失败(仅对电话银行支付订单返回) $payResult=trim($_REQUEST['payResult']); //获取错误代码 ///详细见文档错误代码列表 $errCode=trim($_REQUEST['errCode']); //获取加密签名串 $signMsg=trim($_REQUEST['signMsg']); //生成加密串。必须保持如下顺序。 $merchantSignMsgVal=appendParam($merchantSignMsgVal,"merchantAcctId",$merchantAcctId); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"version",$version); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"language",$language); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"signType",$signType); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"payType",$payType); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"bankId",$bankId); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"orderId",$orderId); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"orderTime",$orderTime); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"orderAmount",$orderAmount); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"dealId",$dealId); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"bankDealId",$bankDealId); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"dealTime",$dealTime); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"payAmount",$payAmount); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"fee",$fee); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"ext1",$ext1); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"ext2",$ext2); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"payResult",$payResult); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"errCode",$errCode); $merchantSignMsgVal=appendParam($merchantSignMsgVal,"key",$key); $merchantSignMsg= md5($merchantSignMsgVal); //echo $merchantSignMsg; //初始化结果及地址 $rtnOk=0; $rtnUrl=""; define("_UL_", $_SERVER['SERVER_NAME']); //商家进行数据处理,并跳转会商家显示支付结果的页面 ///首先进行签名字符串验证 if(strtoupper($signMsg)==strtoupper($merchantSignMsg)){ switch($payResult){ case "10": /* ' 商户网站逻辑处理,比方更新订单支付状态为成功 ' 特别注意:只有strtoupper($signMsg)==strtoupper($merchantSignMsg),且payResult=10,才表示支付成功! */ mysql_connect($arr["DB_HOST"].":".$arr["DB_PORT"],$arr["DB_USER"],$arr["DB_PWD"]); mysql_select_db($arr["DB_NAME"]); $sql="update ".$arr["DB_PREFIX"]."m_pay set paystate=1,trade_no='".$dealId."',payallmoney=payallmoney+paymoney,gettime='".date('Y-m-d H:i:s')."' where ordernum='".$orderId."'"; mysql_query($sql); $sql3="select * from ".$arr["DB_PREFIX"]."m_pay where ordernum='".$orderId."'"; $result=mysql_query($sql3); $rs=mysql_fetch_array($result); $sql2="update ".$arr["DB_PREFIX"]."m_member set money=money+".$rs["paymoney"]." where username='".$rs["username"]."'"; mysql_query($sql2); ``` 这个又是只验证了一下md5。。 [<img src="https://images.seebug.org/upload/201406/1511471267caf43aedfdd8a1f02de0609f6663a6.jpg" alt="c3.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201406/1511471267caf43aedfdd8a1f02de0609f6663a6.jpg) ————————————————————————————————————————— 第六处 kuaiqian/receive_store.php中 跟第五处一样的。 不多说了。 __ 第七处 在tenpay/return_url.php中 ``` $resHandler = new PayResponseHandler(); $resHandler->setKey($key); //判断签名 if($resHandler->isTenpaySign()) { //交易单号 $transaction_id = $resHandler->getParameter("transaction_id"); //金额,以分为单位 $total_fee = $resHandler->getParameter("total_fee"); //支付结果 $pay_result = $resHandler->getParameter("pay_result"); //商户交易号 $sp_billno=$resHandler->getParameter("sp_billno"); if( "0" == $pay_result ) { //------------------------------ //处理业务开始 //------------------------------ @mysql_connect($arr["DB_HOST"].":".$arr["DB_PORT"],$arr["DB_USER"],$arr["DB_PWD"]); @mysql_select_db($arr["DB_NAME"]); $sql="select * from ".$arr["DB_PREFIX"]."m_pay where ordernum=".$sp_billno; $result=mysql_query($sql); //-------- $rss=mysql_fetch_array($result); if($rss["paystate"]==0) { $sql1="update ".$arr["DB_PREFIX"]."m_pay set trade_no='".$transaction_id."',payallmoney=paymoney+payallmoney,gettime='".date('Y-m-d H:i:s')."',paystate=1 where ordernum='".$sp_billno."'"; mysql_query($sql1); //----- ``` 用了个函数来验证 这个函数跟之前 验证alipay的那个基本一样。 第八处 tenpay/return_stor_url.php [<img src="https://images.seebug.org/upload/201406/15115507e59102f5c0b742140f85408961a82ddc.jpg" alt="c4.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201406/15115507e59102f5c0b742140f85408961a82ddc.jpg) ### 漏洞证明: 见上面。