主要实现功能:关注公众号的用户发送拼多多商品链接,后台程序通过链接查找商品优惠券或返佣情况。

说明:使用了niltor 封装的拼多多接口 github地址 ,但是需要注意可能会存在返回模型无法正确解析,导致没有正确返回数据的问题。使用的过程中修改下返回模型属性类型就好了。

最终实现效果如下:

代码实现:

  1. public async System.Threading.Tasks.Task<string> GetPddCouponAsync(ExmlMsg xmlMsg)
  2. {
  3. //通过正则表达式解析拼多多商品链接,获取拼多多商品Id
  4. string msg = xmlMsg.Content;
  5. Match m_goods = Regex.Match(msg, @"(?<=goods_id=)([0-9]*)");
  6. string goods_id = m_goods.Value;
  7. if (string.IsNullOrEmpty(goods_id))
  8. {
  9. LogHelper.WriteLog(typeof(WechatController), "获取拼多多goods id失败" + msg);
  10. return "";
  11. }
  12. //调用之前需要先注册PddOpenSdk服务
  13. /*
  14. PddCommonApi.ClientId = "d8172a66ddf14220beac58e8eddca0d9";
  15. PddCommonApi.ClientSecret = "d5993ce16cc0d1bd35403176f35544962e786645";
  16. PddCommonApi.RedirectUri = "RedirectUri";
  17. */
  18. DdkApi api = new DdkApi();
  19. var model = new DetailDdkGoodsRequestModel()
  20. {
  21. Type = "pdd.ddk.goods.detail",
  22. GoodsIdList = $"[{goods_id}]"
  23. };
  24. DetailDdkGoodsResponseModel result = null;
  25. try
  26. {
  27. result = await api.DetailDdkGoodsAsync(model);
  28. }
  29. catch(Exception ex)
  30. {
  31. LogHelper.WriteLog(typeof(WechatController), "调用拼多多获取商品详细信息失败" + ex.Message);
  32. return "";
  33. }
  34. var goods = result.GoodsDetailResponse.GoodsDetails.FirstOrDefault();
  35. if (goods==null) //无优惠券 无佣金
  36. {
  37. 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下单确认收货后就能收到返利佣金啦~";
  38. }
  39. else if(goods.HasCoupon) //有优惠券 有佣金
  40. {
  41. try
  42. {
  43. var promotionUrlModel = await api.GenerateDdkGoodsPromotionUrlAsync(new GenerateDdkGoodsPromotionUrlRequestModel
  44. {
  45. Type = "pdd.ddk.goods.promotion.url.generate",
  46. PId = pdd_pid,
  47. GoodsIdList = $"[{goods_id}]",
  48. GenerateShortUrl = true,
  49. CustomParameters = xmlMsg.FromUserName
  50. });
  51. 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下单确认收货后就能收到返利佣金啦~";
  52. }
  53. catch (Exception ex)
  54. {
  55. LogHelper.WriteLog(typeof(WechatController), "调用拼多多获取推广链接失败" + ex.Message);
  56. return "";
  57. }
  58. }
  59. else //无优惠券 但有佣金
  60. {
  61. try
  62. {
  63. var promotionUrlModel = await api.GenerateDdkGoodsPromotionUrlAsync(new GenerateDdkGoodsPromotionUrlRequestModel
  64. {
  65. Type = "pdd.ddk.goods.promotion.url.generate",
  66. GoodsIdList = $"[{goods_id}]",
  67. PId = pdd_pid,
  68. GenerateShortUrl = true,
  69. CustomParameters = xmlMsg.FromUserName
  70. });
  71. 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>";
  72. }catch(Exception ex)
  73. {
  74. LogHelper.WriteLog(typeof(WechatController), "调用拼多多获取推广链接失败" + ex.Message);
  75. return "";
  76. }
  77. }
  78. }

详细请查看 http://blog.yshizi.cn/44.html

请关注“网购有券”,支持下我吧。有任何问题也可以在公众号中联系我。

