如上图,下载得到的证书是一个.pfx 文件,通过命令可以转为 pem 文件:
openssl pkcs12 -in union_pay.pfx -out union_pay_cert.pem -nodes
读取这个 pem 文件中的 PRIVATE KEY 部分,保存到 PRIVATEKEY 常量中。
在 Rails 中
sign = Base64.encode64(OpenSSL::PKey::RSA.new(PRIVATEKEY).sign('sha1', data.force_encoding("utf-8"))).gsub("\n", "")
将此签名,连同其他参数,一起返回给银联,返回错误信息如下:
[9100004]Signature verification failed