公众号搭建淘宝、京东、拼多多查券平台

双十一之前终于把淘宝客公众号搭建好了,虽然耗时不少,但还是蛮有成就感的,能不能赚钱就另外一回事了。

我这里用到了淘宝联盟api权限、拼多多平台接口api、京东申请比较麻烦就没有申请,所以京东使用了第三方免费接口,各联盟账号api权限申请我就不赘述了,有疑问的话可以在下面留言,或加我微信公众号“网购有券”联系我。

淘宝找券实现

原理:

  1. 通过用户手淘分享的商品信息,信息中包含商品关键字和链接,使用商品关键字通过淘宝 通用物料搜索API 接口查询一批商品;
  2. 然后通过分享信息中的淘宝链接http抓包方式获取淘宝商品item id;
  3. 然后通过item id在查询的一批商品中找到指定的商品优惠券、佣金等信息。
public static string GetTaobaoCoupon(RequestMessageText responseMessageText)
        {
            string itemInfo = responseMessageText.Content.Trim();

            string responeMessage = "";
            try
            {
                Match m_title = Regex.Match(itemInfo, @"【.*】");
                string temp = m_title.Value;
                if (!string.IsNullOrEmpty(temp))
                {
                    temp = temp.Substring(1, temp.Length - 2);
                }
                else
                {
                    return "";
                }

                if (temp.Contains("#手聚App"))
                {
                    int IndexofA = temp.IndexOf("宝贝不错:");
                    int IndexofB = temp.IndexOf("(分享自");
                    temp = temp.Substring(IndexofA + 5, IndexofB - IndexofA - 5);
                }

                string title = temp;

                //通过商品关键字查询商品
                ITopClient client = new DefaultTopClient(taobaoApiUrl,taobaoAppkey, taobaoSecret);
                TbkDgMaterialOptionalRequest req = new TbkDgMaterialOptionalRequest();
                req.AdzoneId = addzoneId;
                req.Platform = 2L;

                req.PageSize = 100L;
                req.Q = title;

                req.PageNo = 1L;
                TbkDgMaterialOptionalResponse rsp = client.Execute(req);

                if (rsp.ResultList.Count > 0)
                {
                    //获取淘宝短链接
                    Match m_url = Regex.Match(itemInfo, @"htt(p|ps):\/\/([\w\-]+(\.[\w\-]+)*\/)*[\w\-]+(\.[\w\-]+)*\/?(\?([\w\-\.,@?^=%&:\/~\+#]*)+)?");

                    if (m_url.Value == "")
                    {
                        return responeMessage;
                    }
                    var s = HttpUtility.HttpGet(m_url.Value, "", "utf-8");

                    //Match am_url = Regex.Match(s, @"(?<=var url = ')(.*)(?=')");
                    //获取宝贝item id
                    Match m_item = Regex.Match(s, @"(?<=m.taobao.com\/i)([0-9]*)");
                    string item_id = m_item.Value;

                    if (string.IsNullOrEmpty(item_id))
                    {
                        Match am_url = Regex.Match(s, @"(?<=var url = ')(.*)(?=')");
                        var htmlContent = HttpUtility.HttpGet(am_url.Value, "", "gbk");
                        Match re_m_item = Regex.Match(htmlContent, @"(?<=taobao.com/item.htm\?id=)([0-9]*)");
                        item_id = re_m_item.Value;
                    }

                    if (string.IsNullOrEmpty(item_id))
                    {
                        //LogHelper.WriteLog(typeof(WechatController), "通过抓包方式未获取到宝贝item id");
                        var g = rsp.ResultList.Where(y => !string.IsNullOrEmpty(y.CouponId)).OrderByDescending(w => w.Volume).FirstOrDefault();
                        if (g == null)
                        {
                            responeMessage = ConfigurationManager.AppSettings["tbk_nocoupon_msg"].Replace("\\n", "\n").Replace("\\ue231", "\ue231");

                        }
                        else
                        {
                            var hongbao = (decimal.Parse(g.ZkFinalPrice) - decimal.Parse(Regex.Match(g.CouponInfo, "减" + @"(\d+)").Groups[1].Value)) * decimal.Parse(g.CommissionRate) / 10000 * commission_rate;

                            responeMessage = $"{g.Title}\n【在售价】{g.ZkFinalPrice}元\n【巻后价】{Math.Round(double.Parse(g.ZkFinalPrice) - double.Parse(Regex.Match(g.CouponInfo, "减" + @"(\d+)").Groups[1].Value), 2)} 元\n复制这条信息,打开「手机绹宝」领巻下单{GetTaobaoKePassword(g.CouponShareUrl, g.PictUrl + "_400x400.jpg")}\n";

                        }
                        return responeMessage;

                    }
                    else
                    {
                        float numid = 0;
                        try
                        {
                            numid = float.Parse(item_id);
                        }
                        catch (Exception ex)
                        {

                          //通过淘宝链接没有获取到item id,显示销量最高商品
                            var g = rsp.ResultList.Where(y => !string.IsNullOrEmpty(y.CouponId)).OrderByDescending(y => y.Volume).FirstOrDefault();

                            var hongbao = (decimal.Parse(g.ZkFinalPrice) - decimal.Parse(Regex.Match(g.CouponInfo, "减" + @"(\d+)").Groups[1].Value)) * decimal.Parse(g.CommissionRate) / 10000 * commission_rate;
                            responeMessage = $"{g.Title}\n【在售价】{g.ZkFinalPrice}元\n【巻后价】{Math.Round(double.Parse(g.ZkFinalPrice) - double.Parse(Regex.Match(g.CouponInfo, "减" + @"(\d+)").Groups[1].Value), 2)} 元\n复制这条信息,打开「手机绹宝」领巻下单{GetTaobaoKePassword(g.CouponShareUrl, g.PictUrl + "_400x400.jpg")}\n";

                            return responeMessage;

                        }

                        //在接口返回的商品中找查询的商品
                        foreach (var g in rsp.ResultList)
                        {
                            if (g.NumIid == numid)
                            {
                                if (string.IsNullOrEmpty(g.CouponInfo))
                                {
                                    var hongbao = decimal.Parse(g.ZkFinalPrice) * decimal.Parse(g.CommissionRate) / 10000 * commission_rate;

                                    responeMessage = $"{g.Title}\n【在售价】{g.ZkFinalPrice}元\n【约返利】{Math.Round(hongbao, 2)}元\n复制这条信息,打开「手机绹宝」领巻下单{GetTaobaoKePassword(g.Url, g.PictUrl + "_400x400.jpg")}\n==========================\n下单确认收货后就能收到返利佣金啦~\n 点击查看  <a href='http://mp.weixin.qq.com/s?__biz=Mzg2NTAxOTEyMA==&mid=100000146&idx=1&sn=62405c8df3db46e74940aefb9ac3737b&chksm=4e61340d7916bd1bf645afbc6d10c1f19561d7fa59847516c01e64c0791e6d544f4f56c4f498#rd'>如何领取返利</a>";
                                    return responeMessage;
                                }
                                else
                                {
                                    var hongbao = (decimal.Parse(g.ZkFinalPrice) - decimal.Parse(Regex.Match(g.CouponInfo, "减" + @"(\d+)").Groups[1].Value)) * decimal.Parse(g.CommissionRate) / 10000 * commission_rate;
                                    responeMessage = $"{g.Title}\n【在售价】{g.ZkFinalPrice}元\n【巻后价】{Math.Round(double.Parse(g.ZkFinalPrice) - double.Parse(Regex.Match(g.CouponInfo, "减" + @"(\d+)").Groups[1].Value), 2)} 元\n复制这条信息,打开「手机绹宝」领巻下单{GetTaobaoKePassword(g.CouponShareUrl, g.PictUrl + "_400x400.jpg")}\n";
                                    return responeMessage;
                                }
                            }
                        }

                        //没有找到,有相似宝贝推荐
                        var w = rsp.ResultList.Where(y => !string.IsNullOrEmpty(y.CouponId)).OrderByDescending(y => y.Volume).FirstOrDefault();

                        if (w == null)
                        {
                            responeMessage = ConfigurationManager.AppSettings["tbk_nocoupon_msg"].Replace("\\n", "\n").Replace("\\ue231", "\ue231");
                        }
                        else
                        {
                            var hongbao = (decimal.Parse(w.ZkFinalPrice) - decimal.Parse(Regex.Match(w.CouponInfo, "减" + @"(\d+)").Groups[1].Value)) * decimal.Parse(w.CommissionRate) / 10000 * commission_rate;

                            responeMessage = $"/:rose 亲,这款商品的优惠返利活动结束了~\n已为你推荐以下宝贝。\n==========================\n{w.Title}\n【在售价】{w.ZkFinalPrice}元\n【巻后价】{Math.Round(double.Parse(w.ZkFinalPrice) - double.Parse(Regex.Match(w.CouponInfo, "减" + @"(\d+)").Groups[1].Value), 2)} 元\n复制这条信息,打开「手机绹宝」领巻下单{GetTaobaoKePassword(w.CouponShareUrl, w.PictUrl + "_400x400.jpg")}\n";
                        }

                        return responeMessage;

                    }

                }
                else
                {
                    responeMessage = ConfigurationManager.AppSettings["tbk_nocoupon_msg"].Replace("\\n", "\n").Replace("\\ue231", "\ue231");

                }

            }
            catch (Exception ex)
            {
                //LogHelper.WriteLog(typeof(WechatController), "返回消息异常" + ex.Message);

            }

            return responeMessage;

        }

