PHP对京东联盟CPS的API调用

 更新时间:2022年07月25日 11:17:53   作者:AdaC772  
这篇文章介绍了PHP调用京东联盟API的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

在调用接口之前,先要取得授权,这个看看接口文档就可以了。地址如下:https://jos.jd.com/doc/channel.htm?id=152

在京东云控制台:https://console.jdcloud.com/

“新建应用”获得 调用接口的通用参数(App key/client_id、App secret/client_secret、access_token)。

授权有效期说明:如果应用appkey状态为“在线测试”,授权token有效期只有24小时,“上线运行”状态的应用授权token有效期为一年。另如果是通用应用,需要先发布到服务市场,审核通过后方可授权获取token。

注意:如授权商家修改主账号密码则授权码(Access token)随之失效,需重新授权。

另需在京东联盟

推广管理-》网站管理,添加新网站 获得例如“获取单条推广代码”之类的API所需的web ID。如需app调用,则需要在推广管理-》APP管理 添加一个APP,以获得app相关接口所需要的appId 。

备案通过后的网站,通过京东审核,一般需要3-5个工作日。

准备好以上应用级参数后,便可以调用京东联盟API了,接口文档地址:https://jos.jd.com/api/list.htm?id=117

开发之前可以先用”API测试工具“测试一下。获取推广商品信息接口测试地址:https://jos.jd.com/api/showTools.htm?id=1413&groupId=117

下图是批量获取推广代码的接口测试结果:

比较坑爹的是 获取单条推广代码 的接口

推广类型有好多个,但是目前只支持”自定义推广“!物料ID的注释很多,但是就是不说明自定义推广类型的物料ID怎么填!实际上,物料ID要填商品的访问地址。

推广渠道为PC时,要写诸如http://item.jd.com/2346382.html的地址;推广渠道为WL时,要写诸如http://item.m.jd.com/product/2346382.html的地址。

php代码如下:

class jd {
    public static $appKey = '';
    public static $appSecret = '';
    public static $access_token = '';
    const URL = 'https://api.jd.com/routerjson?';

    /* 发送GET请求,跳过ssl证书检测 */
    function curl_get($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);    // https请求 不验证证书和hosts
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    // 要求结果为字符串且输出到屏幕上
        curl_setopt($ch, CURLOPT_HEADER, 0); // 不要http header 加快效率
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
        curl_setopt($ch, CURLOPT_TIMEOUT, 15);
        $output = curl_exec($ch);
        curl_close($ch);
        return $output;
    }

    //设置参数
    function setParameter($specialParameter){
        $time = date('Y-m-d H:i:s', time());

        $publicParameter = array(
            'access_token'         => static::$access_token,
            'app_key'             => static::$appKey,
            'v'                 => '2.0',
            'timestamp'         => $time,
        );

        $params = array_merge($publicParameter, $specialParameter);
        $sign = self::getStringToSign($params);

        $parameter = array_merge($params, ['sign'=>$sign]);
        ksort($parameter);
        $str = '';
        foreach($parameter as $key => $value){
            $str .= urlencode($key) . '=' . urlencode($value) . '&';
        }

        return $str;
    }

    //生成签名
    function getStringToSign($parameter){

        ksort($parameter);
        $str = '';
        foreach($parameter as $key => $value){
            $str .= urlencode($key) . urlencode($value);
        }

        $str = static::$appSecret . $str . static::$appSecret;

        $signature = strtoupper(md5($str));

        return $signature;
    }

    //获取推广商品信息
    public function getGoodsInfo($skuId){
    
        $specialParameter = [
            'method'    => 'jingdong.service.promotion.goodsInfo',
            '360buy_param_json' => json_encode([
                'skuIds'    => $skuId
            ])
        ];

        $str = self::setParameter($specialParameter);
        $url = self::URL.$str;

        return json_decode(self::curl_get($url));
    }
}

返回的数据格式为:

  object(stdClass)#59 (1) {
  ["jingdong_service_promotion_goodsInfo_responce"]=>
  object(stdClass)#60 (2) {
    ["code"]=>
    string(1) "0"
    ["getpromotioninfo_result"]=>
    string(499) "{
        "message":"接口成功",
        "result":[{
            "commisionRatioPc":0.60,
            "commisionRatioWl":0.60,
            "endDate":4102416000000,
            "goodsName":"联想(ThinkPad )轻薄系列E450(20DCA082CD)14英寸笔记本电脑 (i5-5200U 4G 500G 2G独显 win10)",
            "imgUrl":"http://img14.360buyimg.com/n1/jfs/t3025/299/208536801/248419/ef1e3b38/579729e0N1e605005.jpg",
            "materialUrl":"http://item.jd.com/2346382.html",
            "shopId":1000000158,
            "skuId":2346382,
            "startDate":1475251200000,
            "unitPrice":3999.0,
            "wlUnitPrice":3999
        }],
        "sucessed":true}"
    }
  }

到此这篇关于PHP调用京东联盟API的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)

    深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)

    ob_flush()和flush()这两个函数一般要一起使用,顺序是先ob_flush(),然后flush(),它们的作用是刷新缓冲区
    2013-02-02
  • PHP使用mysqldump命令导出数据库

    PHP使用mysqldump命令导出数据库

    最近用php写一个数据备份的功能。做法是使用php的system函数执行mysqldump命令,进行备份,这里分享给大家,有需要的小伙伴可以参考下。
    2015-04-04
  • php中in_array函数用法探究

    php中in_array函数用法探究

    这篇文章主要介绍了php中in_array函数用法,对in_array函数参数匹配的用法进行了较为深入的探究,有助于较为全面的理解in_array函数的用法,需要的朋友可以参考下
    2014-11-11
  • PHP中文件缓存转内存缓存的方法

    PHP中文件缓存转内存缓存的方法

    顾名思义文件缓存转内存缓存就是将存储在文件中的数据转到内存中去,实现磁盘操作转为内存操作,这样可以大大提高数据访问速度,并能实现缓存数据的分布式部署。文件缓存与内存缓存的介绍请参考名词解释部分
    2011-12-12
  • PHP调用API接口的方法及实现过程

    PHP调用API接口的方法及实现过程

    随着互联网、云计算和大数据时代的到来,越来越多的应用程序需要调用第三方的API接口来获取数据,本文将给大家介绍PHP调用API接口的方法及实现过程,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-03-03
  • PHP常见方法封装总结

    PHP常见方法封装总结

    这篇文章主要为大家介绍了PHP中常见的几个方法封装,文中的示例代码讲讲详细,对我们学习或工作有一定的参考价值,感兴趣的可以了解一下
    2022-05-05
  • ThinkPHP中自定义目录结构的设置方法

    ThinkPHP中自定义目录结构的设置方法

    现在很多朋友喜欢使用ThinkPHP但它会生成的很多目录有些朋友不喜欢,这里为大家分享下将目录都放到include目录的方法,这样就干净多了
    2014-08-08
  • php读取文件内容的三种可行方法示例介绍

    php读取文件内容的三种可行方法示例介绍

    这篇文章主要介绍了php读取文件内容的三种方法,需要的朋友可以参考下
    2014-02-02
  • 二招解决php乱码问题

    二招解决php乱码问题

    PHP的乱码问题已经说了N+1遍了,但还是经常看到新手不知道该如何解决php乱码问题,在此本人再重新给总结一下,希望对新手有点帮助
    2012-03-03
  • php实现插入排序

    php实现插入排序

    本文给大家分享的是使用php实现插入排序的方法,十分的简单实用,有需要的小伙伴可以参考下。
    2015-03-03

最新评论