2025-10-27 14:20:37 +08:00

251 lines
7.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* 建行生活对接配置文件
*
* 重要说明:
* - 建行只提供生产环境,没有测试环境
* - 配置优先从.env读取,如果没有则使用默认值
* - 请在.env文件中配置敏感信息(密钥等)
*
* @author Billy
* @date 2025-01-16
*/
use think\Env;
// 读取 .env 文件以获取密钥配置
$envFile = __DIR__ . '/../../../.env';
$envVars = [];
if (file_exists($envFile)) {
$envVars = parse_ini_file($envFile);
}
return [
// API基础地址 (生产环境)
'api_base_url' => 'https://yunbusiness.ccb.com/tp_service/txCtrl/server',
// 交易代码映射
'tx_codes' => [
'order_push' => 'A3341TP01', // 订单推送
'order_update' => 'A3341TP02', // 订单状态更新
'order_query' => 'A3341TP03', // 订单查询
'order_refund' => 'A3341TP04', // 订单退款
],
// 服务方信息(生产环境)
'service_id' => Env::get('ccb.service_id', 'YS44000009001853'),
// 商户信息(从.env读取)
'merchant_id' => Env::get('ccb.merchant_id', '105003953998037'),
'pos_id' => Env::get('ccb.pos_id', '068295530'),
'branch_id' => Env::get('ccb.branch_id', '340650000'),
// ========== 密钥配置 (从.env读取) ==========
/**
* 商户私钥 (商户自己生成的RSA私钥)
* 用途:
* - API请求签名MD5(明文 + 私钥)
* - 解密建行返回的加密数据(ccbParamSJ等)
* - 解密建行API响应报文
* 格式: BASE64格式(不含PEM头尾) 或 PEM格式(含头尾)
*
* ⚠️ 安全提示: 私钥必须严格保密,不得泄露!
*/
'private_key' => $envVars['private_key'] ?? '',
/**
* 服务方公钥 (服务方自己生成的RSA公钥)
* 用途:
* - 支付下单的MD5签名计算(PLATFORMPUB字段)
* - 用于加密商户公钥生成ENCPUB
* 格式: BASE64格式(不含PEM头尾) 或 PEM格式(含头尾)
*
* 📌 注意: 这是参与支付签名计算的服务方公钥
*/
'public_key' => $envVars['public_key'] ?? '',
/**
* 商户公钥 (商户自己生成的RSA公钥,与上面的private_key对应)
* 用途:
* - 生成ENCPUB密文(使用服务方公钥加密商户公钥后30位)
* - 提交给建行用于验证商户签名
* 格式: BASE64格式(不含PEM头尾) 或 PEM格式(含头尾)
*
* 📌 注意: 需要将此公钥提交给建行进行配置
* 📌 如果已上架建行生活并同步公钥可以不再上送ENCPUB
*/
'merchant_public_key' => $envVars['merchant_public_key'] ?? '',
// 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, // 支付超时时间(分钟)
],
// ========== 可选支付参数配置 ==========
// 以下参数按需配置,不配置则不会添加到支付串中
/**
* 外部平台商户号 (与建行商户号二选一)
* 说明: 使用外部平台商户号时,会自动移除MERCHANTID、POSID、BRANCHID
*/
'plat_mct_id' => Env::get('ccb.plat_mct_id', ''),
/**
* 微信支付19位终端号
* 说明: 微信支付场景下使用
*/
'pos_id_19' => Env::get('ccb.pos_id_19', ''),
/**
* 支付位图 - 控制支付方式
* 格式: 6位字符串,每位对应一个支付方式(1=开启,0=关闭)
* 位置: [生活钱包][龙支付][微信][数字人民币][信用付][快贷]
* 示例: '111111' = 全部开启, '110000' = 仅生活钱包和龙支付
*/
'pay_bitmap' => Env::get('ccb.pay_bitmap', '110000'),
/**
* 账户位图 - 控制支付账户类型
* 格式: 5位字符串,每位对应一个账户类型(1=开启,0=关闭)
* 位置: [建行借记卡][建行贷记卡][他行借记卡][他行贷记卡][建行钱包]
* 示例: '11111' = 全部开启, '11000' = 仅建行卡
*/
'account_bitmap' => Env::get('ccb.account_bitmap', '11000'),
/**
* 分期付款期数
* 说明: 分期支付场景下使用
*/
'install_num' => Env::get('ccb.install_num', ''),
/**
* 积分二级活动编号
* 说明: 积分抵扣场景下使用
*/
'point_avy_id' => Env::get('ccb.point_avy_id', ''),
/**
* 固定抵扣积分值
* 说明: 固定积分抵扣场景下使用
*/
'fixed_point_val' => Env::get('ccb.fixed_point_val', ''),
/**
* 最小使用积分抵扣限制
* 说明: 积分抵扣最小值限制
*/
'min_point_limit' => Env::get('ccb.min_point_limit', ''),
/**
* 有价券活动编号
* 说明: 优惠券活动场景下使用
*/
'coupon_avy_id' => Env::get('ccb.coupon_avy_id', ''),
/**
* 限制信用卡支付标志
* 说明: 1=仅限信用卡支付
*/
'only_credit_pay_flag' => Env::get('ccb.only_credit_pay_flag', ''),
/**
* 扩展域参数
* 格式: JSON字符串(配置时无需urlencode,代码会自动处理)
* 示例: '{"key1":"value1","key2":"value2"}'
*/
'extend_params' => Env::get('ccb.extend_params', ''),
// ========== 数字人民币(DCEP)配置 ==========
/**
* 数字人民币商户类型
* 1=融合商户(使用普通商户号)
* 2=非融合商户(需单独配置数币商户号)
*/
'dcep_mct_type' => Env::get('ccb.dcep_mct_type', ''),
/**
* 数字人民币商户号 (dcep_mct_type=2时必填)
*/
'dcep_merchant_id' => Env::get('ccb.dcep_merchant_id', ''),
/**
* 数字人民币柜台号 (dcep_mct_type=2时必填)
*/
'dcep_pos_id' => Env::get('ccb.dcep_pos_id', ''),
/**
* 数字人民币分行号 (dcep_mct_type=2时必填)
*/
'dcep_branch_id' => Env::get('ccb.dcep_branch_id', ''),
/**
* 数字人民币存款账号
*/
'dcep_dep_acc_no' => Env::get('ccb.dcep_dep_acc_no', ''),
// ========== 二级商户配置(平台类服务方使用) ==========
/**
* 二级商户编号
* 说明: 平台型服务方为下级商户收款时使用
*/
'sub_mct_id' => Env::get('ccb.sub_mct_id', ''),
/**
* 二级商户名称
*/
'sub_mct_name' => Env::get('ccb.sub_mct_name', ''),
/**
* 二级商户MCC码
* 说明: 商户类别码,标识商户行业类型
*/
'sub_mct_mcc' => Env::get('ccb.sub_mct_mcc', ''),
// ========== 场景编号配置(埋点使用,不参与MAC签名) ==========
/**
* 场景编号
* 说明: 用于数据埋点分析,不参与MAC校验
*/
'scn_id' => Env::get('ccb.scn_id', ''),
/**
* 场景平台编号
* 说明: 用于数据埋点分析,不参与MAC校验
*/
'scn_pltfrm_id' => Env::get('ccb.scn_pltfrm_id', ''),
// 日志配置
'log' => [
'enabled' => true,
'level' => Env::get('ccb.log_level', 'info'), // debug, info, warning, error
'path' => __DIR__ . '/../../../runtime/log/ccblife/',
],
// 安全配置
'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=',
],
];