京东、拼多多找券

京东、拼多多找券都比较简单,微信支持京东、拼多多链接,可以通过链接获取到商品id,然后直接通过接口使用商品id找券。
京东代码:使用了第三方接口(好京客)

 public static string GetJDCoupon(RequestMessageText requestMessageText)
        {

            string msg = requestMessageText.Content;
            Match m_goods = Regex.Match(msg, @"(?<=product\/)([0-9]*)|(?<=sku=)([0-9]*)");

            string skuId = m_goods.Value;

            if (string.IsNullOrEmpty(skuId))
            {
               // LogHelper.WriteLog(typeof(WechatController), "获取京东skuid失败" + msg);
                return "";
            }

            try
            {
                var hjkGoodsDetail = hjkApi.GetJDGoodsDetail(skuId);

                if (hjkGoodsDetail.StatusCode == 200 && hjkGoodsDetail.Data != null && !string.IsNullOrEmpty(hjkGoodsDetail.Data.CouponList))
                {
                    var model = hjkApi.GetUnionUrl(skuId, hjkGoodsDetail.Data.CouponList);
                    if (model != null && model.StatusCode == 200 && !string.IsNullOrEmpty(model.Data))
                    {
                        return $"{hjkGoodsDetail.Data.SkuName}\n【在售价】{hjkGoodsDetail.Data.WlPrice}元\n【巻后价】{hjkGoodsDetail.Data.WlPriceAfter} 元\n\n\ue231 <a href='{model.Data}'>点击这里领券下单</a>\n\n";
                    }
                    else
                    {
                        return ConfigurationManager.AppSettings["jd_nocoupon_msg"].Replace("\\n", "\n").Replace("\\ue231", "\ue231");
                    }

                }
                else
                {
                    return ConfigurationManager.AppSettings["jd_nocoupon_msg"].Replace("\\n", "\n").Replace("\\ue231", "\ue231");
                }
            }
            catch (Exception ex)
            {
                //LogHelper.WriteLog(typeof(WechatController), "获取京东skuid失败" + ex.Message);
                return "";
            }
        }

