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/
+- **工单系统**:在开放平台提交工单
+
|