2025-10-17 16:32:16 +08:00
|
|
|
<?php
|
|
|
|
|
/**
|
|
|
|
|
* 建行生活对接配置文件
|
|
|
|
|
*
|
|
|
|
|
* 重要说明:
|
|
|
|
|
* - 建行只提供生产环境,没有测试环境
|
|
|
|
|
* - 配置优先从.env读取,如果没有则使用默认值
|
|
|
|
|
* - 请在.env文件中配置敏感信息(密钥等)
|
|
|
|
|
*
|
|
|
|
|
* @author Billy
|
|
|
|
|
* @date 2025-01-16
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
use think\Env;
|
|
|
|
|
|
2025-10-20 10:37:59 +08:00
|
|
|
// 读取 .env 文件以获取密钥配置
|
|
|
|
|
$envFile = __DIR__ . '/../../../.env';
|
|
|
|
|
$envVars = [];
|
|
|
|
|
if (file_exists($envFile)) {
|
|
|
|
|
$envVars = parse_ini_file($envFile);
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-17 16:32:16 +08:00
|
|
|
return [
|
|
|
|
|
// API基础地址 (生产环境)
|
2025-10-18 15:47:25 +08:00
|
|
|
'api_base_url' => 'https://yunbusiness.ccb.com/tp_service/txCtrl/server',
|
2025-10-17 16:32:16 +08:00
|
|
|
|
|
|
|
|
// 收银台地址 (生产环境)
|
2025-10-17 17:18:15 +08:00
|
|
|
'cashier_url' => 'https://yunbusiness.ccb.com/clp_service/txCtrl',
|
2025-10-17 16:32:16 +08:00
|
|
|
|
|
|
|
|
// 交易代码映射
|
|
|
|
|
'tx_codes' => [
|
2025-10-18 15:47:25 +08:00
|
|
|
'order_push' => 'A3341TP01', // 订单推送
|
|
|
|
|
'order_update' => 'A3341TP02', // 订单状态更新
|
|
|
|
|
'order_query' => 'A3341TP03', // 订单查询
|
|
|
|
|
'order_refund' => 'A3341TP04', // 订单退款
|
2025-10-17 16:32:16 +08:00
|
|
|
],
|
|
|
|
|
|
2025-10-17 17:18:15 +08:00
|
|
|
// 服务方信息(生产环境)
|
|
|
|
|
'service_id' => Env::get('ccb.service_id', 'YS44000009001853'),
|
2025-10-17 16:32:16 +08:00
|
|
|
|
2025-10-17 17:18:15 +08:00
|
|
|
// 商户信息(从.env读取)
|
2025-10-17 16:32:16 +08:00
|
|
|
'merchant_id' => Env::get('ccb.merchant_id', '105003953998037'),
|
|
|
|
|
'pos_id' => Env::get('ccb.pos_id', '068295530'),
|
|
|
|
|
'branch_id' => Env::get('ccb.branch_id', '340650000'),
|
|
|
|
|
|
2025-10-20 15:29:15 +08:00
|
|
|
// ========== 密钥配置 (从.env读取) ==========
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 服务方私钥 (自己生成的RSA私钥)
|
|
|
|
|
* 用途:
|
|
|
|
|
* - 解密建行返回的加密数据(ccbParamSJ等)
|
|
|
|
|
* - 注意: 不直接参与签名,仅用于解密
|
|
|
|
|
* 格式: BASE64格式(不含PEM头尾) 或 PEM格式(含头尾)
|
|
|
|
|
*/
|
2025-10-20 10:37:59 +08:00
|
|
|
'private_key' => $envVars['private_key'] ?? '',
|
2025-10-20 15:29:15 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 服务方公钥 (自己生成的RSA公钥,对应上面的私钥)
|
|
|
|
|
* 用途:
|
|
|
|
|
* - 参与支付下单的MD5签名计算(PLATFORMPUB字段)
|
|
|
|
|
* - 加密商户公钥(ENCPUB字段)
|
|
|
|
|
* 格式: BASE64格式(不含PEM头尾) 或 PEM格式(含头尾)
|
|
|
|
|
*/
|
2025-10-20 10:37:59 +08:00
|
|
|
'public_key' => $envVars['public_key'] ?? '',
|
2025-10-20 15:29:15 +08:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 建行生活支付验签公钥 (建行生活平台分配的)
|
|
|
|
|
* 用途:
|
|
|
|
|
* - 验证异步通知中的SIGN字段(NT_TYPE=YS时)
|
|
|
|
|
* - ⚠️ 重要: 这不是你自己的公钥!需要联系建行生活技术支持获取
|
|
|
|
|
* 获取方式: 联系建行生活平台运营人员或技术支持
|
|
|
|
|
* 格式: PEM格式RSA公钥(2048位)
|
|
|
|
|
*
|
|
|
|
|
* 📌 如果未配置此字段:
|
|
|
|
|
* - 异步通知验签会降级为POSID验证
|
|
|
|
|
* - 安全性降低,建议尽快获取并配置
|
|
|
|
|
*/
|
|
|
|
|
'ccb_payment_verify_public_key' => $envVars['ccb_payment_verify_public_key'] ?? '',
|
|
|
|
|
|
2025-10-17 16:32:16 +08:00
|
|
|
// HTTP请求配置
|
|
|
|
|
'http' => [
|
|
|
|
|
'timeout' => 30, // 超时时间(秒)
|
|
|
|
|
'retry_times' => 3, // 重试次数
|
|
|
|
|
'retry_delay' => [1, 2, 5], // 重试间隔(秒)
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
// 支付配置
|
|
|
|
|
'payment' => [
|
|
|
|
|
'currency_code' => '01', // 币种: 01-人民币
|
|
|
|
|
'tx_code' => '520100', // 支付交易码
|
|
|
|
|
'third_app_info' => 'comccbpay1234567890cloudmerchant',
|
|
|
|
|
'timeout_minutes' => 30, // 支付超时时间(分钟)
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
// 日志配置
|
|
|
|
|
'log' => [
|
|
|
|
|
'enabled' => true,
|
|
|
|
|
'level' => Env::get('ccb.log_level', 'info'), // debug, info, warning, error
|
2025-10-18 15:47:25 +08:00
|
|
|
'path' => __DIR__ . '/../../../runtime/log/ccblife/',
|
2025-10-17 16:32:16 +08:00
|
|
|
],
|
|
|
|
|
|
|
|
|
|
// 安全配置
|
|
|
|
|
'security' => [
|
|
|
|
|
'encrypt_enabled' => true, // 是否启用加密
|
|
|
|
|
'sign_enabled' => true, // 是否启用签名
|
|
|
|
|
'verify_sign' => true, // 是否验证响应签名
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
// 商户信息
|
|
|
|
|
'merchant' => [
|
|
|
|
|
'name' => Env::get('ccb.merchant_name', '商户名称'),
|
|
|
|
|
'logo_url' => Env::get('ccb.merchant_logo', ''),
|
|
|
|
|
'order_detail_url' => Env::get('app_url', 'http://fengketrade.test') . '/pages/order/detail?id=',
|
|
|
|
|
],
|
|
|
|
|
];
|