业务向——基于多多进宝平台的CPS

业务向——基于多多进宝平台的CPS

  • 导读
  • 小试牛刀
  • 商品活动推广
  • 商品详情获取
  • 频道推广
  • 订单获取及和用户绑定
  • 小结

导读

多多进宝是拼多多的开放平台,为广大商家和推广者提供了一个机会,通过推广拼多多的商品来实现收益。多多进宝的CPS(按效果付费)模式让推广者可以根据自己的努力和效果来获取相应的佣金,成为了许多人赚取额外收入的途径。在本文中,我们也将从0到1,深入了解及实践如何玩转拼多多CPS,为自己的副业拓宽一下路子。

小试牛刀

在开始之前,我们可能去管网注册一下账号,链接如下,在注册后,在“我要推广”下选择想要推广的商品或者榜单,如图1。以“单品推广”为例子,点击进入某个商品的详情后,点击我要推广,填写对应的推广位,即可生成推广链接,如图2。接着,当用户通过你的链接点击下单,即可获得分佣。

  • 多多进宝
  • 拼多多开放平台文档
  • 拼多多开放平台账号注册文档
  • 除了手动创建推广位,PDD也提供了接口的方式创建推广位。

推广位:在相应媒体登记下创建推广位,每个推广位是唯一的“pid”,是推广识别、跟踪和结算依据
根据推广位,获取商品的多多客推广链接,即可引导消费者购买。该属性在后续接口调用中,经常需要携带的参数

图1
图2
在上面的例子中,我们介绍了手动操作生成推广链接的方式,接着我们将围绕如下几方面,展开描述通过接口的方式,如何玩转多多进宝。

  1. 商品活动推广
  2. 商品调整获取
  3. 拼多多充值
  4. 拼多多订单获取及和用户绑定

在开始之前,我们还需要下载服务端SDK**,**方面我们开发调用。

商品活动推广

pdd.ddk.goods.recommend.get:该接口可以获取PDD各个活动的商品列表,通过传入activity_tags参数,可以获取不同活动页。

activity_tagsINTEGER[]非必填活动商品标记数组,例:[4,7],4-秒杀,7-百亿补贴,10851-千万补贴,11879-千万神券,10913-招商礼金商品,31-品牌黑标,10564-精选爆品-官方直推爆款,10584-精选爆品-团长推荐,24-品牌高佣,其他的值请忽略

