<?php namespace Sdk\Event; use Think\Controller; class AliPayEvent extends Controller { /** *验签排序 */ public function argSort($para) { ksort($para); reset($para); return $para; } //RSA签名 public function sign($data) { //读取私钥文件 $priKey = file_get_contents(dirname(dirname(__FILE__))."/SecretKey/alipay/rsa_private_key.pem");//私钥文件路径 //转换为openssl密钥,必须是没有经过pkcs8转换的私钥 $res = openssl_get_privatekey($priKey); //$res = openssl_pkey_get_private($priKey); //调用openssl内置签名方法,生成签名$sign openssl_sign($data, $sign, $res); //释放资源 openssl_free_key($res); //base64编码 $sign = base64_encode($sign); return $sign; } //验签 public function rsa_verify($data, $sign) { // 读取公钥文件 $pubKey = file_get_contents(dirname(dirname(__FILE__))."/SecretKey/alipay/rsa_public_key.pem");//私钥文件路径 // 转换为openssl格式密钥 $res = openssl_get_publickey($pubKey); // 调用openssl内置方法验签,返回bool值 $result = ( bool ) openssl_verify ( $data, base64_decode ( $sign ), $res ); // 释放资源 openssl_free_key ( $res ); return $result; } }