价值200元的小程序卡劵开发免费送

小程序 同时被 3 个专栏收录
1 篇文章 0 订阅
1 篇文章 0 订阅
1 篇文章 0 订阅

价值200元的小程序卡劵开发免费送

为啥我把标题取这个名称呢,在业务上突然需要卡券这块功能的时候,当时除了官网的文档外,几乎没有任何资料、度娘了好久、在csdn上才找到个相关的视频、而且呢?要花200大洋才能看,身为不太上进的老程序猿、没有那个学习的动力去花这个钱(而且不知道花了这200块,也不一定能有所我想要的),后面花了几天的时候才慢慢摸索出来。

那我们就直接开门见山,为大家写了个c#版的小程序卡券

卡券对于营销来说,是个必备不可少的手段,今天我们来看下具有营销力的小程序中的卡券怎么做,主要掌握流程、理解代码才能为已所用,现我为大家介绍我的理解,希望能帮助到大家。

准备工作:
公众号appID appSecret,这里需要开通这个功用的帐号才行

第一步:先获取token(这相当个令牌,后面很多接口都需要用到)
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&
后面要加拼appid, appSecret这两个的值,get请求


第二步:获取卡卷列表(我们先要在小程序里展示优惠卷列表,这样才方便访客领取)
https://api.weixin.qq.com/card/batchget?access_token=
这里的参数就是要加 第一步中取到的Token值
上面是接口的链接,但是我们还需要post一些数据过去如下:

string postStr = "{\"offset\": 0,\"count\": 20, \"status_list\": [\"CARD_STATUS_VERIFY_OK\", \"CARD_STATUS_DISPATCH\"]}";

这里的参数的意思,大家可以参考下官网的解释,比如count是获取最多20个卡券信息、后面就是获取卡券的一些其它条件了。

如果我们第二步请求成功,就会返回一个xml的数据,这里我们可以用个xml转json的方法,然后再去获取我们想要的一些字段数据
例:

string card_list_json = CardTools.get_cardList(get_token()); //获取卡券列表
       JsonData cardList = JsonMapper.ToObject(card_list_json);

       if (cardList["errcode"].ToString() == "0")
       {
           //Log.Info("卡券ID:" + cardList["card_id_list"].ToString() + ",总数:" + cardList["total_num"].ToString());
           try
           {
               return card_list_json;
           }
           catch (KeyNotFoundException ex)
           {
               Log.Info(ex.Message);
               throw;
           }
         
       }

那么卡券的列表我们取到了,这个应该要展示在小程序上去(建议大家这里是保存在自己的服务器,后可以自己弄个接口提供给小程序 不然我们小程序一请求都得到微信那边去请求,速度可能不是太理想或者有一定的请求次数限制)


第三步:用户领取(小程序既然已经有优惠卷列表了,这个时候应该由我们用户去领取了)
小程序领取的方法:wx.addCard接口、把卡卷添加到用户卡卷包里
其中cardList作为参数包含(见官网)

1、cardId:卡卷ID

2、cardExt:卡卷必填参数

code:投放码,最简单的就是用系统默认的,填空(其它需求不同)
openid:指定领取用户的Openid,不填则不指定
timestamp:时间戳
nonce_str:随机字符串
signature:签名★(和支付有点类似)

以上几个参数code我们就用系统默认的,openid一般情况我们不会指定用户就填空 timestamp我们直接用后台生成一个就好了,nonce_str也是后台自定义一个,唯有难一点的就是签名signature了

我们分别把以上数据 nonce_str 、timestamp 、cardId 、以及官网上写的签名要用到的api_ticket
(api_ticket没有,我们就需要获取api_ticket),获取接口如下:
https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=wx_card&access_token=
接口参数:token(第一步就取到了)
通过这个接口我们就能获取api_ticket
然后我们就得按官网上所说的https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 最后面签名说明有写,把这几个参数按字典排序(就是asc码排序吧),然后拼成的一个总字符串再用sha1加密,得到的最终字符串就是我们要的signature了
参考代码:

string noncestr = CardTools.get_noncestr(); //随机字符串
        string timestamp = CardTools.GenerateTimeStamp();//时间戳
        string token = get_token();
        JsonData tick_json = JsonMapper.ToObject(CardTools.get_ticket(model.MobilePage,token));
        string api_ticket = tick_json["ticket"].ToString();//tick签名
        string card_id = CardId;
       

        Dictionary<string, string> dic1 = new Dictionary<string,string>();
        dic1.Add("nonceStr", noncestr);
        dic1.Add("api_ticket", api_ticket);
        dic1.Add("timestamp", timestamp);
        dic1.Add("card_id", card_id);

        List<KeyValuePair<string, string>> lst = new List<KeyValuePair<string, string>>(dic1);
        lst.Sort(delegate(KeyValuePair<string, string> s1, KeyValuePair<string, string> s2)
        {
            return s1.Value.CompareTo(s2.Value);
        });
        dic1.Clear();
        StringBuilder sign = new StringBuilder();
        foreach (KeyValuePair<string, string> kvp in lst)
        {
            sign.Append(kvp.Value);
        }
      
        Log.Info("签名排序后的串为:"+sign.ToString());

获取最终的字符串之后,我们再通过sha1加密,就得到我们想要的signature签名了。

到了这里,我们wx.addCard的要传的参数就算是完成了,这样用户就能成功领取到卡券了。


那么后面还有卡券的使用、内容非常多、这个就要慢慢去探索了

看到这里,希望以上内容对你有所帮助,我初来炸到、注册了csdn还是第一次用,希望大家多多支持鼓励、微信扫一扫,5块、10块随便意思一下,更重要的是能使我更有激情和动力、身为码农的大家都不易、且看且珍惜,哈哈。

最后总结一下:新东西摸索是需要花很多时间,但是一但明白了,内容就非常简单,如果有人指引那是不是将事半功倍。

前面提到的内容,作为常用的我们应该把他存在服务器缓存起来,这样不需要每次去请求,提升速度效率,而且微信端一般都是有个缓存时间7200s,比如token很多地方都需要用,这个我们就可以缓存起来,到期再请求的这种,可以减少我们很多不必要的请求。

这里写图片描述

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值