mirror of
https://gitee.com/liuxioabin/fengketrade.git
synced 2026-04-17 21:03:17 +08:00
'合并'
This commit is contained in:
commit
8cedfb380c
@ -22,7 +22,7 @@ if (file_exists($envFile)) {
|
|||||||
|
|
||||||
return [
|
return [
|
||||||
// API基础地址 (生产环境)
|
// API基础地址 (生产环境)
|
||||||
'api_base_url' => 'https://yunbusiness.ccb.com/tp_service/server',
|
'api_base_url' => 'https://yunbusiness.ccb.com/tp_service/txCtrl/server',
|
||||||
// 交易代码映射
|
// 交易代码映射
|
||||||
'tx_codes' => [
|
'tx_codes' => [
|
||||||
'order_push' => 'A3341TP01', // 订单推送
|
'order_push' => 'A3341TP01', // 订单推送
|
||||||
|
|||||||
@ -272,53 +272,4 @@ class Ccbpayment extends Common
|
|||||||
exit('FAIL');
|
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -111,16 +111,18 @@ class CcbHttpClient
|
|||||||
// 构建完整的API URL(基础URL + ?txcode=交易代码)
|
// 构建完整的API URL(基础URL + ?txcode=交易代码)
|
||||||
$apiUrl = $this->config['api_base_url'] . '?txcode=' . $txCode;
|
$apiUrl = $this->config['api_base_url'] . '?txcode=' . $txCode;
|
||||||
|
|
||||||
// 构建请求参数
|
// 构建请求参数(按照建行报文规范:cnt、mac、svcid)
|
||||||
$params = [
|
$params = [
|
||||||
'cnt' => $cnt,
|
'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('建行生活API加密请求参数 [txCode=' . $txCode . '] [url=' . $apiUrl . '] [timeout=' . self::DEFAULT_TIMEOUT . 's]');
|
||||||
Log::info('加密参数 cnt: ' . $cnt);
|
Log::info('加密参数 cnt: ' . $cnt);
|
||||||
Log::info('加密参数 mac: ' . $mac);
|
Log::info('加密参数 mac: ' . $mac);
|
||||||
|
Log::info('加密参数 svcid: ' . $this->config['service_id']);
|
||||||
|
|
||||||
// 初始化CURL
|
// 初始化CURL
|
||||||
$ch = curl_init();
|
$ch = curl_init();
|
||||||
|
|||||||
@ -204,6 +204,77 @@ https://yunbusiness.ccb.com/tp_service/txCtrl/server?txcode=XX
|
|||||||
| CCB_DISCOUNT_AMT | 建行支付侧优惠金额 | number(15,2) | N | 因业务调整,后续下线字段 |
|
| CCB_DISCOUNT_AMT | 建行支付侧优惠金额 | number(15,2) | N | 因业务调整,后续下线字段 |
|
||||||
| CCB_DISCOUNT_AMT_DESC | 建行支付侧优惠定义 | varChar(1000) | 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 - 服务方订单更新
|
### 3.2 A3341TP02 - 服务方订单更新
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user