diff --git a/app/Http/Controllers/Admin/ProjectController.php b/app/Http/Controllers/Admin/ProjectController.php index 58c93c4..43d149d 100755 --- a/app/Http/Controllers/Admin/ProjectController.php +++ b/app/Http/Controllers/Admin/ProjectController.php @@ -49,7 +49,7 @@ class ProjectController extends CommonController public function index(Request $request) { - $data = $this->model->with(["paramedicLevels","wechatpayAccount"])->paginate(10); + $data = $this->model->with(["paramedicLevels","wechatpayAccount","alipayAccount"])->paginate(10); return view($this->bladePath . ".index", compact("data")); } diff --git a/resources/views/admin/project/index.blade.php b/resources/views/admin/project/index.blade.php index 371cc77..e77052a 100755 --- a/resources/views/admin/project/index.blade.php +++ b/resources/views/admin/project/index.blade.php @@ -20,6 +20,7 @@ 地址 项目结算比例 微信支付账号 + 支付宝账号 操作 @@ -32,6 +33,7 @@ {{ $row->address }} {{ $row->percent_first_party }} {{ $row->wechatpayAccount ? $row->wechatpayAccount->mchid : ""}}
{{ $row->wechatpayAccount ? $row->wechatpayAccount->name : ""}} + {{ $row->alipayAccount ? $row->alipayAccount->appid : ""}}
{{ $row->alipayAccount ? $row->alipayAccount->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-----', // 支付宝公钥(完整内容) +] +``` + +## ⚠️ 重要注意事项 + +### 安全相关 + +1. **应用私钥绝对不能泄露** + - 不要提交到代码仓库 + - 不要通过邮件、聊天工具发送 + - 建议存储在数据库中,并做好数据库安全防护 + +2. **密钥格式要完整** + - 必须包含 `-----BEGIN...-----` 和 `-----END...-----` 标记 + - 必须包含所有换行符 + - 不要删除任何空格或换行 + +3. **密钥长度** + - RSA2 密钥通常较长(2048位) + - 确保数据库字段长度足够(代码中设置为 2048 字符) + +### 配置相关 + +1. **签名方式** + - 代码中使用的是 **RSA2** 签名方式 + - 确保支付宝平台也配置为 RSA2 + +2. **环境区分** + - 沙箱环境(测试):使用沙箱的 APPID 和密钥 + - 正式环境(生产):使用正式环境的 APPID 和密钥 + +3. **应用公钥上传** + - 必须上传应用公钥到支付宝平台 + - 上传后支付宝才会生成对应的支付宝公钥 + - 如果更换了密钥对,需要重新上传 + +## 🔍 代码中的使用位置 + +```php +// 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/ +- **工单系统**:在开放平台提交工单 +