先說一下,生成rsa 私鑰 公鑰的方法,以ubuntu 為例
sudo apt-get install openssl # 先裝上這個庫
genrsa -out rsa_private_key.pem 1024 #生成1024長度的私鑰, 支付寶的 rsa2 要求是 2048長度,這里可以修改一下
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem #使用剛才生成的私鑰,生成一個配對的公鑰
使用 支付寶電腦支付,提供的sdk ,配置好 config.php 中的 appid ,支付同步、異步地址、配置支付寶私鑰等后,打開瀏覽器測試,報一個waring openssl_sign(): supplied key param cannot be coerced into a private key 檢查代碼發現
protected function sign($data, $signType = "RSA") { if($this->checkEmpty($this->rsaPrivateKeyFilePath)){ $priKey=$this->rsaPrivateKey; $res = "-----BEGIN RSA PRIVATE KEY-----\n" . wordwrap($priKey, 64, "\n", true) . "\n-----END RSA PRIVATE KEY-----"; }else { $priKey = file_get_contents($this->rsaPrivateKeyFilePath); $res = openssl_get_privatekey($priKey); }
這里幫你,做了添加頭部,結束和換行的處理,所以,你必須要配置的私鑰,里面不能有這些,就是只能長在一行里面寫好。