You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
7.7 KiB
7.7 KiB
支付宝面对面支付密钥配置说明
📋 需要的密钥参数
根据代码 AlipayF2F.class.php,支付宝面对面支付需要以下 3个核心参数:
| 代码中的变量名 | 数据库字段 | 说明 | 是否必需 |
|---|---|---|---|
merchantPrivateKey |
private_key |
应用私钥(商户私钥) | ✅ 必需 |
appId |
appid |
应用ID(APPID) | ✅ 必需 |
alipayPublicKey |
alipay_key |
支付宝公钥 | ✅ 必需 |
| - | public_key |
应用公钥 | ⚠️ 需要上传到支付宝,但代码中不使用 |
🔑 各密钥的作用
1. 应用ID (APPID)
- 作用:标识您的应用,支付宝用来识别是哪个应用发起的请求
- 获取位置:支付宝开放平台 → 开发者中心 → 应用详情页
- 格式:通常是数字字符串,如
2021001234567890
2. 应用私钥 (merchantPrivateKey / private_key)
- 作用:用于对请求参数进行签名,确保请求的真实性和完整性
- 生成方式:使用支付宝密钥生成工具生成
- 格式:RSA2 私钥,通常以
-----BEGIN RSA PRIVATE KEY-----开头 - ⚠️ 重要:绝对不能泄露,泄露后可能导致资金损失
3. 支付宝公钥 (alipayPublicKey / alipay_key)
- 作用:用于验证支付宝返回数据的签名,确保数据来源的真实性
- 获取位置:上传应用公钥后,在支付宝开放平台自动生成
- 格式:RSA2 公钥,通常以
-----BEGIN PUBLIC KEY-----开头
4. 应用公钥 (public_key)
- 作用:需要上传到支付宝开放平台,支付宝用此公钥验证您的签名
- 生成方式:与应用私钥成对生成
- ⚠️ 注意:代码中不使用此字段,但必须上传到支付宝平台
📍 获取步骤
第一步:注册并登录支付宝开放平台
- 访问:https://open.alipay.com/
- 使用支付宝账号登录
- 完成开发者认证(企业或个人)
第二步:申请开通当面付功能
- 登录后,进入 "产品中心"
- 搜索 "当面付" 产品
- 点击 "立即接入" 进行申请
- 填写相关信息并提交审核
- 等待审核通过(通常1-3个工作日)
第三步:创建应用并获取 APPID
- 进入 "开发者中心" → "我的应用"
- 点击 "创建应用"
- 选择应用类型:"网页&移动应用"
- 填写应用信息:
- 应用名称
- 应用图标
- 应用描述
- 应用类型等
- 提交审核
- 审核通过后,在应用详情页可以看到 APPID
第四步:生成密钥对
4.1 下载密钥生成工具
- 工具下载地址:https://opendocs.alipay.com/common/02khjo
- 或者访问:支付宝开放平台 → 文档中心 → 开发工具 → 密钥生成工具
4.2 生成密钥对
- 运行密钥生成工具
- 选择密钥类型:RSA2(推荐)
- 点击 "生成密钥"
- 工具会生成:
- 应用私钥(
private_key)- 保存好,不要泄露 - 应用公钥(
public_key)- 需要上传到支付宝
- 应用私钥(
4.3 保存密钥
- 应用私钥:复制保存到数据库的
private_key字段 - 应用公钥:复制保存到数据库的
public_key字段(用于上传)
第五步:上传应用公钥并获取支付宝公钥
- 进入应用详情页 → "开发设置" 或 "接口加签方式"
- 找到 "应用公钥" 配置项
- 将生成的 应用公钥 粘贴进去
- 点击 "保存"
- 保存后,支付宝会自动生成 支付宝公钥
- 复制 支付宝公钥,保存到数据库的
alipay_key字段
📚 官方文档链接
主要文档
-
支付宝开放平台首页
-
当面付产品文档
-
密钥生成工具下载
-
密钥配置指南
-
EasySDK 使用文档(您的代码使用的是 EasySDK)
-
API 文档 - 统一收单交易支付接口
开发指南
- 扫码支付接入指引:https://developer.alibaba.com/docs/doc.htm?articleId=106078&docType=1&treeId=292
- 密钥管理:https://opendocs.alipay.com/common/02kkv7
💾 数据库配置
在系统中配置时,需要填写以下字段:
// 数据库表:alipay_account
[
'name' => '支付宝账号名称', // 便于识别的名称
'appid' => '2021001234567890', // 应用ID
'private_key' => '-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA...
-----END RSA PRIVATE KEY-----', // 应用私钥(完整内容)
'public_key' => '-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A...
-----END PUBLIC KEY-----', // 应用公钥(完整内容,需上传到支付宝)
'alipay_key' => '-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A...
-----END PUBLIC KEY-----', // 支付宝公钥(完整内容)
]
⚠️ 重要注意事项
安全相关
-
应用私钥绝对不能泄露
- 不要提交到代码仓库
- 不要通过邮件、聊天工具发送
- 建议存储在数据库中,并做好数据库安全防护
-
密钥格式要完整
- 必须包含
-----BEGIN...-----和-----END...-----标记 - 必须包含所有换行符
- 不要删除任何空格或换行
- 必须包含
-
密钥长度
- RSA2 密钥通常较长(2048位)
- 确保数据库字段长度足够(代码中设置为 2048 字符)
配置相关
-
签名方式
- 代码中使用的是 RSA2 签名方式
- 确保支付宝平台也配置为 RSA2
-
环境区分
- 沙箱环境(测试):使用沙箱的 APPID 和密钥
- 正式环境(生产):使用正式环境的 APPID 和密钥
-
应用公钥上传
- 必须上传应用公钥到支付宝平台
- 上传后支付宝才会生成对应的支付宝公钥
- 如果更换了密钥对,需要重新上传
🔍 代码中的使用位置
// app/Libs/AlipayF2F.class.php
public function getOptions(AlipayAccount $alipayAccount)
{
$options = new Config();
$options->protocol = 'https';
$options->gatewayHost = 'openapi.alipay.com';
$options->signType = 'RSA2'; // 使用 RSA2 签名
// 从数据库读取配置
$options->merchantPrivateKey = $alipayAccount->private_key; // 应用私钥
$options->appId = $alipayAccount->appid; // 应用ID
$options->alipayPublicKey = $alipayAccount->alipay_key; // 支付宝公钥
return $options;
}
🛠️ 常见问题
Q1: 密钥生成工具在哪里下载?
A: https://opendocs.alipay.com/common/02khjo
Q2: 应用公钥和支付宝公钥有什么区别?
A:
- 应用公钥:您自己生成的,需要上传到支付宝
- 支付宝公钥:支付宝根据您的应用公钥生成的,用于验证支付宝返回的数据
Q3: 私钥泄露了怎么办?
A: 立即重新生成密钥对,并更新支付宝平台配置,同时更换数据库中的私钥
Q4: 测试环境和正式环境的密钥可以共用吗?
A: 不可以,测试环境(沙箱)和正式环境需要使用不同的 APPID 和密钥
Q5: 密钥格式要求是什么?
A: 必须包含完整的 PEM 格式,包括 BEGIN 和 END 标记,以及所有换行符
📞 技术支持
- 支付宝开放平台客服:https://open.alipay.com/
- 开发者社区:https://openclub.alipay.com/
- 工单系统:在开放平台提交工单