示例代码如下,注意

  • activityTags参数为具体的活动参数,可以写成一个枚举,根据需要动态传参
  • cat_id参数一般用于“猜你喜欢”的场景,当我们点击某个商品后,如果想在这个商品页的下方推荐类似商品,就可以用到这个参数了,此时传入这个商品ID就可以。
  • pid参数即我们在多多进宝上创建的推广位id。
  • limit、offset、listId参数为分页参数,listId参数为翻页时PDD在前页返回的list_id值
 PddDdkGoodsRecommendGetRequest request = new PddDdkGoodsRecommendGetRequest();
        request.setActivityTags(activityTags);
        request.setCatId("");

        request.setLimit(100);
        request.setOffset((0);
        request.setChannelType(5);
         request.setListId("");
        request.setPid("");

		PopClient client = new PopHttpClient(config.pddClientId, config.pddClientSecret);

        try {
             PddDdkGoodsRecommendGetResponse response = client.syncInvoke(request);
        } catch (Exception e) {
            LOGGER.error("拼多多商品列表请求失败 : {}", JSONObject.toJSONString(request), e);
            throw CommonExceptions.BIZ_INVALID.newWithErrMsg("拼多多商品列表请求失败");
        }

商品详情获取

商品详情的展示有两种方式,一种是通过PDD的接口直接获取商品详情信息,然后我们在自己的页面上去做渲染,另外一种是通过生成推广链接,当用户点击时,跳转到PDD上去展示。

  • pdd.ddk.goods.detail:获取商品详情
  • pdd.ddk.goods.promotion.url.generate:生成推广链接

生成推广链接方式为例子:

  • custom_parameters:该参数是绑定用户订单的关键,甚至分销的场景也需要借助该参数,以下面代码为例子,这里传入uid的值为用户id,sid为邀请当前用户的上级用户id。
  • goodsSignList:该参数为获取商品活动列表时,PDD返回的数据里,每个商品都有该参数,值为商品id加密后的结果。
  • 生成链接方式:PDD对这块的功能支持还是挺丰富的,有h5链接也有小程序等,这里我是小程序,所以用的也是生成拼多多小程序跳转链接参数generate_we_app。
PddDdkGoodsPromotionUrlGenerateRequest request = new PddDdkGoodsPromotionUrlGenerateRequest();
        CustomParameters customParameters = new CustomParameters().setSid(memberNo).
                setUid(formatUid(memberNo));
        request.setCustomParameters(JSONObject.toJSONString(customParameters));
        List<String> goodsSignList = new ArrayList<String>();
        goodsSignList.add(goods.getGoodsSign());
        request.setGoodsSignList(goodsSignList);
//        request.setMaterialId("str");
//        request.setMultiGroup(false);
        request.setSearchId(goods.getSearchId());
       
        PopClient client = new PopHttpClient(config.pddClientId, config.pddClientSecret);

        request.setGenerateAuthorityUrl(false);
        request.setGenerateMallCollectCoupon(false);
        request.setGenerateQqApp(false);
        request.setGenerateSchemaUrl(false);
        request.setGenerateShortUrl(false);
        request.setGenerateWeApp(true);
        request.setPId(config.pddClientId);

        try {
            PddDdkGoodsPromotionUrlGenerateResponse response = client.syncInvoke(request);
        } catch (Exception e) {
            LOGGER.error("拼多多商品跳转请求失败");
        }

频道推广

除了商品的推广,PDD也推出了很多频道推广的活动,像我们日常经常充话费、火车票购买都有相应能力支持。

resource_typeINTEGER非必填频道来源:4-限时秒杀,39997-充值中心, 39998-活动转链,39996-百亿补贴,39999-电器城,40000-领券中心,50005-火车票

以话费充值为例子:

  • custom_parameters:同样,这里的自定义参数也是绑定用户订单的关键。
  • resource_type:该参数即为频道类型。
CustomParameters customParameters = new CustomParameters().setSid(vo.getMemberNo()).
                setUid(formatUid(vo.getMemberNo()));
        PddDdkResourceUrlGenRequest request = new PddDdkResourceUrlGenRequest();
        request.setCustomParameters(JSONObject.toJSONString(customParameters));
        request.setResourceType(39997);
        request.setPid("11");
        request.setGenerateWeApp(true);

        PopClient client = new PopHttpClient(config.pddClientId, config.pddClientSecret);

        try {
            PddDdkResourceUrlGenResponse response = client.syncInvoke(request);
            return new ActivityVo().setAppId(response.getResourceUrlResponse().getWeAppInfo().getAppId())
                    .setUrl(response.getResourceUrlResponse().getWeAppInfo().getPagePath());

        } catch (Exception e) {
            LOGGER.error("拼多多转链失败 : {}", JSONObject.toJSONString(request), e);
            throw CommonExceptions.BIZ_INVALID.newWithErrMsg("拼多多商品列表请求失败");
        }

订单获取及和用户绑定

当用户点击商品发生购买的时候,上面说到的自定义参数custom_parameters将被PDD记录下来,那么我们获取订单时,PDD会将该参数返回给我们,这时我们可以通过该参数解析出是哪位用户下的订单,从而实现和用户绑定。返参格式如下

custom_parametersSTRING自定义参数

关于订单获取,PDD提供了几种方式,下面介绍的是按照时间范围获取订单列表。在实际使用过程中,我们可以起一个定时任务定时获取对应的订单列表。

  • pdd.ddk.order.list.range.get
PddDdkOrderListRangeGetRequest request = new PddDdkOrderListRangeGetRequest();

        request.setStartTime(startTime);
        request.setEndTime(endTime);

        String lastOrderId = "";
        do {
            if (StringUtils.isNotBlank(lastOrderId)) {
                request.setLastOrderId(lastOrderId);
            }
            PddDdkOrderListRangeGetResponse response = pddFetchOrderService.request(request);
            LOGGER.info("pdd 订单请求的响应: {}", JSONObject.toJSONString(response));
            if (response == null || response.getOrderListGetResponse() == null) {
                break;
            }
            if (StringUtils.isBlank(response.getOrderListGetResponse().getLastOrderId()) ||
                    CollectionUtils.isEmpty(response.getOrderListGetResponse().getOrderList())) {
                break;
            }
            saveOrUpdateOrder(response.getOrderListGetResponse().getOrderList());
            lastOrderId = response.getOrderListGetResponse().getLastOrderId();
        } while (true);

小结

通过上面的实践,相信我们对PDD开放平台有一个整体上的了解与认识,除了上面所述的功能外,PDD开放平台还有很多丰富的功能,像店铺API,卡劵API等。另外,关于CPS玩转,搭建相关服务是其次,重点还是落地及推广,一般只靠个人还是很难玩得动的,如果小伙伴们有什么其他想法,欢迎留言或者私信探讨~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/313948.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

强化学习应用(一):基于Q-learning的无人机物流路径规划研究(提供Python代码)

一、Q-learning简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于马尔可夫决策过程&#xff08;MDP&#xff09;的问题。它通过学习一个价值函数来指导智能体在环境中做出决策&#xff0c;以最大化累积奖励。 Q-learning算法的核心思想是通过不断更新一个称为Q值的…

【MYSQL】MYSQL 的学习教程(十三)之 MySQL的加锁规则

1. MySQL 加锁全局视角 MySQL 分成了 Server 层和存储引擎两部分&#xff0c;每当执行一个查询时&#xff0c;Server 层负责生成执行计划&#xff0c;然后交给存储引擎去执行。其整个过程可以这样描述&#xff1a; Server 层向 Innodb 获取到扫描区间的第 1 条记录Innodb 通过…

SGL-110型定时限过流继电器 额定电流5A 额定电压220V 交直流通用 板前接线

系列型号 LGY-110零序过电压继电器&#xff1b; LGL-110零序过电压继电器&#xff1b; LGL-110/AC零序过电压继电器&#xff1b; LGL-110零序过电流继电器 板前接线 &#xff11; 应用 LGL-110 型零序过电流继电器用作线路和电力设备的零序过电流保护。 LGY-110 型零序过…

WSL2-Ubuntu20.04-配置

WSL2-Ubuntu20.04-配置 安装wsl2安装Ubuntu20.04安装anacondaWSL2可视化&#xff08;VcXsrv&#xff09; 安装wsl2 wsl --install wsl -l -v # 版本查看 默认的都是 wsl2 &#xff08;如果是wsl1 就自行升级 wsl --update&#xff09; 官方教程 安装Ubuntu20.04 安装wsl2之后…

vcruntime140.dll已加载,但找不到入口点的处理方法分享

当遇到错误提示“vcruntime140.dll已加载&#xff0c;但找不到入口点”时&#xff0c;很多人可能会感到困惑&#xff0c;不知道如何去处理这个问题。不过没有必要紧张&#xff0c;在这里我会为大家详细解释 vcruntime140.dll 文件是什么&#xff0c;并指导大家如何高效地解决 v…

kafka除了作为消息队列还能做什么?

Kafka 最初是为大规模处理日志而构建的。它可以保留消息直到过期&#xff0c;并让各个消费者按照自己的节奏提取消息。 与其之前的竞品不同&#xff0c;Kafka 不仅仅是一个消息队列&#xff0c;它还是一个适用于各种情况的开源事件流平台。 让我们回顾一下流行的 Kafka 用例。 …

Win10子系统Ubuntu实战(一)

在 Windows 10 中安装 Ubuntu 子系统&#xff08;Windows Subsystem for Linux&#xff0c;简称 WSL&#xff09;有几个主要的用途和好处&#xff1a;Linux 环境的支持、跨平台开发、命令行工具、测试和验证、教育用途。总体而言&#xff0c;WSL 提供了一种将 Windows 和 Linux…

OpenAI 自带的检索功能好用吗?定量测评带你深度了解!

向量数据库的劲敌来了&#xff1f;又有一批赛道创业公司要倒下&#xff1f; …… 这是 OpenAI 上线 Assistant 检索功能后&#xff0c;技术圈传出的部分声音。原因在于&#xff0c;此功能可以为用户提供基于知识库问答的 RAG&#xff08;检索增强生成&#xff09; 能力。而此前…

Css样式制作图形倒影

该CSS样式是WebKit&#xff08;主要应用于Safari和其他基于WebKit的浏览器&#xff09;的特定前缀属性&#xff0c;用于实现元素内容的反射效果。具体解释如下&#xff1a; -webkit-box-reflect: 定义了一个盒反射效果&#xff0c;仅在支持WebKit的浏览器中生效。 below 15px&a…

springIoc依赖注入循环依赖三级缓存

springIoc的理解&#xff0c;原理和实现 控制反转&#xff1a; 理论思想&#xff0c;原来的对象是由使用者来进行控制&#xff0c;有了spring之后&#xff0c;可以把整个对象交给spring来帮我们进行管理 依赖注入DI&#xff1a; 依赖注入&#xff0c;把对应的属性的值注入到…

矩阵的秩-

一、定义、理解 非零子式的最高阶数。 如何理解&#xff1f;什么叫做非零子式的最高阶数&#xff1f;&#xff1f;&#xff1f; 举个例子&#xff1a;有一个5阶矩阵 首先什么叫子式&#xff1f; 例如2阶子式就是&#xff0c;任取某两行某两列组成的行列式&#xff0c;就叫…

【发票识别】支持pdf、ofd、图片格式的发票

背景 为了能够满足识别各种发票的功能&#xff0c;特地开发了当前发票识别的功能&#xff0c;当前的功能支持pdf、ofd、图片格式的发票识别&#xff0c;使用到的技术包括文本提取匹配、ocr识别和信息提取等相关的技术&#xff0c;用到机器学习和深度学习的相关技术。 体验 体…

论文精读:Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models

Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models Status: Reading Author: Chunrui Han, Haoran Wei, Jianjian Sun, Jinrong Yang, Jinyue Chen, Liang Zhao, Lingyu Kong, Xiangyu Zhang, Zheng Ge Institution: 中国科学院大学, 华中科技大学, 旷…

虚幻UE 材质-材质图层、材质图层混合

学习材质图层和材质图层混合的使用&#xff0c;便于节点扫盲。 文章目录 前言一、材质图层混合二、使用步骤总结 前言 材质混合我们之前用Bridge的插件进行混合过 而此次我们的材质混合使用UE自带的材质图层和材质图层混合来实现 一、材质图层混合 材质图层混合是一种允许将…

Vant4在Vue3.3中如何按需导入组件和样式

前言 最近我在Vue 3.3的项目中对Vant4做按需导入时&#xff0c;尽管按照Vant4的官方指南进行操作&#xff0c;但样式仍然无法正确加载。经过深入研究和多篇文章的比较&#xff0c;我终于找到了在Vue3中如何正确的按需导入Vant 4组件和样式的方法。由于Vue3.3和Vant4相对较新&am…

考古学家 - 华为OD统一考试

OD统一考试 分值: 200分 题解: Java / Python / C++ 题目描述 有一个考古学家发现一个石碑,但是很可惜发现时其已经断成多段。 原地发现N个断口整齐的石碑碎片,为了破解石碑内容,考古学家希望有程序能帮忙计算复原后的石碑文字组合数,你能帮忙吗? 备注: 如果存在石碑…

国产六核CPU商显板,三屏异显,米尔基于全志D9360开发板

芯驰D9-Pro 自主可控、安全可信的高性能商显方案 采用国产CPU&#xff1a;集成了6个ARM Cortex-A551.6GHz 高性能CPU和1个ARM Cortex-R5800MHz&#xff1b; 高性能的高安全HSM安全的处理器&#xff0c;支持TRNG、AES、RSA、SHA、SM2/3/4/9&#xff1b; 它包含100GFLOPS 3D G…

CRLF漏洞靶场记录

搭建 利用 docker 搭建 vulhub 靶场 git clone https://github.com/vulhub/vulhub.git 进入 /vulhub/nginx/insecure-configuration 目录 启动前关闭现有的 8080、8081、8082 端口服务&#xff0c;避免端口占用 docker-compose up -d 进入容器 docker exec -it insecure-…

Spring事务失效场景之类内部方法调用及解决方案

一、背景 在日常开发中&#xff0c;经常有需要使用事务来保证数据一致性的情况。简单点的话直接在方法上面加Transactional注解就可以了。 但这样存在一个问题&#xff0c;在整个业务方法层面加注解会把很多并不需要归入事务的操作也归入到了事务里面&#xff0c;这样会可能会…

uni-app修改头像和个人信息

效果图 代码&#xff08;总&#xff09; <script setup lang"ts"> import { reqMember, reqMemberProfile } from /services/member/member import type { MemberResult, Gender } from /services/member/type import { onLoad } from dcloudio/uni-app impor…