当前位置: 首页 > article >正文

php对接中通SDK问题

记一次对接中通接口遇到的问题。

中通SDK是4年前的了,就这他们技术人员说能拉取的都是最新的,囧。

1.修改ZopHttpUtil.php中的请求方式

public function post($url, $headers, $querystring)//$timeout
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);//设置链接
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置是否返回信息
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);//设置HTTP头
        curl_setopt($ch, CURLOPT_POST, 1);//设置为POST方式
        //curl_setopt($ch, CURLOPT_TIMEOUT_MS, $timeout);//无用,注释了
        curl_setopt($ch, CURLOPT_POSTFIELDS, $querystring);
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); //强制协议为1.0
        curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 ); //强制使用IPV4协议解析域名
        $response = curl_exec($ch);
        if (curl_errno($ch)) {
            // 输出错误信息
            echo 'cURL Error: ' . curl_error($ch);
        }
        return $response;
    }

2.修改ZopClient.php

46,57行,将调用post请求方法的最后一个参数去掉

return $this->httpClient->post($url, $headers, http_build_query($fixedParams));//, 2000  46行
return $this->httpClient->post($url, $headers, $body);//, 2000  57行

PS:不想用他们的SDK的话,我这里自己写了一个生成中通签名的方法,需要的话可以自己测试下,我没用 - -

 //中通签名方法
   protected function generateSignature($params,$appSecret){
        // 步骤1: 待签名字符串 = 请求参数 + appSecret
        $sign = $params . $appSecret;
        // 步骤2: utf8Bytes = 使用 UTF-8 编码成 byte 数组
        $utf8Bytes = mb_convert_encoding($sign, 'UTF-8');
        // 步骤3: md5bytes = md5(utf8Bytes)
        $md5Bytes = md5($utf8Bytes);
        // 步骤4: x-datadigest = base64Str(md5bytes)
        $xDataDigest = base64_encode($md5Bytes);
        return $xDataDigest;
    }


http://www.kler.cn/news/339677.html

相关文章:

  • Jmeter链接数据库、分布式
  • 手撕数据结构 —— 顺序表(C语言讲解)
  • 管道内裂缝检测数据集 2000张 管道裂缝 带标注voc yol
  • Slime - Bonus Files 1 怪物包
  • 中国通信技术革命史
  • 03_23 种设计模式之《原型模式》
  • Java后端基础练习|请求参数
  • QT 通过鼠标事件实现图片的拖动和缩放
  • imu的深度学习方案
  • 请描述一下数据库的负载测试和压力测试。请简要描述不同类型的联接(如内联接、左外联接、右外联接、全外联接等)。
  • PHP input 多文件上传功能实现-网页不为人知的数据库缺陷——未来之窗行业应用跨平台架构
  • vue项目刷新后h5样式失效
  • ArrayList 和 Vector,HashMap 和 Hashtable的区别
  • 2024年(第7届)“泰迪杯”数据分析技能赛通知
  • 前端vue中div设置background图片铺满div
  • LeetCode 算法:多数元素 c++
  • sqli-labs靶场less-6使用updatexml函数报错注入
  • 64.DDR3读写控制器的设计与验证(1)(MIG IP核的配置)
  • AI知识库如何提升服装电商的运营效率
  • 期权懂|期权杠杆在期权市场中有什么作用?