doc/rsa_key_cn.md in alipay-0.15.2 vs doc/rsa_key_cn.md in alipay-0.16.0

- old
+ new

@@ -4,10 +4,11 @@ ## 导航 * [生成应用密钥](#生成应用密钥) * [验证参数](#验证参数) * [补充格式到支付宝公钥](#补充格式到支付宝公钥) +* [使用证书签名方式](#使用证书签名方式) ### 生成应用密钥 #### 在 Ruby 下生成 RSA2 密钥 这个会示范在 Ruby 环境下生成RSA2密钥。支付宝推荐使用RSA2密钥来验证。 ```ruby @@ -60,5 +61,45 @@ pub_key = "MIIBI...HpwIDAQAB" pub_key.scan(/.{64}|.+$/).join("\n").insert(0, "-----BEGIN PUBLIC KEY-----\n").insert(-1, "\n-----END PUBLIC KEY-----\n") # => "-----BEGIN PUBLIC KEY-----\nMIIBI...\n-----END PUBLIC KEY-----\n" ``` +# 使用证书签名方式 + +## 应用证书配置 +按照官方文档进行新建应用配置证书签名 https://docs.open.alipay.com/291/twngcd/ + +配置完成后,可以得到 `xxx.com_私钥.txt alipayCertPublicKey_RSA2.crt appCertPublicKey_2019082600000001.crt alipayRootCert.crt` 四个文件。 + +### 应用私钥补充格式 +```ruby +app_private_key = File.read('xxx.com_私钥.txt') +app_private_key = app_private_key.scan(/.{64}|.+$/).join("\n").insert(0, "-----BEGIN RSA PRIVATE KEY-----\n").insert(-1, "\n-----END RSA PRIVATE KEY-----\n") +``` +### 处理应用阿里云公钥 +```ruby +alipay_public_key = File.read('alipayCertPublicKey_RSA2.crt') +alipay_public_key = OpenSSL::X509::Certificate.new(alipay_public_key).public_key.to_s +``` +### 得到应用公钥证书sn +```ruby +app_cert = File.read('appCertPublicKey_2019082600000001.crt') +app_cert_sn = Alipay::Utils.get_cert_sn(app_cert) +# => "28d1147972121b91734da59aa10f3c16" +``` +### 得到支付宝根证书sn +```ruby +alipay_root_cert = File.read('alipayRootCert.crt') +alipay_root_cert_sn = Alipay::Utils.get_root_cert_sn(alipay_root_cert) +# => "28d1147972121b91734da59aa10f3c16_28d1147972121b91734da59aa10f3c16" +``` +### 使用 +```ruby +@alipay_client = Alipay::Client.new( + url: API_URL, + app_id: APP_ID, + app_private_key: app_private_key, + alipay_public_key: alipay_public_key, + app_cert_sn: app_cert_sn, + alipay_root_cert_sn: alipay_root_cert_sn +) +``` \ No newline at end of file