public function getSignVeryfy($para_temp, $sign) { $para_filter = paraFilter($para_temp); $para_sort = argSort($para_filter); $prestr = createLinkstring($para_sort); $isSgin = false; switch (strtoupper(trim($this->alipay_config["sign_type"]))) { case "MD5": $isSgin = md5Verify($prestr, $sign, $this->alipay_config["key"]); break; default: $isSgin = false; } return $isSgin; }
/** * 获取返回时的签名验证结果 * @param $para_temp 通知返回来的参数数组 * @param $sign 返回的签名结果 * @return 签名验证结果 */ function getSignVeryfy($para_temp, $sign) { //除去待签名参数数组中的空值和签名参数 $para_filter = paraFilter($para_temp); //对待签名参数数组排序 $para_sort = argSort($para_filter); //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para_sort); $isSgin = false; switch (strtoupper(trim($this->alipay_config['sign_type']))) { case "MD5": $isSgin = md5Verify($prestr, $sign, $this->alipay_config['key']); break; default: $isSgin = false; } return $isSgin; }
/** * 获取返回时的签名验证结果 * @param $para_temp 通知返回来的参数数组 * @param $sign 返回的签名结果 * @param $isSort 是否对待签名数组排序 * @return 签名验证结果 */ function getSignVeryfy($para_temp, $sign, $isSort) { //除去待签名参数数组中的空值和签名参数 $para = paraFilter($para_temp); //对待签名参数数组排序 if ($isSort) { $para = argSort($para); } else { $para = $this->sortNotifyPara($para); } //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para); $isSgin = false; switch (strtoupper(trim($this->alipay_config['sign_type']))) { case "MD5": $isSgin = md5Verify($prestr, $sign, $this->alipay_config['key']); break; case "RSA": $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign); break; case "0001": $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign); break; default: $isSgin = false; } return $isSgin; }
/** * 获取返回时的签名验证结果 * @param $para_temp 通知返回来的参数数组 * @param $sign 返回的签名结果 * @param $isSort 是否对待签名数组排序 * @return 签名验证结果 */ function getSignVeryfy($para_temp, $sign, $isSort) { //除去待签名参数数组中的空值和签名参数 //file_put_contents("./alipaylog/getSignVeryfy_para_temp_".strftime("%Y%m%d%H%M%S",time()).".txt",print_r($para_temp,true)); $para = paraFilter($para_temp); //file_put_contents("./alipaylog/getSignVeryfy_para1_".strftime("%Y%m%d%H%M%S",time()).".txt",print_r($para,true)); //对待签名参数数组排序 if ($isSort) { $para = argSort($para); } else { $para = $this->sortNotifyPara($para); } //file_put_contents("./alipaylog/getSignVeryfy_para2_".strftime("%Y%m%d%H%M%S",time()).".txt",print_r($para,true)); //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para); //file_put_contents("./alipaylog/getSignVeryfy_prestr_".strftime("%Y%m%d%H%M%S",time()).".txt",print_r($prestr,true)); //echo $prestr; $isSgin = false; switch (strtoupper(trim($this->alipay_config['sign_type']))) { case "MD5": $isSgin = md5Verify($prestr, $sign, $this->alipay_config['key']); break; case "RSA": $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign); break; case "0001": $isSgin = rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign); break; default: $isSgin = false; } return $isSgin; }
function getSignVeryfy($para_temp, $sign, $md5) { //除去待签名参数数组中的空值和签名参数 $para_filter = paraFilter($para_temp); //对待签名参数数组排序 $para_sort = argSort($para_filter); //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para_sort); $isSgin = false; $isSgin = md5Verify($prestr, $sign, $md5); return $isSgin; }
<?php /* * * 功能:服务器同通知页面 */ require_once "yun.config.php"; require_once "lib/yun_md5.function.php"; ?> <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <?php //计算得出通知验证结果 $yunNotify = md5Verify($_REQUEST['i1'], $_REQUEST['i2'], $_REQUEST['i3'], $yun_config['key'], $yun_config['partner']); if ($yunNotify) { //验证成功 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //商户订单号 $out_trade_no = $_REQUEST['i2']; //云支付交易号 $trade_no = $_REQUEST['i4']; //价格 $yunprice = $_REQUEST['i1']; /* 加入您的入库及判断代码; 判断返回金额与实金额是否想同; 判断订单当前状态; 完成以上才视为支付成功 */ /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function getSignVeryfy($para_temp, $sign) { $para_filter = paraFilter($para_temp); $para_sort = argSort($para_filter); $prestr = createLinkstring($para_sort); true === DEBUG_LIANLIANPAY && file_put_contents(ROOT_PATH . "errorlog/pay.lianlianpay.".date("Ym").".log", "原串:" . $prestr . "\n", FILE_APPEND); true === DEBUG_LIANLIANPAY && file_put_contents(ROOT_PATH . "errorlog/pay.lianlianpay.".date("Ym").".log", "sign:" . $sign . "\n", FILE_APPEND); $isSgin = false; switch (strtoupper(trim($this->llpay_config['sign_type']))) { case "MD5" : $isSgin = md5Verify($prestr, $sign, $this->llpay_config['key']); break; default : $isSgin = false; } return $isSgin; }
/** * 获取返回时的签名验证结果 * @param $para_temp 通知返回来的参数数组 * @param $sign 返回的签名结果 * @return 签名验证结果 */ public function getSignVeryfy($para_temp, $sign) { //除去待签名参数数组中的空值和签名参数 if (strtoupper(trim($this->alipay_config['sign_type'])) == 'RSA') { $para_filter = paraFilter($para_temp, 3); //参数需要urldecode } else { $para_filter = paraFilter($para_temp); } //对待签名参数数组排序 $para_sort = argSort($para_filter); //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = createLinkstring($para_sort); $isSgin = false; switch (strtoupper(trim($this->alipay_config['sign_type']))) { case 'MD5': $isSgin = md5Verify($prestr, $sign, $this->alipay_config['key']); break; case 'RSA': $isSgin = rsaVerify($prestr, $this->alipay_config['alipay_public_key'], $sign); break; default: $isSgin = false; } return $isSgin; }