拼多多代码如下:

 public static async Task<string> GetPDDCouponAsync(RequestMessageText responseMessageText)
        {
            PddCommonApi.ClientId = "d8172a66ddf14220beac58e8eddca0d9";
            PddCommonApi.ClientSecret = "d5993ce16cc0d1bd35403176f35544962e786645";
            PddCommonApi.RedirectUri = "RedirectUri";
            PddCommonApi.AccessToken = "";

            string msg = responseMessageText.Content;
            Match m_goods = Regex.Match(msg, @"(?<=goods_id=)([0-9]*)");

            string goods_id = m_goods.Value;

            if (string.IsNullOrEmpty(goods_id))
            {
                //LogHelper.WriteLog(typeof(WechatController), "获取拼多多goods id失败" + msg);
                return "";
            }

            DdkApi api = new DdkApi();

            var model = new DetailDdkGoodsRequestModel()
            {
                Type = "pdd.ddk.goods.detail",
                GoodsIdList = $"[{goods_id}]"
            };
            DetailDdkGoodsResponseModel result = null;
            try
            {
                result = await api.DetailDdkGoodsAsync(model);
            }
            catch (Exception ex)
            {
                //LogHelper.WriteLog(typeof(WechatController), "调用拼多多获取商品详细信息失败" + ex.Message);
                return "";
            }

            var goods = result.GoodsDetailResponse.GoodsDetails.FirstOrDefault();

            if (goods == null) //无优惠券 无佣金
            {
                return "/:rose 亲,这款商品的优惠返利活动结束了~\n请换个商品试试吧。\n========================\n\ue231    <a href='https://mobile.yangkeduo.com/duo_cms_mall.html?pid=2495191_31302208cpsSign=CM2495191_31302208_3a1c1a0431608b9c1eb417183d57c1bdduoduo_type=2'>拼多多优惠券商城</a>\n下单确认收货后就能收到返利佣金啦~";
            }
            else if (goods.HasCoupon) //有优惠券 有佣金
            {
                try
                {
                    var promotionUrlModel = await api.GenerateDdkGoodsPromotionUrlAsync(new GenerateDdkGoodsPromotionUrlRequestModel
                    {
                        Type = "pdd.ddk.goods.promotion.url.generate",
                        PId = pdd_pid,
                        GoodsIdList = $"[{goods_id}]",
                        GenerateShortUrl = true,
                        CustomParameters = responseMessageText.FromUserName
                    });

                    return $"/:rose 亲,商品信息如下~\n========================\n{goods.GoodsName}\n【在售价】{((decimal)goods.MinGroupPrice) / 100}元\n【券后价】{Math.Round(((decimal)(goods.MinGroupPrice - goods.CouponDiscount.Value)) / 100, 2)}元\n\ue231 <a href='{promotionUrlModel.GoodsPromotionUrlGenerateResponse.GoodsPromotionUrlList.FirstOrDefault().Url}'>点击这里下单</a>\n下单确认收货后就能收到返利佣金啦~";

                    //return $"/:rose 亲,商品信息如下~\n========================\n{goods.GoodsName}\n【在售价】{((decimal)goods.MinGroupPrice) / 100}元\n【券后价】{Math.Round(((decimal)(goods.MinGroupPrice - goods.CouponDiscount.Value)) / 100,2)}元\n【约返利】{Math.Round((decimal)((goods.MinNormalPrice - goods.CouponDiscount.Value) * goods.PromotionRate) / 100000,2)}元\n\ue231 <a href='{promotionUrlModel.GoodsPromotionUrlGenerateResponse.GoodsPromotionUrlList.FirstOrDefault().Url}'>点击这里下单</a>\n下单确认收货后就能收到返利佣金啦~";

                }
                catch (Exception ex)
                {
                    //LogHelper.WriteLog(typeof(WechatController), "调用拼多多获取推广链接失败" + ex.Message);
                    return "";
                }
            }
            else //无优惠券 但有佣金
            {
                try
                {
                    var promotionUrlModel = await api.GenerateDdkGoodsPromotionUrlAsync(new GenerateDdkGoodsPromotionUrlRequestModel
                    {
                        Type = "pdd.ddk.goods.promotion.url.generate",
                        GoodsIdList = $"[{goods_id}]",
                        PId = pdd_pid,
                        GenerateShortUrl = true,
                        CustomParameters = responseMessageText.FromUserName
                    });

                    return $"/:rose 亲,商品信息如下~\n========================\n{goods.GoodsName}\n【在售价】{((decimal)goods.MinGroupPrice) / 100}元\n【约返利】{Math.Round((decimal)(goods.MinGroupPrice * goods.PromotionRate) / 100000, 2)}元\n\ue231 <a href='{promotionUrlModel.GoodsPromotionUrlGenerateResponse.GoodsPromotionUrlList.FirstOrDefault().Url}'>点击这里下单</a>\n下单确认收货后就能收到返利佣金啦~\n\n 点击查看  <a href='http://mp.weixin.qq.com/s?__biz=Mzg2NTAxOTEyMA==&mid=100000146&idx=1&sn=62405c8df3db46e74940aefb9ac3737b&chksm=4e61340d7916bd1bf645afbc6d10c1f19561d7fa59847516c01e64c0791e6d544f4f56c4f498#rd'>如何领取返利</a>";
                }
                catch (Exception ex)
                {
                    //LogHelper.WriteLog(typeof(WechatController), "调用拼多多获取推广链接失败" + ex.Message);
                    return "";
                }

            }

        }

