|
@@ -288,14 +288,18 @@ class Jiashicang extends Api
|
|
|
*/
|
|
|
public function update_villager_integral($mobile_phone = '', $integral_value = 0, $integral_type = '', $remarks = [])
|
|
|
{
|
|
|
+ // 正式环境URL,需要替换为实际的工行API网关地址
|
|
|
+ //$url = 'https://gw.dccnet.com.cn:8082/api/mybank/farm/farmplatf/updateVillagerIntegral/V1';
|
|
|
+ $url = 'https://gw.open.icbc.com.cn/api/mybank/farm/farmplatf/syncCommunityData/V1';
|
|
|
+
|
|
|
// 如果没有传入手机号,尝试从登录用户获取
|
|
|
if (empty($mobile_phone) && isset($this->auth->mobile)) {
|
|
|
$mobile_phone = $this->auth->mobile;
|
|
|
}
|
|
|
|
|
|
- // 生成16位唯一序列号(时间戳10位+随机数6位)
|
|
|
- $fSeqNo = time() . str_pad(mt_rand(0, 999999), 6, '0', STR_PAD_LEFT);
|
|
|
-
|
|
|
+ // 生成唯一序列号
|
|
|
+ $fSeqNo = createUniqueNo('fseq', time());
|
|
|
+
|
|
|
// 构建业务参数
|
|
|
$biz_content = [
|
|
|
'fSeqNo' => $fSeqNo,
|
|
@@ -312,105 +316,34 @@ class Jiashicang extends Api
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 工行RSA密钥(字符串格式)
|
|
|
- $public_key = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB';
|
|
|
- $private_key = 'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCR8/ZvKPAdZzsyvapySvztQm56s1N59ynKMOWpUbK4c5MNWMl+q3dvsp+UiSAx2TAeGkYfW3W6nO/3Y0hAZki99fmuzpPujEeHhs79HNwGZYQjN71Vck2JeflTq8jpL+9/up0Kz2nbwtZDMKTTEgbfNeO24gV1bmvD2kQ9j66RIyuXSDwQbVbQfl6LiqKoJm3rbtsbwX1Ytc0/Szslyor1VdPZWnHDMm3m78Hqu7X3vL6K7fAW/4FVbeKV7vWjvyiTQfETmuADqMdsqV5YeqUZWE/Dnzg+6JV/3L9nJ8f+/mPlh8k1h1oW035GrADKFKf1M2ujKKeHICnj7qKCdBeNAgMBAAECggEAHkh+U2YtHAy1Tbvox7ojbJ8iCTd4FJBiDV/D5zPaX0crtdM8S5oMOBLZ5ZnmIjGsODK/ZfY2ITg62huxfBs88J0+5zRZoV9d4BLqk74PMQyTNDN2h2omCGZUgzXbg/a8PMZdm0aZ8k0k4+AN8vWEk3+89c9Dzq/QkFyTWCqdz+Mp9NkcOjA255kj5/D1q9Zj0x9VcmKg3oTtrKL/dkspUxVaMKXcpo6J4AszC05tT3N0SNLhcq51I6B9QdbYsYCkP9whPNYIl/y4dN4QnNEivQzA5/ltr5DDQZc7Xke1+SpJN+ylBOBJ8yvNoDnuxx0xEWuNJ5bUzyri/DNjZRKNQQKBgQDKkxn5R4Q3rChI/KVIXHMecTs9fXN5pbnA8UKU6ZeTl+wHffxwRieHZJJp1nDcQ5i8YXCtqEJcJGFn3T0rEjVCJ/RVHclFO+TjYaK9HtyNJLPrvKmAzjCzV1yPfe4qmpgJddzZI7Vii2uFgklixvhkoY74hwSJtvLPTO0p0xrYdQKBgQC4cgfpCMLYlaHQGz+dAEf4IewQpwBGn7XShCpiXGFciGZZEIzvJMzXP7yo8pDMHQbB4kQsTRRG2fcdHGWI5VQGHPqG5O0tUueKGUlSg7j8Y/Pp8ZrBGSrlilAf17I/u9MC7Xe2ZRVGNgPDYAyjMEGmClI0n2+aN6b4CFVBjYmfuQKBgEKO9KDIE7QrF41rnW7aGWTuNVWty2wzvIWdf4/n9EqlRwLrLS9CjahZrhWiRLDKcPusVFZqi2s09OAoe/mT4PXcpNX2lHPwCvN+1/allje10HvrIBJXLP8v/BSVftR2uO+azzZ1GhrHzksulKgk0eZWguA7lI0fFEZycxYj65UlAoGAD9p1RZlkLfuGgf2llRgOF4zK3o+MHYXiuep0PioUkECFE4ixpGh0Vtf6nkbjHTgteYK6O1iQsppPfCgRrheQBkp9WhTZMfkbP6p2u+nof4ET2PrUQ16naj1eL655erLpKypADORZVMSVxDhAPdKLAfuHH1DI5ed8qXsF4PGKb7kCgYEAm/d+daT6YsbHDZlJ/J9Q8rRkKmiqj43NGQSHKg6Z6BEDibm8wRmj3Itu1N6XVChuaH+ekJzvUnZ/q1nyYzGvy6bOHYn3ziF9aH7wuhcRZ4qARmKDnzTBLg2QXBK1+400O3LJ+sAH/yuH/Y4hzRE6YMxBQpdYfnlJcIFVimAsT1w=';
|
|
|
+ // 加载RSA密钥
|
|
|
+ $public_key = APP_PATH . '/common/certs/icbc/public_key.pem';
|
|
|
+ $private_key = APP_PATH . '/common/certs/icbc/private_key.pem';
|
|
|
+ $rsautil = new RsaUtil($public_key, $private_key);
|
|
|
+
|
|
|
+ // 生成签名
|
|
|
+ $sign = $rsautil->publicEncrypt(json_encode($biz_content));
|
|
|
|
|
|
// 构建通用请求参数
|
|
|
$data = [
|
|
|
- 'app_id' => '10000000000004096993',
|
|
|
+ 'app_id' => '11000000000000010974',
|
|
|
'msg_id' => createUniqueNo('msg', time()),
|
|
|
'format' => 'json',
|
|
|
'charset' => 'UTF-8',
|
|
|
- 'encrypt_type' => 'AES',
|
|
|
- 'sign_type' => 'RSA2',
|
|
|
+ 'sign_type' => 'RSA',
|
|
|
+ 'sign' => $sign,
|
|
|
+ 'timestamp' => date('Y-m-d H:i:s'),
|
|
|
+ 'biz_content' => $biz_content,
|
|
|
];
|
|
|
|
|
|
- // 记录请求日志(调试用)
|
|
|
- \think\Log::record('积分维护接口请求参数: ' . json_encode([
|
|
|
- 'app_id' => $data['app_id'],
|
|
|
- 'msg_id' => $data['msg_id'],
|
|
|
- 'biz_content' => $biz_content
|
|
|
- ], JSON_UNESCAPED_UNICODE), 'info');
|
|
|
-
|
|
|
- try {
|
|
|
- // 创建工行客户端
|
|
|
- $client = new \DefaultIcbcClient(
|
|
|
- $data['app_id'],
|
|
|
- $private_key,
|
|
|
- $data['sign_type'],
|
|
|
- $data['charset'],
|
|
|
- $data['format'],
|
|
|
- $public_key,
|
|
|
- '', '', '', ''
|
|
|
- );
|
|
|
-
|
|
|
- // 构建请求参数
|
|
|
- $request = [
|
|
|
- 'serviceUrl' => 'https://gw.dccnet.com.cn:8084/api/mybank/farm/farmplatf/updateVillagerIntegral/V1',
|
|
|
- 'method' => 'POST',
|
|
|
- 'isNeedEncrypt' => false,
|
|
|
- 'extraParams' => null,
|
|
|
- 'biz_content' => $biz_content,
|
|
|
- ];
|
|
|
-
|
|
|
- // 发送请求
|
|
|
- $response = $client->execute($request, $data['msg_id'], '');
|
|
|
-
|
|
|
- // 记录原始响应(调试用)
|
|
|
- \think\Log::record('积分维护接口原始响应: ' . $response, 'info');
|
|
|
-
|
|
|
- // 检查响应是否为空
|
|
|
- if (empty($response)) {
|
|
|
- return [
|
|
|
- 'return_code' => '-1',
|
|
|
- 'return_msg' => '接口无响应',
|
|
|
- 'raw_response' => $response
|
|
|
- ];
|
|
|
- }
|
|
|
-
|
|
|
- // 解析响应
|
|
|
- $result = json_decode($response, true);
|
|
|
-
|
|
|
- // 检查JSON解析是否成功
|
|
|
- if (json_last_error() !== JSON_ERROR_NONE) {
|
|
|
- return [
|
|
|
- 'return_code' => '-2',
|
|
|
- 'return_msg' => 'JSON解析失败: ' . json_last_error_msg(),
|
|
|
- 'raw_response' => $response
|
|
|
- ];
|
|
|
- }
|
|
|
-
|
|
|
- // 检查是否有response_biz_content(按API文档,响应数据在这个字段里)
|
|
|
- if (isset($result['response_biz_content'])) {
|
|
|
- $biz_result = json_decode($result['response_biz_content'], true);
|
|
|
- if ($biz_result) {
|
|
|
- // 合并业务响应和原始响应
|
|
|
- return array_merge($biz_result, ['raw_response' => $response]);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // 如果直接有return_code,直接返回
|
|
|
- if (isset($result['return_code'])) {
|
|
|
- return $result;
|
|
|
- }
|
|
|
-
|
|
|
- // 返回完整结果
|
|
|
- return $result ? $result : [
|
|
|
- 'return_code' => '-3',
|
|
|
- 'return_msg' => '未知响应格式',
|
|
|
- 'raw_response' => $response
|
|
|
- ];
|
|
|
-
|
|
|
- } catch (\Exception $e) {
|
|
|
- // 捕获异常
|
|
|
- \think\Log::record('积分维护接口异常: ' . $e->getMessage(), 'error');
|
|
|
- return [
|
|
|
- 'return_code' => '-99',
|
|
|
- 'return_msg' => '接口调用异常: ' . $e->getMessage(),
|
|
|
- 'raw_response' => ''
|
|
|
- ];
|
|
|
- }
|
|
|
+ // 发送请求
|
|
|
+ $response = curl_post($url, json_encode($data, JSON_UNESCAPED_UNICODE));
|
|
|
+
|
|
|
+ // 解析响应
|
|
|
+ $result = json_decode($response, true);
|
|
|
+
|
|
|
+ // 返回结果
|
|
|
+ return $result ? $result : ['return_code' => '-1', 'return_msg' => '接口调用失败', 'response' => $response];
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -420,14 +353,14 @@ class Jiashicang extends Api
|
|
|
public function test_integral()
|
|
|
{
|
|
|
// 测试参数
|
|
|
- $mobile_phone = '15388010006'; // 测试手机号
|
|
|
+ $mobile_phone = '13792965609'; // 测试手机号
|
|
|
$integral_value = 10; // 增加10分
|
|
|
- $integral_type = '10938'; // 积分类型
|
|
|
+ $integral_type = 'test'; // 积分类型
|
|
|
$remarks = ['陈冲']; // 备用字段
|
|
|
|
|
|
// 调用积分维护接口
|
|
|
$result = $this->update_villager_integral($mobile_phone, $integral_value, $integral_type, $remarks);
|
|
|
-
|
|
|
+
|
|
|
// 输出结果
|
|
|
if ($result['return_code'] == 0) {
|
|
|
$this->success('积分推送成功', $result);
|