pay_priKey; ksort($post_arr); $signature_str = ''; foreach ($post_arr as $key => $value) { $signature_str .= $value; } // 【NOTE】跑通demo后替换成商户自己的private_key $pem = chunk_split($private_key, 64, "\n"); $pem = "-----BEGIN PRIVATE KEY-----\n" . $pem . "-----END PRIVATE KEY-----\n"; $private_key_id = openssl_pkey_get_private($pem); $signature = false; $r = openssl_sign($signature_str, $signature, $private_key_id); if ($r) { $sign = base64_encode($signature); return $sign; } die('gen signature failed!'); } /** * 验证支付通知中的签名 * @param array $post_arr * @return type */ function notify_rsa_verify($post_arr) { $signature = base64_decode(urldecode($post_arr['sign'])); unset($post_arr['ext_info']); unset($post_arr['sign']); ksort($post_arr); $arr = array(); foreach ($post_arr as $key => $val) { array_push($arr, $key . '=' . $val); } $signature_str = join('&', $arr); $pem = chunk_split($this->pay_pubKey, 64, "\n"); $pem = "-----BEGIN PUBLIC KEY-----\n" . $pem . "-----END PUBLIC KEY-----\n"; $public_key_id = openssl_pkey_get_public($pem); return openssl_verify($signature_str, $signature, $public_key_id, 'RSA-SHA1'); } }