完整代码 https://github.com/xuhang2015/TBK
请关注“网购有券”,支持下我吧。有任何问题也可以在公众号中联系我。

原文地址:https://www.cnblogs.com/gracexu/p/9956084.html

时间: 2024-11-08 12:42:21

公众号搭建淘宝、京东、拼多多查券平台的相关文章

[淘宝客技术篇010]无需任何开发,简单5步轻松搞定公众号对接淘宝联盟(免费)

以下步骤基于火星来客的网站www.mapprouter.com实现,已经可以完美对接.支持回复任意关键字,包括不限于淘口令.商品链接.优惠券链接等等.具体步骤如下: 登录微信公众号,在微信公众号后台,左侧底部“开发”菜单栏,打开“基本配置”页面: 看到“服务器配置(未启用)”,若未启用,则点击启用:若已启用则修改配置: 配置里面,对应配置输入如下:URL:https://wx.mapprouter.com/weixin/taobaoToken:huoxinglaike2019EncodingAE

开源第三方登录组件OAuthLogin2.0 支持QQ,阿里巴巴,淘宝,京东,蘑菇街,有赞等平台

Nuget地址:https://www.nuget.org/packages/OAuthLogin2.0/ 项目结构说明: AuthorizationProviders文件夹下主要存放内置的授权平台. CustomException文件夹主要存放各个平台对应的错误处理机制. 说下涉及到的几个名词: 平台: 定义一个数据结构,用于规范外部交易平台名称.名称是业务系统为Etp分配的唯一标识,由不限长度的字符组成.由于极易发生拼写错误,强烈建议在程序中采用如下规范写法: (1)需要使用某一平台的名称字