C#实现通过拼多多分享微信公众号实现查询优惠券、佣金比率的更多相关文章

  1. 13、ABPZero系列教程之拼多多卖家工具 微信公众号开发前的准备

    因为是开发阶段,我需要在本地调试,而微信开发需要配置域名,这样natapp.cn就有了用武之地,应该说natapp就是为此而生的. natapp.cn是什么 这是一个内网映射的网站,支持微信公众号.小 ...

  2. 玩玩微信公众号Java版之七:自定义微信分享

    前面已经学会了微信网页授权,现在微信网页的功能也可以开展起来啦! 首先,我们先来学习一下分享,如何在自己的页面获取分享接口及让小伙伴来分享呢? 今天的主人公: 微信 JS-SDK, 对应官方链接为:微 ...

  3. 在安卓上,微信公众号无法分享到QQ的解决办法之一

    今天做一个微信公众号分享功能,参考微信sdk,代码几乎没有任何问题,但就是分享到QQ失败,以下是我QQ分享部分的代码: wx.onMenuShareQQ({ title: '快来和我一起玩转大脑', ...

  4. 微信公众号php从0开发,包括功能(自定义菜单,分享)

    之前写的一篇微信公众号文章. 工作需要,进行此次调研,并记录开发过程. 开发目的,页面授权,页面获取用户头像,用户昵称 微信id, 分享页面. 微信订阅号 无法获取用户个人信息 写在记录前,公众号也是 ...

  5. ios微信公众号分享回调事件

    IOS手机在分享成功后,回调事件无法正常执行,在回调方法里面加入: setTimeout(function () { //todo }, ); 例如: //分享 Share({ title: &quo ...

  6. 微信公众号开发--微信JS-SDK分享到朋友圈和分享给朋友

    之前写过一篇使用微信JS-SDK来实现扫一扫功能的博客 微信公众号开发–微信JS-SDK扫一扫功能 在该博客里介绍了微信JS-SDK的基本用法,其中包括以下几个步骤 还详细介绍了通过config接口注 ...

  7. uni-app开发经验分享十七: 开发微信公众号(H5)JSSDK 的使用方式

    因为这个jssdk被uni-app坑了好多天,作者说支持1.4版本,但是我用1.4的两个分享的新方法一直不支持. 最后只能放弃了,期待什么时候能更新上. 基本的使用方法:第一步 - 下载使用方式下载地 ...

  8. PHP实现微信公众号分享接口

    还是一贯风格:用代码说话!!! <?php class ShareModel extends BaseModel { var $appId = APPID; var $appSecret = A ...

  9. 第六篇 :微信公众平台开发实战Java版之如何自定义微信公众号菜单

    我们来了解一下 自定义菜单创建接口: http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_to ...

随机推荐

  1. Linux中U盘和SD卡加载卸载命令

    U盘挂载命令U盘插入的时候会显示启动信息,启动信息中sda: sda1指U盘的设备名为sda1dev设备目录下有一个sda1设备文件,此设备文件就是我们插入的U盘,我们将这个设备文件挂载到Linux系 ...

  2. JSP中多条件判断

    <c:if test="${result_map.connNew ne null and result_map.connNew ne 0}"> </c:if> ...

  3. JAVA: Socket和ServerSocket网络编程

    面是本次学习的笔记.主要分异常类型.交互原理.Socket.ServerSocket.多线程这几个方面阐述. 异常类型 在了解Socket的内容之前,先要了解一下涉及到的一些异常类型.以下四种类型都是 ...

  4. pandas 学习(五)—— datetime(日期)

    date range pd.date_range('2014-11-19', '2014-11-21', freq='D') # 起始时间,终止时间,时间间隔,也即步长,D ⇒ Day,5H:以 5 ...

  5. 【45.65%】【codeforces 560B】Gerald is into Art

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  6. 跟我学AngularJs:Service、Factory、Provider依赖注入使用与差别

    林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka        本教程使用AngularJs版本号:1.5.3        AngularJ ...

  7. Android MagicIndicator系列之一 —— 使用MagicIndicator打造千变万化的ViewPager指示器

    说到 ViewPager 指示器,想必大家都不陌生,绝大部分应用中都有这个.使用频率非常之高.但系统对它的支持并不好,自带的 PagerTabStrip 和 PagerTitleStrip 太弱,很难 ...

  8. vue相关网站资源收集

    因为接了一个使用VUE + ES6 + Webpack的项目,所以在工作之余,也加紧了对这些知识的学习,这里放上遇到的觉得不错的网站链接: 1 vue官网 https://cn.vuejs.org 2 ...

  9. source insight totalcmd 中文目录

    @echo off for /F "usebackq delims=" %%a in (`echo %1^^^|iconv -f utf-8 -t gb18030`) do ( s ...

  10. 关于如何在Sublime下安装插件

    安装插件的两种方式 通过Package Control安装 不能安装 手工安装 安装插件的两种方式 在sublime下安装插件有两种方式,一种是通过package control来进行安装,另一种呢就 ...