PAYATHON 2026

网站后台配置支付时,商户私钥和支付宝公钥在哪里获取?

支付小周

明确结论

  • 商户私钥不是从支付宝下载的。它是商户自行生成的密钥对中的私钥,由商户保存,用于请求签名,不能上传或泄露。
  • 支付宝公钥由支付宝提供。需要先在支付宝开放平台为应用配置”接口加签方式”,上传商户的应用公钥。配置完成后,才能查看并复制支付宝公钥。

这几个概念容易混淆:

  • 商户私钥:也叫”应用私钥”。
  • 应用公钥:与商户私钥配对,需要上传到支付宝开放平台。
  • 支付宝公钥:用于验证支付宝返回数据的签名。
  • 支付宝公钥和应用公钥不是同一个公钥,不能混用。

获取商户私钥

建议使用支付宝开放平台提供的密钥工具生成 RSA2 密钥。生成后通常会得到:

应用私钥
应用公钥

配置时需要注意:

  • 将”应用私钥”填写到网站后台的”商户私钥”字段。
  • 将”应用公钥”上传到支付宝开放平台。
  • 不要将应用公钥填入商户私钥字段。

也可以使用 OpenSSL 自行生成:

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out app_private_key.pem
openssl pkey -in app_private_key.pem -pubout -out app_public_key.pem

生成的 app_private_key.pem 是商户私钥,app_public_key.pem 是需要上传到支付宝开放平台的应用公钥。网站后台是否接受包含 PEM 头尾的内容,应以该字段的说明为准。

获取支付宝公钥

登录支付宝开放平台并进入对应应用,然后在开发设置或接口加签方式页面完成配置。应用类型和控制台版本不同,菜单名称可能略有差异,操作流程通常如下:

  1. 进入需要接入支付的应用。
  2. 找到”开发设置”、“接口加签方式”或类似入口。
  3. 选择 RSA2 加签方式。
  4. 上传或填写之前生成的应用公钥。
  5. 保存配置。
  6. 配置成功后,在同一页面查看并复制”支付宝公钥”。
  7. 将其填写到网站后台的”支付宝公钥”字段。

如果采用支付宝公钥证书模式,网站后台要求的可能不是一段支付宝公钥文本,而是以下证书文件:

应用公钥证书
支付宝公钥证书
支付宝根证书

配置前应先确认网站后台使用的是”普通公钥模式”还是”公钥证书模式”。两种模式使用的配置文件不同,不能混用。

配置示例

在普通公钥模式下,配置通常类似:

alipay.app_id=你的支付宝应用APPID
alipay.private_key=你的应用私钥
alipay.alipay_public_key=支付宝公钥
alipay.sign_type=RSA2
alipay.charset=UTF-8

使用支付宝 SDK 时,Java 初始化代码通常如下:

AlipayClient alipayClient = new DefaultAlipayClient(
    "https://openapi.alipay.com/gateway.do",
    appId,
    merchantPrivateKey,
    "json",
    "UTF-8",
    alipayPublicKey,
    "RSA2"
);

这里:

  • merchantPrivateKey 对应商户私钥,也就是应用私钥。
  • alipayPublicKey 对应支付宝开放平台显示的支付宝公钥。
  • 沙箱应用和正式应用使用各自独立的密钥配置,不能混用。

常见问题

页面中看不到支付宝公钥

一般是因为应用还没有完成接口加签配置。先生成密钥对并上传应用公钥,保存成功后再查看支付宝公钥。

提示验签失败

可以依次检查:

  • 是否误将应用公钥当成了支付宝公钥。
  • 商户私钥与上传的应用公钥是否来自同一密钥对。
  • 网站后台要求的是普通公钥还是证书文件。
  • 是否混用了沙箱环境和正式环境的密钥。
  • sign_type 是否统一设置为 RSA2。
  • 复制密钥时是否遗漏字符,或者带入了多余空格和错误换行。

私钥应该保存在哪里

私钥应保存在服务端的安全配置、密钥管理系统或受访问控制的环境变量中。不要将其提交到 Git 仓库,也不要放入前端 JavaScript、公开配置文件、截图或日志。

如果怀疑私钥已经泄露,应立即重新生成密钥对,并在支付宝开放平台更新应用公钥。

备注:内容仅供参考。