/** * 生成签名结果 * @param $para_sort 已排序要签名的数组 * return 签名结果字符串 */ function buildRequestMysign($para_sort) { //把数组所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串 $prestr = \Library\pay\direct_pay\lib\AlipayCore::createLinkstring($para_sort); $mysign = ""; switch (strtoupper(trim($this->alipay_config['sign_type']))) { case "MD5": $mysign = \Library\pay\direct_pay\lib\AlipayMd5::md5Sign($prestr, $this->alipay_config['key']); break; case "RSA": $mysign = AlipayRsa::rsaSign($prestr, $this->alipay_config['private_key_path']); break; case "0001": $mysign = AlipayRsa::rsaSign($prestr, $this->alipay_config['private_key_path']); break; default: $mysign = ""; } return $mysign; }
/** * 获取返回时的签名验证结果 * @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 = \Library\pay\direct_pay\lib\AlipayCore::createLinkstring($para); $isSgin = false; switch (strtoupper(trim($this->alipay_config['sign_type']))) { case "MD5": $isSgin = \Library\pay\direct_pay\lib\AlipayMd5::md5Verify($prestr, $sign, $this->alipay_config['key']); break; case "RSA": $isSgin = AlipayRsa::rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign); break; case "0001": $isSgin = AlipayRsa::rsaVerify($prestr, trim($this->alipay_config['ali_public_key_path']), $sign); break; default: $isSgin = false; } return $isSgin; }