支付宝支付

  1. 支付SDK下载

  2. 我的应用列表

  3. 手机支付文档

  4. 电脑支付文档

  5. 验签工具下载

  6. 支付宝APP支付流程 应用

  7. 支付宝M站支付流程 手机

  8. 支付宝PC站支付流程 电脑

  9. 支付宝支付RSA2生成sign、验证sign,PHP核心代码

    <?php
    /**
     * 对private_key进行处理
     * @param $private_key
     * @return string
     */
    function dealPrivateKey($private_key)
    {
        $private_key = chunk_split($private_key, 64, "\n");
        $private_key = "-----BEGIN RSA PRIVATE KEY-----\n$private_key-----END RSA PRIVATE KEY-----\n";
        return $private_key;
    }
    
    /**
     * 对public_key进行处理
     * @param $public_key
     * @return string
     */
    function dealPublicKey($public_key)
    {
        $public_key = chunk_split($public_key, 64, "\n");
        $public_key = "-----BEGIN PUBLIC KEY-----\n$public_key-----END PUBLIC KEY-----\n";
        return $public_key;
    }
    
    /**
     * 阿里创建签名
     * @param $data
     * @return string
     */
    function buildSign($data)
    {
        $private_key = file_get_contents(__DIR__ . '/private_key.txt');
        $private_key = dealPrivateKey($private_key);
        $private_key = openssl_pkey_get_private($private_key);
        openssl_sign($data, $sign, $private_key, OPENSSL_ALGO_SHA256);
        $sign = base64_encode($sign);
        return $sign;
    }
    
    /**
     * 阿里验证签名
     * @param $data
     * @param $sign
     * @return bool
     */
    function verifySign($data, $sign)
    {
        $sign = base64_decode($sign);
        $public_key = file_get_contents(__DIR__ . '/public_key.txt');
        $public_key = dealPublicKey($public_key);
        $public_key = openssl_pkey_get_public($public_key);
        $is_sign = openssl_verify($data, $sign, $public_key, OPENSSL_ALGO_SHA256) === 1;
        return $is_sign;
    }
    
    /**
     * 验证回调签名
     * @param $sign_str
     * @param $sign
     * @return bool
     */
    function verifyBack($sign_str, $sign)
    {
        $sign = base64_decode($sign);
        $public_key = file_get_contents(__DIR__ . '/alipay/public_app_key.txt');
        $public_key = dealPublicKey($public_key);
        $public_key = openssl_pkey_get_public($public_key);
        $is_sign = openssl_verify($sign_str, $sign, $public_key, OPENSSL_ALGO_SHA256) === 1;
        return $is_sign;
    }
    
    //把数据转化为json
    $data = json_encode([],JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
    //生成签名
    $sign = buildSign($data);
    //验证签名
    $is_sign = verifySign($data, $sign);
    //打印验证签名结果
    var_dump($is_sign);
    
@耿志环 2012-∞ 冀ICP备17033181号, powered by Gitbook修订: 2019-07-29 23:00:03

results matching ""

    No results matching ""