淺談微信卡券功能開發(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

相關文章
相關標籤/搜索