浅谈微信卡券功能开发(1)

闲扯javascript

    因为公司的业务,有幸接触到了微信平台的开发,不得不感慨下,微信的业务规划实在是宏大的很呢。看来微信是想涉及生活的各个方面啊,再加上最近微信封杀各路豪杰(网易音乐、支付宝钱包)等,不难看出微信在产品规划上的野心。html

    貌似闲话说的太多了,接下来我就我本身对于微信卡券功能的开发经验进行简单的介绍,在微信开发的交流群中也看到不少新手开发者遇到的问题,但愿本文可以帮助刚接触微信卡券的同窗尽快的入门卡券功能开发,因为鄙人是NODEJS码农,因此本文主要以NODEJS为开发语言,其余语言的开发者能够飘过~或者借鉴~~java

    又一段闲话...(年纪大了,话唠了),先简单的介绍下微信卡券功能,卡券,说白了就是各类各样的优惠券,会员卡,以及各类票据等等等等,涉及的方面很广,就目前接触到的开发者来看,大多数都是对于各种优惠券的开发,其余的种类比较少了。node

    首先使用卡券功能,须要如今微信公众号平台中开启卡券功能。具体的开启步骤就不详述了,文档里面介绍的很详细(对了,附下官方文档下载地址),下面开始聊一聊开发步骤。git

 

准备github

    微信提供了对于卡券的操做和管理接口,实质上就是向各个接口发送请求,最简单的,你均可以在html种创建个表单,而后填写接口须要的数据,而后POST或者GET到微信的接口地址就能够了。可是,一般咱们不会这样作,由于咱们的业务中可能有不少需求是微信接口没法知足的,有些信息是须要咱们本身管理的。npm

    在开发中,咱们借助到了一个NodeJS的module,固然,你们也能够直接使用nodejs的request发送请求,可是毕竟有好多须要注意的东西,module会帮咱们考虑到,我在下文也会将须要注意的地方进行说明,以便其余语言开发可以注意到。api

 

Access Token微信

    首先咱们先经过npm安装一个module。不想使用module的同窗自行略过本步骤。微信开发

    Module为 wechat-card, 能够到github上查看其相关文档,遗憾的是,这个module目前仅支持大多数的优惠券和红包,对于会员卡还有其余的门票类卡券并不支持。相信以后的版本应该会完善的,好在这些类型已经能够知足基本使用了。

    npm install wechat-card --save

    ok, 完整完成后要进行一个全局的设置。

    var wxCard = require("wechat-card");

    wxCard.setConfig({
        appId: "wxXXXXXXX",
        appSecret: "bulabulabulabula"
    });

    这里有东西要进行说明:首先这里有两个量说明下,appId和appSecret,这两个量能够在微信MP平台的开发者中心中获得,他们两个虽然只是路人,可是,他们两个会创造出一个结晶,叫作access_token,这个但是一个很是重要的并且脾气古怪的小朋友了。说他重要,由于他贯穿整个接口,不只仅是卡券会用到,因此微信平台的接口均可能会使用到他;说他脾气古怪,是由于他有个特别的属性,7200秒(2小时)会过时,并且天天只能请求2000次。那么,这就要求咱们要去管理access_token的生成,定时去刷新他。若是使用上述的NODEJS MODULE的话,只须要在setConfig中配置appId和appSecret,Module就会自动为咱们管理Token了。

    题外话,若是咱们的产品中不只仅用到了微信卡券功能,还使用到了其余的微信功能,而这些功能中也用到了access token,那么这时候就不能够将token交由某个功能区管理了,由于当一边刷新access  token之后,另外一边的就会失效,针对这种状况,咱们应该有一个服务来为各个功能提供access token,那么这里不能够配置appId和appSecret了,Module提供了另一个配置:

    wxCard.setConfig({
        accessTokenService: "http://xxxx.xxxx.xxx/xxx"
    });

    这里经过配置一个公开的服务来获取access token,须要注意的是,这里的2小时过时,以及请求次数都须要这个服务自行去管理了。

 

建立门店

    咱们在建立卡券以前,须要先建立门店。这里咱们先解释下,门店,其实就是实际商户下的店面,举个栗子,肯德基就是一个商户,那么肯德基北京西站店就是一个门店,咱们的卡券会有一个”适用门店“的选项须要对应各个门店。因此咱们须要先建立各个门店以备适用。

    查看官方文档咱们能够了解到一个建立门店的接口:

    https://api.weixin.qq.com/card/location/batchadd?access_token=TOKEN

    前面咱们介绍了获取access token的方法,这里咱们能够看到token的用途,在请求每个接口时都须要附带token。咱们能够直接向接口发送请求来完成操做。这里咱们使用Module来进行建立门店:

    // Demo数据,具体的字段含义,能够参加Wechat-Card的GITHUB或者官方文档
    var shops = [{
        "business_name":"麦当劳", 
        "branch_name":"赤岗店",
        "province":"广东省",
        "city":"广州市",
        "district":"海珠区", 
        "address":"中国广东省广州市海珠区艺苑路 11 号", 
        "telephone":"020-89772059", 
        "category":"房产小区",
        "longitude":"115.32375",
        "latitude":"25.097486" 
    }, {
        "business_name":"麦当劳", 
        "branch_name":"珠江店",
        "province":"广东省",
        "city":"广州市",
        "district":"海珠区", 
        "address":"中国广东省广州市海珠区艺苑路 12 号", 
        "telephone":"020-89772059", 
        "category":"房产小区",
        "longitude":"113.32375",
        "latitude":"23.097486"
    }];

    wxCard.shop.batchAddShops(shops, function(err, ids) {
        // 这里添加成功了,ids为添加的门店的ID
    });

    这里须要说明的是:添加成功后,回到函数返回值ids为以前添加数据对应的id,若是其中有数据添加失败了,那么对应的ID为-1.

 

查询门店列表

    和建立门店相同,咱们能够获取到已经添加的门店列表。接口为:

    https://api.weixin.qq.com/card/location/batchget?access_token=TOKEN

    Module中的查询方法为:

    // 微信提供的查询方法为一种分页式的查询方法
    // offset为起始记录的位置,count为返回数据的数量
    var offset = 0, count = 10;
    wxCard.shop.batchGetShops(offset, count, function(err, shops) {
        // 查询成功,shops为返回的信息
    });

    这里须要说明的是:微信限制了最大返回的数量为50,即count最大值为50,接口返回的字段能够参考Module文档或者官方文档。

 

小结

    时间不早了,明天还得上班~~这一篇先写到这,其余的接口你们能够参照本文中介绍的方法进行尝试,方法都是大同小异的,也能够参考Module文档,做为一个入门的经验,但愿能够帮助到你们。若是其中有什么错误或者很差的地方, 但愿你们可以指明,万分感谢,明晚我们继续~~

 

转载请注明出处,原网页http://www.cnblogs.com/kenticny/p/4285190.html

相关文章
相关标签/搜索