Testin云测:从双11看淘宝京东暗战移动电商

Testin云测:从双11看淘宝京东暗战移动电商 2014/11/11 · Testin · 独家评测 一年一度的双11今天凌晨开战,这也是阿里巴巴集团上市后的首个双11,去年单日成交额350亿元的成绩,其中突破1亿元用了55秒,今年3分钟即突破10亿,1小时已突破122亿元."双11"释放惊人的购买力. 值得注意的是,今年双11期间,用户在移动端访问双十一会场的流量几乎达到PC端的两倍,而在往年这一数字只占20%左右,移动时代的双十一终于来了. 多项迹象显示,移动电商已逐渐成为电子商

Java爬虫爬取 天猫 淘宝 京东 搜索页和 商品详情

Java爬虫爬取 天猫 淘宝 京东 搜索页和 商品详情 先识别商品url,区分平台提取商品编号,再根据平台带着商品编号爬取数据. 1.导包 <!-- 爬虫相关Jar包依赖 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.10-FINAL</version> </

通过云服务器实现淘宝京东抢拍器

马上就要双十一了,想在淘宝上帮女朋友抢一些礼物,网上下载了几个抢拍器,普遍都有问题,最终还是决定自己制作一个抢拍器.由于秒杀也受到网络和系统环境的影响,这里打算使用高速稳定点的云主机来协助实现.在云主机的选择上,必须是能直接连接主干网络的云主机,否则网络延迟和在家里上网区别不大.(开始以为阿里云秒杀会更快,但实际测试结果并不是这样.挑了几次后还是使用了常用的易迈云.大家可以根据自己的喜好来挑选.)本文在后面会附带具体操作方法.一, 秒杀的设计要求:a. 高稳定性,高网速b. 高频度模拟用户操作c

淘宝京东双十一撸一撸

淘宝和京东双十一全自动撸一撸脚本 作者:乐乐 一.淘宝自动养猫猫脚本 (一).所需工具 Auto.js安装包(下载链接:https://www.lanzous.com/i70nqwd).淘宝APP (二).使用步骤 1.安装软件,给予权限 安装Auto.js APP,并打开一次软件,提示需要获取无障碍权限,跟着给予它权限 2.导入脚本 (1)点击Auto.js软件右下角的+号,选择文件 (2)给文件随便取一个名字,比如我叫taobao (3)把下面的代码粘贴进去,右上角点击保存 alert('准

淘宝京东 单品界面翻页效果

今天写一个类似京东 / 淘宝商品详情的界面 原理: 第一级是一个scrollView, 第二级,同级放两个UITableView或UIScrollView(根据需求,whatever啦..),这里,第一页我用了一个UITableView,第二页放了一个UIScrollView,在滑动第一页tableView到底部或点击下一页button的时候,有一个bounce上拉,切换到下一页的效果,切回去同理.      这里会有手势冲突,滑动第二级视图的时候,父视图就无法滑动了,其实解决的办法很简单啦,U

android 仿淘宝京东购物车 ListView嵌套CheckBox

MyActivity===========================代码如下 package com.example.ListViewBoxDemo; import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.View;import android.widget.CheckBox;import android.widget.CompoundB

个人微信公众号搭建Python实现 -开发配置和微信服务器转入-认识微信公众号(14.1.1)

目录 1.微信账号类型 2.微信公众号开发需求 3.微信公众号开发原理 @(认识微信公众号) 1.微信账号类型 个人号 公众号 订阅号 服务号 企业号 这里要讲的就是订阅号 前往注册微信公众号 2.微信公众号开发需求 内嵌功能 被动回复 主动告知 内嵌网页 高级需求需编程实现如 3.微信公众号开发原理 编程人员要做的就是完成开发者服务器或者说是网页服务器 前往微信公众号开发者文档 原文地址:https://www.cnblogs.com/simon-idea/p/11349388.html