Utils.php 1.6 KB
<?php

/**
 * 支付宝手机支付工具类
 * @author Smile
 *
 */
class YOHOPay_Package_Alimobile_Utils
{

    /**RSA签名
     * $data待签名数据
     * 签名用商户私钥,必须是没有经过pkcs8转换的私钥
     * 最后的签名,需要用base64编码
     * return Sign签名
     */
    function sign($data)
    {
        //转换为openssl密钥,必须是没有经过pkcs8转换的私钥
        $res = openssl_get_privatekey($this->priKey);
        //调用openssl内置签名方法,生成签名$sign
        openssl_sign($data, $sign, $res);
        //释放资源
        openssl_free_key($res);
        //base64编码
        $sign = base64_encode($sign);
        return $sign;
    }

    /**RSA验签
     * $data待签名数据
     * $sign需要验签的签名
     * 验签用支付宝公钥
     * return 验签是否通过 bool值
     */
    function verify($data, $sign)
    {
        $pubKeyPath = dirname(__FILE__) . '/key/alipay_public_key.pem';
        //转换为openssl格式密钥
        $pubKey = file_get_contents($pubKeyPath);
        $res = openssl_get_publickey($pubKey);
        if ($res == false) {
            while ($text = openssl_error_string())
                echo "$text \n";
        }
        //调用openssl内置方法验签,返回bool值
        $result = (bool)openssl_verify($data, base64_decode($sign), $res);
        //释放资源
        openssl_free_key($res);
        //返回资源是否成功
        return $result;
    }

    function xmlToArray($xmlString)
    {
        return json_decode(json_encode(simplexml_load_string($xmlString)), TRUE);
    }
}