This commit is contained in:
gonghaoxing 2025-10-21 17:33:34 +08:00
commit 8cedfb380c
4 changed files with 76 additions and 52 deletions

View File

@ -22,7 +22,7 @@ if (file_exists($envFile)) {
return [
// API基础地址 (生产环境)
'api_base_url' => 'https://yunbusiness.ccb.com/tp_service/server',
'api_base_url' => 'https://yunbusiness.ccb.com/tp_service/txCtrl/server',
// 交易代码映射
'tx_codes' => [
'order_push' => 'A3341TP01', // 订单推送

View File

@ -272,53 +272,4 @@ class Ccbpayment extends Common
exit('FAIL');
}
}
/**
* ⚠️ 已废弃: 推送订单到建行外联系统
*
* @deprecated 2025-01-20 根据建行流程图,订单推送应在createPayment()时完成,此方法已废弃
* @see createPayment() 步骤5: 推送未支付订单
* @see notify() 步骤7: 更新订单为已支付
*/
private function pushOrderToCcb($orderId)
{
Log::warning('[建行支付] pushOrderToCcb()已废弃,请使用orderService->pushOrder()或updateOrderStatus()');
}
/**
* 保存支付日志
*
* @param object $order 订单对象
* @param string $paymentString 支付串
* @param string $payFlowId 支付流水号
* @return void
*/
private function savePaymentLog($order, $paymentString, $payFlowId)
{
Db::name('ccb_payment_log')->insert([
'order_id' => $order->id,
'order_sn' => $order->order_sn,
'pay_flow_id' => $payFlowId,
'payment_string' => $paymentString,
'user_id' => $order->user_id,
'ccb_user_id' => $order->ccb_user_id,
'amount' => $order->pay_amount,
'status' => 0, // 待支付
'create_time' => time(),
]);
}
/**
* 更新支付日志
*
* @param string $payFlowId 支付流水号
* @param array $data 更新数据
* @return void
*/
private function updatePaymentLog($payFlowId, $data)
{
Db::name('ccb_payment_log')
->where('pay_flow_id', $payFlowId)
->update($data);
}
}

View File

@ -111,16 +111,18 @@ class CcbHttpClient
// 构建完整的API URL基础URL + ?txcode=交易代码)
$apiUrl = $this->config['api_base_url'] . '?txcode=' . $txCode;
// 构建请求参数
// 构建请求参数按照建行报文规范cnt、mac、svcid
$params = [
'cnt' => $cnt,
'mac' => $mac
'mac' => $mac,
'svcid' => $this->config['service_id']
];
// 📝 记录请求参数(加密后的完整内容)
Log::info('建行生活API加密请求参数 [txCode=' . $txCode . '] [url=' . $apiUrl . '] [timeout=' . self::DEFAULT_TIMEOUT . 's]');
Log::info('加密参数 cnt: ' . $cnt);
Log::info('加密参数 mac: ' . $mac);
Log::info('加密参数 svcid: ' . $this->config['service_id']);
// 初始化CURL
$ch = curl_init();

View File

@ -204,6 +204,77 @@ https://yunbusiness.ccb.com/tp_service/txCtrl/server?txcode=XX
| CCB_DISCOUNT_AMT | 建行支付侧优惠金额 | number(15,2) | N | 因业务调整,后续下线字段 |
| CCB_DISCOUNT_AMT_DESC | 建行支付侧优惠定义 | varChar(1000) | N | 因业务调整,后续下线字段 |
#### 报文示例
##### 1. 明文报文(加密前)
```json
{
"CLD_HEADER": {
"CLD_TX_CHNL": "YS44000009001853",
"CLD_TX_TIME": "20250121143522",
"CLD_TX_CODE": "A3341TP01",
"CLD_TX_SEQ": "PAY20250121143522123456"
},
"CLD_BODY": {
"USER_ID": "CCB_USER_12345678",
"ORDER_ID": "SO202501211435220001",
"ORDER_DT": "20250121143500",
"TOTAL_AMT": "100.00",
"PAY_AMT": "90.00",
"DISCOUNT_AMT": "10.00",
"DISCOUNT_AMT_DESC": "满减优惠=10.00",
"ORDER_STATUS": "0",
"REFUND_STATUS": "0",
"INV_DT": "20250121173500",
"MCT_NM": "丰科贸易(荷西嘉园店)",
"CUS_ORDER_URL": "https://example.com/order/detail?id=123",
"OCC_MCT_LOGO_URL": "https://example.com/logo.png",
"PAY_FLOW_ID": "PAY20250121143522123456",
"PAY_MRCH_ID": "105003953998037",
"GOODS_NM": "测试商品",
"PLATFORM": "99",
"SKU_LIST": "[{\"SKU_NAME\":\"测试商品\",\"SKU_REF_PRICE\":100.00,\"SKU_NUM\":1,\"SKU_SELL_PRICE\":90.00}]"
}
}
```
##### 2. 加密报文(最终发送)
**报文结构**
```json
{
"cnt": "BASE64加密后的明文内容...",
"mac": "32位小写MD5签名",
"svcid": "YS44000009001853"
}
```
**字段说明**
| 字段 | 说明 |
|------|------|
| cnt | 使用服务方公钥对明文报文进行RSA加密后的BASE64编码内容 |
| mac | MD5(明文报文 + 服务方私钥) 的32位小写签名 |
| svcid | 服务方编号(建行分配) |
**请求方式**
```
POST https://yunbusiness.ccb.com/tp_service/txCtrl/server?txcode=A3341TP01
Content-Type: application/x-www-form-urlencoded
cnt=BASE64加密内容&mac=MD5签名&svcid=服务方编号
```
**完整示例**(参考):
```json
{
"cnt": "Y2tFMDFJd2RGMGg5aFdXUGtjVVdaSmo4NHBKQzNNZE1wQTRRSXZVRlhBSWhqVEdXNE1LcE9MOXdxY0hhNUlIZndUU0RLK3NrZ1hpTytJUitpREEwSUp0bktRcWMxRG5hN1R0OEtjcUkxTUFDVE5FY2Z0b3lCeTVTaEo3cmNjSnBOUVFsSjRBR2htSzRheEhNb0p6N215eFViK1ZjeGd5WjVTTjJQcHUxQlBnZXJsQXE2Q1lrQ2VuSmZEYUxVSks5RGx2Yk9YWDlDczJiVVllYjlHSHQrUkFuYTljc2hucGhqVWNwNDgrcThNcGhQOElBL20xNVk5NG9lZEV4SXpmc0pDcDExZjFvQ0E5YkwwOWJOZjM4VHR3TkJkTmhqM3lKSVpWeWVpT0FucGhjS3JpOEs5RnlZbXlNVHF1UER3UjhmQ0p5dk5vYkNMS1BPRmQ3WFdXTVczZ29kSWpLaG5OUnhnaFA3N2txdDU3K2Rkd3hGbDgxUEdYbXJWN1ZKWDFOeXRVUFg2dWp3ZzdsUU1OSTlubU1kVE9nbHZJUHRoS205aEludFc2ZFBVTG1DUlNLNzZDc05qTUIyb1hTR2M2cHBNazMxNDJSa05KR0hvY1ZBNFUzcmc4SVk4ZFlYaTUzZmF3cHRES3pHY2JYVFI0SldRVzRNU2ZmSUxvNFpxTkY=",
"mac": "947cab4dfebe59265dd28246e4465157",
"svcid": "YS44000009001853"
}
```
---
### 3.2 A3341TP02 - 服务方订单更新