C#實現經過拼多多分享微信公衆號實現查詢優惠券、佣金比率

主要實現功能:關注公衆號的用戶發送拼多多商品連接,後臺程序經過連接查找商品優惠券或返傭狀況。
說明:使用了niltor 封裝的拼多多接口 github地址 ,可是須要注意可能會存在返回模型沒法正確解析,致使沒有正確返回數據的問題。使用的過程當中修改下返回模型屬性類型就行了。html

最終實現效果以下:
20181203201937.jpggit

代碼實現:github

public async System.Threading.Tasks.Task<string> GetPddCouponAsync(ExmlMsg xmlMsg) { //經過正則表達式解析拼多多商品連接,獲取拼多多商品Id string msg = xmlMsg.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 ""; } //調用以前須要先註冊PddOpenSdk服務 /* PddCommonApi.ClientId = "d8172a66ddf14220beac58e8eddca0d9"; PddCommonApi.ClientSecret = "d5993ce16cc0d1bd35403176f35544962e786645"; PddCommonApi.RedirectUri = "RedirectUri"; */ 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 = xmlMsg.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下單確認收貨後就能收到返利佣金啦~"; } 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 = xmlMsg.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 ""; } } }

詳細請查看 http://blog.yshizi.cn/44.html正則表達式

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

軟件構成:一個主進程exe和一個注入的dll
主進程exe:把dll注入到微信,發送指令給dll,接受dll的信息
注入的dll:被注入到微信內部,攔截微信的數據,調用微信的功能
接收主進程的指令,執行指令對應的操做、發信息給主進程api

exe和dll通信:
  exe
    接收消息
      建立一個可見的主界面
      設置接受消息的回調函數
    微信

    發送信息
      LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam)

  dll
    接收消息
      建立一個不可見的界面
      設置接受消息的回調函數
    async

    發送信息
      LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam)函數

源碼: https://github.com/KongKong20/WeChatPCHookurl

相關文章
相關標籤/搜索